Hosts.allow - příkaz Linux - příkaz Unix

NÁZEV

hosts_access - formát hostitelských souborů řízení přístupu

POPIS

Tato manuálová stránka popisuje jednoduchý jazyk řízení přístupu, který je založen na klientském (název / adresu hostitele, jméno uživatele) a na serveru (název procesu, název hostitele / adresa). Příklady jsou uvedeny na konci. Netrpělivému čtenáři se doporučuje, aby přeskočil na sekci PŘÍKLADY pro rychlý úvod . Rozšířená verze jazyka pro řízení přístupu je popsána v dokumentu hosts_options (5). Rozšíření jsou zapnuta v době vytváření programu budováním pomocí příkazu -DPROCESS_OPTIONS.

V následujícím textu je démon procesním názvem procesu síťového démona a klient je jméno a / nebo adresa hostitelské služby. Názvy procesních démonů sítě jsou uvedeny v konfiguračním souboru inetd.

PŘÍSTUPOVÉ OVLÁDACÍ SOUBORY

Software pro řízení přístupu konzultuje dva soubory . Hledání se zastaví při prvním utkání.

Přístup bude udělen, pokud pár (daemon, klient) odpovídá položce v souboru /etc/hosts.allow .

V opačném případě bude přístup odepřen, pokud pár (daemon, klient) odpovídá položce v souboru /etc/hosts.deny .

V opačném případě bude udělen přístup.

Neexistující soubor řízení přístupu se zachází jako s prázdným souborem. Řízení přístupu lze tedy vypnout tím, že neposkytne žádné řídicí soubory přístupu.

PRAVIDLA KONTROLY PŘÍSTUPU

Každý řídicí soubor pro přístup obsahuje nula nebo více řádků textu. Tyto řádky jsou zpracovány v pořadí vzhledu. Hledání se ukončí při nalezení shody.

Při předcházejícím znaku zpětného lomítka se ignoruje znak nového řádku. To vám umožní rozdělit dlouhé čáry tak, aby byly snadněji upravitelné.

Prázdné řádky nebo řádky začínající znakem # jsou ignorovány. To vám dovoluje vkládat komentáře a mezery tak, aby tabulky byly snadněji čitelné.

Všechny ostatní řádky by měly vyhovovat následujícím formám, věci mezi [] jsou volitelné:

daemon_list: seznam_klientů [: shell_command]

daemon_list je seznam jednoho nebo více názvů procesu démonů (argv [0]) nebo zástupných znaků (viz níže).

client_list je seznam jednoho nebo více názvů hostitelů, hostitelských adres, vzorků nebo zástupných znaků (viz níže), které budou porovnány s názvem nebo adresou hostitele klienta.

Složitější formuláře daemon @ host a user @ host jsou vysvětleny v sekcích na vzorech koncových bodů serveru a na vyhledáních uživatelských jmen klientů.

Seznamy prvků by měly být odděleny políčky a / nebo čárkami.

S výjimkou vyhledání síťových skupin NIS (YP) jsou všechny kontrolní kontroly přístupu nepostřehnutelné.

VZORKY

Jazyk řízení přístupu implementuje následující vzory:

Řetězec, který začíná znakem `. ' charakter. Název hostitele je shodný, pokud poslední součásti jeho jména odpovídají zadanému vzoru. Například vzorek `.tue.nl 'odpovídá názvu hostitele' wzv.win.tue.nl '.

Řetězec, který končí znakem `. ' charakter. Adresa hostitele je shodná, pokud její první číselná pole odpovídají zadanému řetězci. Například vzorek "131.155". odpovídá adresě (téměř) všech hostitelů sítě Eindhoven University (131.155.xx).

Řetězec začínající znakem `@ 'je považován za název síťové skupiny NIS (dříve YP). Název hostitele je shodný, pokud je hostitelským členem uvedené síťové skupiny. Shodnosti Netgroup nejsou podporovány pro názvy procesů démonů ani názvy uživatelů klienta.

Výraz tvaru `nnnn / mmmm 'je interpretován jako dvojice" net / mask ". Adresa hostitele IPv4 je shodná, pokud `net 'odpovídá bitové adrese adresy a` mask'. Například vzorec net / mask `131.155.72.0/255.255.254.0 'odpovídá každé adrese v rozsahu` 131.155.72.0' přes `131.155.73.255 '.

