Hosts.allow - Linux Komutu - Unix Komutu

ADI

hosts_access - ana bilgisayar erişim kontrol dosyalarının biçimi

AÇIKLAMA

Bu elkitabında, istemci (ana bilgisayar adı / adres, kullanıcı adı) ve sunucu (işlem adı, ana makine adı / adres) kalıplarına dayanan basit bir erişim denetimi dili açıklanmaktadır . Örnekler sonunda verilmiştir. Sabırsız okuyucunun hızlı bir giriş için ÖRNEKLER bölümüne geçmesi tavsiye edilir. Erişim kontrol dilinin genişletilmiş bir versiyonu hosts_options (5) belgesinde açıklanmıştır. Uzantılar, program oluşturma süresinde -DPROCESS_OPTIONS ile oluşturularak açılır.

Aşağıdaki metinde, daemon bir ağ daemon sürecinin işlem adıdır ve istemci bir host talep eden servisin adı ve / veya adresidir. Ağ daemon işlem isimleri inetd konfigürasyon dosyasında belirtilmiştir.

ERİŞİM KONTROL DOSYALARI

Erişim kontrol yazılımı iki dosyaya danışır. Arama ilk maçta durur.

Bir (daemon, client) çifti /etc/hosts.allow dosyasındaki bir girişle eşleştiğinde erişim verilecektir.

Aksi takdirde, bir (daemon, client) çifti /etc/hosts.deny dosyasındaki bir girişle eşleştiğinde erişim reddedilir.

Aksi halde, erişim verilecektir.

Varolan bir erişim denetimi dosyası boş bir dosyaymış gibi ele alınır. Böylece, erişim kontrolü erişim kontrol dosyaları sağlayarak kapatılabilir.

ERİŞİM KONTROL KURALLARI

Her erişim kontrol dosyası sıfır veya daha fazla metin satırından oluşur. Bu çizgiler görünüm sırasına göre işlenir. Bir eşleşme bulunduğunda arama sonlandırılır.

Bir ters eğik çizgi karakteri ile önce bir satırsonu karakteri göz ardı edilir. Bu, uzun satırları ayırmanıza ve böylece daha kolay düzenleme yapmanıza olanak tanır.

Boş satırlar veya `# 'karakteri ile başlayan satırlar göz ardı edilir. Bu, tabloların okunması daha kolay olacak şekilde yorum ve boşluk eklemenize izin verir.

Diğer tüm satırlar aşağıdaki biçime uymalıdır: [] isteğe bağlı olan şeyler arasında:

daemon_list: client_list [: shell_command]

daemon_list bir veya daha fazla daemon işlem isimlerinin (argv [0] değerleri) veya joker karakterlerin (aşağıya bakın) bir listesidir.

client_list , istemci ana bilgisayar adı veya adresiyle eşleştirilecek bir veya daha fazla ana bilgisayar adının, ana makine adresinin, desenin veya joker karakterinin (aşağıya bakın) listesidir.

Daha karmaşık formlar daemon @ host ve user @ host sunucu bitiş noktası kalıplarındaki bölümlerde ve istemci kullanıcı adı aramalarında açıklanmıştır.

Liste öğeleri boşluk ve / veya virgülle ayrılmalıdır.

NIS (YP) netgroup aramaları haricinde, tüm erişim kontrol kontrolleri büyük / küçük harfe duyarsızdır.

DESENLER

Erişim denetimi dili aşağıdaki kalıpları uygular:

`Ile başlayan bir dize. karakter. Adının son bileşenleri belirtilen modelle eşleşirse, bir ana bilgisayar adı eşleşir. Örneğin, `.tue.nl 'kalıbı,' wzv.win.tue.nl 'ana bilgisayar adı ile eşleşir.

Bir ile biten bir dize. karakter. İlk sayısal alanları verilen dizeyle eşleşiyorsa, bir ana bilgisayar adresi eşleştirilir. Örneğin, '131.155' modeli. Eindhoven Üniversitesi ağındaki (131.155.xx) her ev sahibinin (neredeyse) adresini eşleştirir.

`@ 'Karakteri ile başlayan bir dize, bir NIS (eski YP) ağ grubu adı olarak kabul edilir. Belirtilen ağ grubunun bir ana bilgisayar üyesi ise bir ana bilgisayar adı eşleşir. Netgroup eşleşmeleri, daemon işlem isimleri veya istemci kullanıcı adları için desteklenmez.

`Nnnn / mmmm 'formunun bir ifadesi' net / mask 'çifti olarak yorumlanır. IPv4 ana bilgisayar adresi, "net", adresin ve "maskenin" bitine VEYA değerine eşitse eşleştirilir. Örneğin, "131.155.72.0/255.255.254.0" net / maske deseni, "131.155.72.0" ile 131.155.73.255 'arasındaki her adresle eşleşir.

[N: n: n: n: n: n: n: n] / m 'biçimindeki bir ifade, [net] / prefixlen' çifti olarak yorumlanır. "Ön" bitleri "net", adresin "önekli" bitlerine eşitse, bir IPv6 ana bilgisayar adresi eşleşir. Örneğin, [net] / prefixlen pattern `[3ffe: 505: 2: 1 ::] / 64 ',` 3ffe: 505: 2: 1 ::' ile `` 3ffe: 505: 2 aralığında her adresle eşleşir: 1: ffff: ffff: ffff: ffff'.

`/ 'Karakteri ile başlayan bir dize dosya adı olarak kabul edilir. Bir ana bilgisayar adı veya adresi, adlandırılmış dosyada listelenen herhangi bir ana bilgisayar adı veya adres örüntüsü ile eşleşiyorsa eşleştirilir. Dosya formatı, sıfır veya daha fazla ana bilgisayar adı veya boşluk ile ayrılmış adres kalıpları olan sıfır veya daha fazla satırdır. Bir dosya adı deseni, bir ana bilgisayar adı veya adres deseninin kullanılabileceği herhangi bir yerde kullanılabilir.

Wildcards `* ve`? ' hostname veya IP adreslerini eşleştirmek için kullanılabilir. Bu eşleştirme yöntemi, 'net / mask' eşleştirmesiyle, 'ile başlayan ana makine adı eşleşmesiyle birlikte kullanılamaz. veya "." ile biten IP adresi eşleşmesi.

Joker Karakterler

Erişim denetimi dili, açık joker karakterleri destekler:

HERŞEY

Evrensel joker, her zaman eşleşir.

YEREL

Adı bir nokta karakteri içermeyen herhangi bir ana bilgisayar ile eşleşir.

BİLİNMEYEN

Adı bilinmeyen herhangi bir kullanıcı ile eşleşir ve adı veya adresi bilinmeyen herhangi bir ana bilgisayarla eşleşir. Bu desen dikkatli kullanılmalıdır: geçici ad sunucusu sorunları nedeniyle ana bilgisayar adları kullanılamayabilir. Yazılım, hangi tür ağın konuştuğunu anlayamadığında bir ağ adresi kullanılamayacaktır.

BİLİNEN

İsmi bilinen herhangi bir kullanıcı ile eşleşir ve adı ve adresi bilinen herhangi bir ana bilgisayarla eşleşir. Bu desen dikkatli kullanılmalıdır: geçici ad sunucusu sorunları nedeniyle ana bilgisayar adları kullanılamayabilir. Yazılım, hangi tür ağın konuştuğunu anlayamadığında bir ağ adresi kullanılamayacaktır.

PARANOID

Adı adresiyle eşleşmeyen herhangi bir ana bilgisayarla eşleşir. Tcpd, -DPARANOID (varsayılan mod) ile oluşturulduğunda, erişim kontrol tablolarına bakmadan önce bu istemcilerden gelen istekleri azaltır. Bu tür istekler üzerinde daha fazla kontrol istediğinizde, -DPARANOID olmadan oluşturun.

OPERATÖRLERİ

DIŞINDA

Kullanım amacı şu şekildedir: `list_1 HARİCİ liste1 '; bu yapı, list_2 ile eşleşmediği sürece list_1 ile eşleşen her şeyle eşleşir. EXCEPT operatörü daemon_lists ve client_lists'te kullanılabilir. EXCEPT operatörü iç içe olabilir: eğer kontrol dili parantez kullanımına izin veriyorsa, 'EXCEPT b EXCEPT c' (EXCEPT (c EXCEPT c)) 'olarak ayrıştırılır.