Výraz formuláře `[n: n: n: n: n: n: n: n] / m 'je interpretován jako dvojice [net] / prefixlen'. Adresa hostitele IPv6 je shodná, pokud bity `prefixlen '` net' se rovnají bitem `prefixlen 'adresy. Například vzorek [3ffe: 505: 2: 1 ::] / 64 'odpovídá každé adrese v rozsahu `3ffe: 505: 2: 1 ::' přes '3ffe: 505: 1: ffff: ffff: ffff: ffff '.

Řetězec začínající znakem `/ 'je považován za název souboru . Název hostitele nebo adresa je shodná, pokud odpovídá libovolnému názvu hostitele nebo vzoru adresy uvedenému v pojmenovaném souboru. Formát souboru je nula nebo více řádků s nulovým nebo větším počtem názvů hostitelů nebo vzorů adres oddělených mezery. Vzor názvu souboru lze použít kdekoli, kde lze použít název hostitele nebo vzor adresy.

Divoká karta `* 'a`?' mohou být použity pro porovnání názvů hostitelů nebo adres IP . Tato metoda shody nemůže být použita ve spojení se souborem `net / mask ', přičemž název hostitele se začíná znakem`.' nebo odpovídání adres IP končící `. '.

WILDCARDS

Jazyk řízení přístupu podporuje explicitní zástupné znaky:

VŠECHNO

Univerzální zástupný znak se vždy shoduje.

MÍSTNÍ

Shoduje se s jakýmkoli hostitelem, jehož jméno neobsahuje znak dotyku.

NEZNÁMÝ

Odpovídá každému uživateli, jehož jméno není známo, a odpovídá libovolnému hostiteli, jehož jméno nebo adresa nejsou známy. Tento vzor by měl být používán s opatrností: názvy hostitelů nemusí být k dispozici kvůli dočasným problémům s jmenovacím serverem. Síťová adresa nebude k dispozici, pokud software nemůže zjistit, s jakým typem sítě komunikuje.

ZNÁMÝ

Odpovídá každému uživateli, jehož jméno je známo, a odpovídá libovolnému hostiteli, jehož jméno a adresa jsou známy. Tento vzor by měl být používán s opatrností: názvy hostitelů nemusí být k dispozici kvůli dočasným problémům s jmenovacím serverem. Síťová adresa nebude k dispozici, pokud software nemůže zjistit, s jakým typem sítě komunikuje.

PARANOIDNÍ

Shoduje se s jakýmkoli hostitelem, jehož jméno neodpovídá jeho adrese. Je-li tcpd vybudován s parametrem -DPARANOID (výchozí režim), klesá požadavky od takových klientů, a to i předtím, než se podíváme na tabulky řízení přístupu. Stavět bez -DPARANOID, pokud chcete mít větší kontrolu nad takovými požadavky.

OPERÁTORY

AŽ NA

Zamýšlené použití je ve tvaru: `list_1 EXCEPT list_2 '; tento konstrukt odpovídá cokoli, které odpovídá seznamu_1, pokud se nezobrazuje seznamu_2 . Operátor EXCEPT lze použít v souborech daemon_lists a client_lists. Operátor EXCEPT může být vnořen: pokud by řídící jazyk umožňoval použití závorek, `a EXCEPT b EXCEPT c 'bude analyzovat jako` (EXCEPT (b))'.

SHELL PŘÍKAZY

Pokud pravidlo pro řízení přístupu na prvním místě obsahuje příkaz shell, je tento příkaz podroben% náhradám (viz následující část). Výsledek je prováděn a / bin / sh podřízený proces se standardním vstupem, výstupem a chybou připojenou k / dev / null . Na konci příkazu zadejte znak "&", pokud nechcete počkat, dokud nebude dokončen.

Shell příkazy by se neměly spoléhat na nastavení PATH inetd. Namísto toho by měly používat absolutní názvy cest, nebo by měly začít s explicitním PATH = cokoli prohlášení.

Dokument hosts_options (5) popisuje alternativní jazyk, který používá pole příkazu shellu jiným a nekompatibilním způsobem.

% EXPANSIONS

V rámci příkazů shellu jsou k dispozici následující rozšíření:

% a (% A)

Adresa hostitele klienta (server).

%C

Informace o klientech: user @ host, user @ address, jméno hostitele nebo jen adresa v závislosti na tom, kolik informací je k dispozici.

% d

Název procesu démona (argv [0]).

% h (% H)

Název hostitele klienta (serveru), pokud není k dispozici název hostitele.

% n (% N)

Název hostitele klienta (server) (nebo "neznámý" nebo "paranoidní").

% p

Identifikátor procesu démona.

% s