SHELL KOMUTLARI

İlk eşleşmeli erişim denetimi kuralı bir kabuk komutunu içeriyorsa, bu komut% yer değiştirmelere tabidir (sonraki bölüme bakın). Sonuç, / dev / null'a bağlı standart giriş, çıkış ve hata ile bir / bin / sh alt işlemi tarafından yürütülür. Tamamlanana kadar beklemek istemiyorsanız, komutun sonunda `& 'belirtin.

Kabuk komutları , inetd'nin PATH ayarına güvenmemelidir. Bunun yerine, mutlak yol adlarını kullanmalı veya açık bir PATH = ile başlamalıdırlar.

Hosts_options (5) belgesi, kabuk komut alanını farklı ve uyumsuz bir şekilde kullanan alternatif bir dili açıklar.

% EXPANSIONS

Aşağıdaki açılımlar kabuk komutları içinde kullanılabilir:

% a (% A)

İstemci (sunucu) ana bilgisayar adresi.

% c

Müşteri bilgisi: ne kadar bilginin mevcut olduğuna bağlı olarak kullanıcı @ host, kullanıcı @ adresi, bir ana bilgisayar adı veya sadece bir adres.

% D

Daemon işlem adı (argv [0] değeri).

% h (% H)

Ana bilgisayar adı kullanılamıyorsa, istemci (sunucu) ana bilgisayar adı veya adresi.

% n (% N)

İstemci (sunucu) ana bilgisayar adı (veya "bilinmeyen" veya "paranoyak").

% p

Daemon süreci kimliği.

% s

Sunucu bilgileri: ne kadar bilginin mevcut olduğuna bağlı olarak daemon @ host, daemon @ address veya sadece bir daemon adı.

% u

İstemci kullanıcı adı (veya "bilinmeyen").

%%

Tek bir '%' karakterine genişler.

Kabuğu karıştırabilecek% açılımlardaki karakterler altçizgi ile değiştirilir.

SERVER ENDPOINT PATTERLERİ

İstemcileri, bağlandıkları ağ adresine göre ayırt etmek için, formun kalıplarını kullanın:

process_name @ host_pattern: müşteri_listesi ...

Bu gibi desenler, makine farklı internet ana bilgisayar adlarıyla farklı internet adreslerine sahip olduğunda kullanılabilir. Servis sağlayıcılar, farklı kuruluşlara ait olabilecek internet adlarıyla FTP, GOPHER veya WWW arşivleri sunmak için bu özelliği kullanabilirler. Ayrıca hosts_options (5) belgesindeki "twist" seçeneğine de bakınız . Bazı sistemler (Solaris, FreeBSD) tek bir fiziksel arayüzde birden fazla internet adresine sahip olabilir; Diğer sistemlerde, özel ağ adres alanında yaşayan SLIP veya PPP sözde arabirimlere başvurmanız gerekebilir.

Host_pattern, client_list bağlamında host isimleri ve adresleriyle aynı sözdizimi kurallarına uyar. Genellikle, sunucu bitiş noktası bilgileri yalnızca bağlantı yönelimli hizmetlerle kullanılabilir.

MÜŞTERİ KULLANICI ADI

İstemci ana bilgisayarı RFC 931 protokolünü veya onun alt öğelerinden birini (TAP, IDENT, RFC 1413) desteklediğinde, sarıcı programları bir bağlantının sahibi hakkında ek bilgi alabilir. Müşteri kullanıcı adı bilgileri, kullanılabilir olduğunda, istemci ana makine adıyla birlikte kaydedilir ve aşağıdaki gibi eşleşmeleri sağlamak için kullanılabilir:

daemon_list: ... user_pattern @ host_pattern ...

Daemon sarmalayıcıları, kural tabanlı kullanıcı adı aramalarını (varsayılan) gerçekleştirmek veya her zaman istemci ana bilgisayarını sorgulamak için derleme zamanında yapılandırılabilir. Kural tabanlı kullanıcı adı aramalarında, yukarıdaki kural, hem daemon_list hem de host_pattern eşleşmesi olduğunda kullanıcı adı aramasına neden olur.

Bir kullanıcı kalıbı bir daemon işlem deseni ile aynı sözdizimine sahiptir, dolayısıyla aynı joker karakterler uygulanır (net grup üyeliği desteklenmez). Yine de kullanıcı adı aramaları ile taşınmamalıdır.

En çok ihtiyaç duyulduğunda, yani istemci sistemi ele geçirildiğinde, istemci kullanıcı adı bilgilerine güvenilemez. Genel olarak, ALL ve (UN) KNOWN, anlamlı olan tek kullanıcı adı kalıplarıdır.

Kullanıcı aramaları yalnızca TCP tabanlı servislerde mümkündür ve yalnızca istemci sunucu uygun bir daemon çalıştırdığında; diğer tüm durumlarda sonuç "bilinmeyen" dir.

İyi bilinen bir UNIX çekirdek hatası, kullanıcı adı aramaları bir güvenlik duvarı tarafından engellendiğinde hizmet kaybına neden olabilir. Sarıcı README belgesi, çekirdeğinizin bu hata olup olmadığını öğrenmek için bir yordamı açıklar.

Kullanıcı adı aramaları, UNIX olmayan kullanıcılar için dikkate değer gecikmelere neden olabilir. Kullanıcı adı aramaları için varsayılan zaman aşımı 10 saniyedir: yavaş ağlarla baş etmek için çok kısa, ancak PC kullanıcılarını rahatsız edecek kadar uzun.

Seçici kullanıcı adı aramaları son sorunu hafifletebilir. Örneğin, aşağıdaki gibi bir kural:


daemon_list: @pcnetgroup ALL @ ALL

kullanıcı adı aramaları yapmadan pc net grubunun üyeleriyle eşleşir, ancak diğer tüm sistemlerle kullanıcı adı aramaları yapar.

ADRES SPOOFING SALDIRILARININ TESPİTİ

Birçok TCP / IP uygulamasının sıra numarası üretecindeki bir kusur, saldırganların güvenilir ana bilgisayarları kolayca taklit etmesine ve örneğin uzak kabuk hizmeti aracılığıyla kırılmasına olanak tanır. IDENT (RFC931 vb.) Servisi, bu tür ve diğer host adres sahteciliği saldırılarını tespit etmek için kullanılabilir.

Bir istemci isteğini kabul etmeden önce, sarmalayıcılar istemcinin isteği göndermediğini öğrenmek için IDENT hizmetini kullanabilir. İstemci ana bilgisayarı IDENT hizmeti sağladığında, negatif bir IDENT arama sonucu (istemci "UNKNOWN @ host" ile eşleşir), bir host spoofing saldırısının güçlü kanıtıdır.

Olumlu bir IDENT arama sonucu (istemci "KNOWN @ host" ile eşleşir) daha az güvenilirdir. Bir istemcinin yalnızca istemci bağlantısını ve IDENT aramasını aldatması mümkündür, ancak bunu yapmak yalnızca bir istemci bağlantısının sahteciliğinden çok daha zordur. Ayrıca, istemcinin IDENT sunucusunun yattığı da olabilir.

Not: IDENT aramaları UDP hizmetleriyle çalışmaz.

ÖRNEKLER

Dil, farklı türde erişim kontrol politikasının en az yaygara ile ifade edilebileceği kadar esnektir. Dil iki erişim kontrol tablosu kullanmasına rağmen, en yaygın politikalar, tablolardan birinin önemsiz veya hatta boş olması ile uygulanabilir.

Aşağıdaki örnekleri okurken izin tablosunun reddetme tablosundan önce tarandığını, aramanın bir eşleşme bulunduğunda sona ereceğini ve hiçbir eşleşme bulunmadığında erişimin verildiğini fark etmek önemlidir.