Informace o serveru: daemon @ host, daemon @ address, nebo jen jméno daemona, podle toho, kolik informací je k dispozici.

% u

Jméno uživatele klienta (nebo "neznámý").

%%

Rozbalí se na jediný znak '%'.

Znaky v% rozšíření, které mohou zaměnit shell, jsou nahrazeny znaky podtržítka.

SERVEROVÉ ENDPOINT VZORY

Chcete-li klienty rozlišit podle adresy sítě, ke které se připojují, použijte vzory formuláře:

process_name @ host_pattern: seznam_klientů ...

Vzory, jako jsou tyto, lze použít, když má stroj různé internetové adresy s různými názvy hostitelů na internetu. Poskytovatelé služeb mohou využít toto zařízení k nabídce FTP, GOPHER nebo WWW archivů s internetovými jmény, které mohou patřit i různým organizacím. Viz také volbu `twist 'v dokumentu hosts_options (5). Některé systémy (Solaris, FreeBSD) mohou mít více než jednu internetovou adresu na jednom fyzickém rozhraní; s ostatními systémy se budete muset uchýlit k pseudo rozhraním SLIP nebo PPP, které žijí ve vyhrazeném síťovém adresovém prostoru.

Klient_pattern se řídí stejnými syntaktickými pravidly jako názvy a adresy hostitelů v kontextu seznamu klientů. Obvykle jsou informace o koncových bodech serveru k dispozici pouze u služeb orientovaných na připojení.

CLIENT USERNAME LOOKUP

Pokud hostitelský klient podporuje protokol RFC 931 nebo jeden z jeho potomků (TAP, IDENT, RFC 1413), programy wrapper mohou načíst další informace o vlastníkovi připojení. Informace o uživatelském jménu klienta, je-li k dispozici, je zaznamenána společně s názvem hostitele klienta a může být použita pro porovnání vzorků jako:

daemon_list: ... user_pattern @ host_pattern ...

Obálky daemonů mohou být nakonfigurovány v době kompilace, aby bylo možné provádět vyhledání uživatelských jmen založených na pravidlech (výchozí) nebo vždy dotazovat hostitele klienta. V případě vyhledávacích dotazů založených na pravidlech by výše uvedené pravidlo mělo způsobit vyhledání uživatelského jména pouze tehdy, když se shodují s názvem daemon_list a host_pattern .

Uživatelský vzorec má stejnou syntaxi jako vzor procesu démonů, takže platí stejné zástupné znaky (členství v síťové skupině není podporováno). Jeden by se však neměl nechat unést hledáním uživatelských jmen.

Informace o uživatelském jménu klienta nemohou být důvěryhodné, pokud je nejvíce zapotřebí, tj. Když byl klientský systém ohrožen. Obecně platí, že ALL a (UN) KNOWN jsou jediné vzory uživatelských jmen, které dávají smysl.

Vyhledání uživatelského jména je možné pouze se službami založenými na protokolu TCP a pouze v případě, že hostitelský klient běží vhodný démon; ve všech ostatních případech je výsledek "neznámý".

Známá chyba jádra systému UNIX může způsobit ztrátu služby, pokud jsou vyhledávací dotazy blokovány firewallem. Obálka dokumentu README popisuje postup, který zjistí, zda má vaše jádro tuto chybu.

Vyhledání uživatelského jména může způsobit značné zpoždění pro uživatele, kteří nejsou systémem UNIX. Výchozí časový limit pro vyhledání uživatelských jmen je 10 sekund: příliš krátký, aby se vyrovnal s pomalými sítěmi, ale byl dostatečně dlouhý, aby podráždil uživatele PC.

Výběrové vyhledání uživatelského jména mohou zmírnit poslední problém. Například pravidlo jako:


daemon_list: @pcnetgroup ALL @ ALL

by odpovídal členům síťové skupiny pc, aniž by vyhledávaly uživatelská jména, ale provedl vyhledání uživatelských jmen se všemi ostatními systémy.

DETEKCE DOPRAVNÍCH ÚTOKŮ ADRESY

Chyba generátoru sekvenčních čísel mnoha implementací protokolu TCP / IP umožňuje vetřelcům snadno předstírat důvěryhodné hostitele a přerušit je například prostřednictvím služby vzdáleného prostředí. Služba IDENT (RFC931 atd.) Může být použita k detekci takových a jiných útoků spoofingu hostitelské adresy.

Před přijetím požadavku klienta mohou obálky pomocí služby IDENT zjistit, že klient žádost vůbec neodeslal. Pokud klientský hostitel poskytuje službu IDENT, výsledek vyhledávání negativního IDENT (klient odpovídá "UNKNOWN @ host") je silným důkazem útoku hostitele spoofingu.

Pozitivní výsledek vyhledávání IDENT (klient odpovídá "KNOWN @ host") je méně důvěryhodný. Pro vetřelce je možné spoofovat jak připojení klienta, tak vyhledávání IDENT, přestože je to mnohem těžší než spoofing pouze klientského připojení. Může také být, že klient IDENT server leží.

Poznámka: Vyhledávání IDENT nefungují s službami UDP.

PŘÍKLADY

Jazyk je natolik flexibilní, že různé typy zásad řízení přístupu mohou být vyjádřeny s minimem rozruchu. Ačkoli jazyk používá dva řídicí tabulky pro přístup, lze nejčastěji implementovat nejčastější pravidla, kdy jedna z tabulek je triviální nebo dokonce prázdná.

Při čtení níže uvedených příkladů je důležité si uvědomit, že tabulka oprávnění je skenována před tabulkou zamítnut, že hledání skončí při nalezení shody a že přístup je udělen, když se vůbec nenajde žádná shoda.

Příklady používají názvy hostitelů a domén. Mohou být vylepšeny tím, že do nich budou zahrnuty informace o adrese a / nebo síti / síťové masce, aby se snížil dopad dočasných selhání vyhledávacího serveru.

VYPNUTO

V tomto případě je výchozí přístup odepřen. Pouze oprávněným hostitelům je povolen přístup.

Výchozí zásada (bez přístupu) je implementována pomocí triviálního souboru odepření:

/etc/hosts.deny: ALL: ALL

To odmítá veškerou službu všem hostitelům, pokud jim není povolen přístup podle položek v souboru povolení.

Výjimky autorizované hostitele jsou uvedeny v souboru povolení. Například:

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

První pravidlo povoluje přístup hostitelům v místní doméně (ne. V názvu hostitele) a členům síťové skupiny some_netgroup . Druhé pravidlo umožňuje přístup ze všech hostitelů domény foobar.edu (upozornění na přední bod), s výjimkou terminalserver.foobar.edu .

NEJVYŠŠÍ OTEVŘENO

Zde je přístup povolen ve výchozím nastavení; pouze služby s výslovně uvedenými hostiteli jsou odmítnuty.

Výchozí zásada (udělený přístup) způsobuje, že je povolený soubor redundantní, aby mohl být vynechán. Exkluzivně neoprávněné hostitele jsou uvedeny v souboru deny. Například:

/etc/hosts.deny: ALL: some.host.name, .some.domain
VŠECHNY S VÝJIMKOU in.fingerd: other.host.name, .other.domain

První pravidlo popírá některé hostitele a domény všechny služby; druhé pravidlo stále umožňuje žádosti o prsty od jiných hostitelů a domén.

BOOBY TRAPS

Další příklad povoluje požadavky tftp od hostitelů v místní doméně (upozorněte na přední bod). Žádosti od jiných hostitelů jsou zamítnuty. Namísto požadovaného souboru je prstem sonda odeslána hostitelskému útočníkovi. Výsledek je zaslán superuživatelovi.

/etc/hosts.allow:

in.tftpd: LOCAL, .my.domain /etc/hosts.deny: in.tftpd: ALL: spawn (/ some / where / safe_finger -l @% h | \ usr / ucb / mail -s% d-% h root) &

Příkaz safe_finger je dodáván s balíčkem tcpd a měl by být nainstalován na vhodném místě. Omezuje možné poškození dat odeslaných serverem vzdáleného prstu. Poskytuje lepší ochranu než příkaz standardního prstu.

Rozšíření sekvencí% h (hostitelské klientské) a% d (název služby) je popsáno v části příkazy pro shell.

Upozornění: neohlížejte démona prstu, pokud nejste připraveni na nekonečné smyčky prstů.

Na síťových firewallových systémech lze tento trik provést ještě dále. Typický síťový firewall poskytuje pouze omezený soubor služeb vnějšímu světu. Všechny ostatní služby mohou být "odposlouchávány" stejně jako výše uvedený příklad tftp. Výsledkem je vynikající systém včasného varování.

VIZ TAKÉ

tcpd (8) program tcp / ip daemon wrapper. tcpdchk (8), tcpdmatch (8), testovací programy.

Důležité: Použijte příkaz man ( % man ), abyste zjistili, jaký příkaz se používá v konkrétním počítači.