Örnekler, ana makine ve alan adlarını kullanır. Geçici ad sunucusu arama hatalarının etkisini azaltmak için adres ve / veya ağ / net maskesi bilgilerinin eklenmesiyle geliştirilebilir.

ÇOK KAPALI

Bu durumda, varsayılan olarak erişim reddedilir. Sadece açıkça yetkilendirilmiş ana bilgisayarlara erişim izni verilir.

Varsayılan politika (erişim yok) önemsiz bir inkar dosyası ile uygulanır:

/etc/hosts.deny: ALL: ALL

Bu, izin dosyalarındaki girişler tarafından erişime izin verilmedikçe, tüm hizmetlere tüm ana bilgisayarları reddeder.

Açıkça izin verilen ana bilgisayarlar izin dosyasında listelenir. Örneğin:

/etc/hosts.allow: ALL: LOCAL @some_netgroup
ALL: .foobar.edu EXCEPT terminalserver.foobar.edu

İlk kural, yerel etki alanındaki ana bilgisayarlardan (ana bilgisayar adında `. 'Yok) ve bazı net ağ grubu üyelerinden erişime izin verir. İkinci kural, terminalserver.foobar.edu dışında, foobar.edu alanındaki tüm ana bilgisayarlardan (önde gelen noktaya dikkat edin) erişime izin verir.

ÇOK AÇ

Burada, erişim varsayılan olarak verilir; sadece açıkça belirtilen ana bilgisayarlar reddedilir.

Varsayılan ilke (erişim izni) izin vermeyi gereksiz kılar, böylece ihmal edilebilir. Açıkça izin verilmeyen ana bilgisayarlar reddetme dosyasında listelenir. Örneğin:

/etc/hosts.deny: ALL: some.host.name, .some.domain
TÜM EXCEPT in.fingerd: other.host.name, .other.domain

İlk kural, bazı ana sunucuları reddediyor ve tüm hizmetleri etkiliyor; İkinci kural, diğer ana bilgisayarlardan ve etki alanlarından gelen parmak isteklerine hala izin vermektedir.

BOOBY TRAPS

Bir sonraki örnek, yerel etki alanındaki ana bilgisayarlardan gelen tftp isteklerine izin verir (önde gelen noktaya dikkat edin). Diğer ana bilgisayarların istekleri reddedildi. İstenen dosya yerine, rahatsız edici ana bilgisayara bir parmak sondası gönderilir. Sonuç süper kullanıcılara gönderilir.

/etc/hosts.allow:

in.tftpd: LOCAL, .my.domain /etc/hosts.deny: in.tftpd: ALL: spawn (/ bazı / nerede / safe_finger -l @% h | \ / usr / ucb / mail -s% d-% h kökü)

Safe_finger komutu tcpd sarıcıyla birlikte gelir ve uygun bir yere kurulmalıdır. Uzak parmak sunucu tarafından gönderilen verilerden olası hasarı sınırlar. Standart parmak komutundan daha iyi koruma sağlar.

Kabuk komutları bölümünde% h (istemci ana bilgisayar) ve% d (hizmet adı) dizilerinin genişletilmesi açıklanmaktadır.

Uyarı: Sonsuz parmak döngüleri için hazırlanmadıkça parmak avcınızı bubi tuzağıyla tutmayın.

Ağ güvenlik duvarı sistemlerinde bu hile daha da ileriye taşınabilir. Tipik ağ güvenlik duvarı sadece dış dünyaya sınırlı bir dizi hizmet sağlar. Diğer tüm hizmetler, yukarıdaki tftp örneğinde olduğu gibi "gönderilebilir". Sonuç mükemmel bir erken uyarı sistemidir.

AYRICA BAKINIZ

tcpd (8) tcp / ip daemon sarmalayıcı programı. tcpdchk (8), tcpdmatch (8), test programları.

Önemli: Komutunuzun belirli bir bilgisayarda nasıl kullanıldığını görmek için man komutunu ( % adam ) kullanın.