Hosts.allow - príkaz Linux - príkaz Unix

NÁZOV

hosts_access - formát súborov riadenia prístupu hostiteľa

POPIS

Táto manuálová stránka popisuje jednoduchý jazyk riadenia prístupu, ktorý je založený na vzorkách klienta (názov hostiteľa / adresa, meno používateľa) a názov servera (názov procesu, názov hostiteľa / adresa servera). Príklady sú uvedené na konci. Netrpezlivá čítačka je vyzvaná, aby preskočila časť EXAMPLES pre rýchly úvod . Rozšírená verzia jazyka riadenia prístupu je popísaná v dokumente hosts_options (5). Rozšírenia sa zapínajú v čase zostavenia programu budovaním s možnosťou -DPROCESS_OPTIONS.

V nasledujúcom texte je démon procesný názov procesu sieťového démona a klient je názov a / alebo adresa hostiteľskej žiadajúcej služby. Názvy procesných démonov siete sú špecifikované v konfiguračnom súbore inetd.

FÓLY KONTROLY PRÍSTAVY

Softvér na kontrolu prístupu prehliada dva súbory . Vyhľadávanie sa zastaví pri prvom zápase.

Prístup sa pridelí, ak sa pár (daemon, klient) zhoduje s položkou v súbore /etc/hosts.allow .

V opačnom prípade bude prístup odmietnutý, ak sa pár (daemon, klient) zhoduje s položkou v súbore /etc/hosts.deny .

V opačnom prípade bude prístup povolený.

Neexistujúci riadiaci súbor prístupu sa považuje za prázdny súbor. Kontrola prístupu sa dá vypnúť tým, že sa neposkytujú žiadne kontrolné súbory.

PRAVIDLÁ KONTROLY PRÍSTUPU

Každý riadiaci súbor prístupu pozostáva z nuly alebo viacerých riadkov textu. Tieto riadky sú spracované v poradí vzhľadu. Vyhľadávanie sa skončí, keď sa nájde zhoda.

Znak nového riadku sa ignoruje, ak mu predchádza znak spätného lomka. To vám umožní rozdeliť dlhé čiary, aby ste ich mohli ľahšie upravovať.

Prázdne čiary alebo čiary začínajúce znakom # sú ignorované. Umožňuje vám vložiť komentáre a medzery, aby boli tabuľky ľahšie čitateľné.

Všetky ostatné riadky by mali spĺňať nasledujúci formát, veci medzi [] sú voliteľné:

daemon_list: zoznam_klientov [: shell_command]

zoznam daemon_list je zoznam jedného alebo viacerých názvov procesov démona (argv [0]) alebo zástupných znakov (pozri nižšie).

client_list je zoznam jedného alebo viacerých názvov hostiteľov, hostiteľských adries, vzorov alebo zástupných znakov (pozri nižšie), ktoré budú porovnané s názvom alebo adresou hostiteľa klienta.

Zložitejšie formuláre daemon @ host a user @ host sú vysvetlené v sekciách na vzorkách koncových bodov servera a na vyhľadávaní používateľských mien klienta.

Zoznamy prvkov by mali byť oddelené políčkami a / alebo čiarkami.

S výnimkou vyhľadávania sieťových skupín NIS (YP), všetky kontroly kontroly prístupu sú nepodstatné pre malé a veľké písmená.

VZORY

Jazyk riadenia prístupu implementuje nasledujúce vzorce:

Reťazec začínajúci znakom `. ' charakteru. Názov hostiteľa sa zhoduje, ak sa posledné komponenty jeho názvu zhodujú so zadaným vzorom. Vzor `.tue.nl 'sa napríklad zhoduje s názvom hostiteľa` wzv.win.tue.nl'.

Reťazec, ktorý končí koncovkou `. ' charakteru. Hostiteľská adresa sa zhoduje, ak sa jej prvé numerické polia zhodujú s daným reťazcom. Napríklad vzor "131.155". zodpovedá adrese (takmer) každého hostiteľa siete siete Eindhoven (131.155.xx).

Reťazec začínajúci znakom @ sa považuje za názov sieťovej skupiny NIS (predtým YP). Názov hostiteľa sa zhoduje, ak je hostiteľským členom určenej skupiny. Zhoda siete Netgroup nie je podporovaná pre názvy procesov démonov ani pre názvy používateľov klientov.

Výraz formulára "nnnn / mmmm" sa interpretuje ako dvojica "net / mask". Adresa hostiteľa IPv4 sa zhoduje, ak sa "net" rovná bitovej adrese adresy a "masky". Napríklad vzorec net / mask "131.155.72.0/255.255.254.0" zodpovedá každej adrese v rozsahu "131.155.72.0" po "131.155.73.255".

Výraz formulára "[n: n: n: n: n: n: n: n] / m" sa interpretuje ako pár [netto / prefixlen]. Hostiteľská adresa IPv6 sa zhoduje, ak bity `prefixlen '` net' sa rovnajú bitom `prefixlen 'adresy. Napríklad vzorec [3ffe: 505: 2: 1 ::] / 64 'sa zhoduje s každou adresou v rozsahu "3ffe: 505: 2: 1 ::' cez 3ffe: 505: 1: ffff: ffff: ffff: ffff '.

Reťazec začínajúci znakom `/ 'sa považuje za názov súboru . Názov hostiteľa alebo adresa je zhodná, ak zodpovedá ľubovoľnému názvu hostiteľa alebo vzoru adresy, ktorý je uvedený v danom súbore. Formát súboru je nula alebo viac riadkov s nulovým alebo viac názvami hostiteľov alebo adresami, oddelených medzerami. Vzor názvu súboru sa môže používať kdekoľvek, kde sa môže použiť názov hostiteľa alebo vzorová adresa.

Záložky `* 'a`?' môže byť použitá na porovnanie názvov hostiteľov alebo adries IP . Táto metóda porovnávania nemôže byť použitá v spojení s "net / mask" matching, pričom názov hostiteľa začína na `. ' alebo zodpovedajúce adresy IP končiace znakom `. '.

žolíky

Jazyk kontroly prístupu podporuje explicitné zástupné znaky:

ALL

Univerzálna zástupná karta sa vždy zhoduje.

LOCAL

Zodpovedá každému hostiteľovi, ktorého meno neobsahuje znak dotyku.

NEZNÁMY

Zodpovedá každému používateľovi, ktorého meno nie je známe, a zodpovedá ľubovoľnému hostiteľovi, ktorého meno alebo adresa sú neznáme. Tento vzor by sa mal používať s opatrnosťou: názvy hostiteľov nemusia byť dostupné kvôli problémom s dočasným názvom servera. Sieťová adresa nebude dostupná, ak softvér nemôže zistiť, na aký typ siete hovorí.

známy

Zodpovedá každému používateľovi, ktorého meno je známe, a zodpovedá akémukoľvek hostiteľovi, ktorého meno a adresa sú známe. Tento vzor by sa mal používať s opatrnosťou: názvy hostiteľov nemusia byť dostupné kvôli problémom s dočasným názvom servera. Sieťová adresa nebude dostupná, ak softvér nemôže zistiť, na aký typ siete hovorí.

PARANOID

Zodpovedá každému hostiteľovi, ktorého meno nezodpovedá jeho adrese. Keď je tcpd vytvorený pomocou funkcie -DPARANOID (predvolený režim), znižuje požiadavky od takýchto klientov aj predtým, než sa pozrie na riadiace tabuľky prístupu. Stavať bez -DPARANOID, keď chcete viac kontroly nad týmito žiadosťami.

prevádzkovatelia

OKREM

Zamýšľané použitie je vo forme: `list_1 EXCEPT list_2 '; tento konštrukt sa zhoduje so všetkým, čo zodpovedá zoznamu_1, pokiaľ nezodpovedá zoznamu_2 . Operátor EXCEPT môže byť použitý v súbore daemon_lists av klient_lists. Operátor EXCEPT môže byť vnorený: ak riadiaci jazyk umožní používanie zátvoriek, `a EXCEPT b EXCEPT c 'by sa robil ako` (ALE NIE (b))'.

PRÍKAZY SHELL

Ak pravidlo kontroly prístupu prvej zhody obsahuje príkaz shell, tento príkaz je podrobený% substitúciám (pozri nasledujúcu časť). Výsledok sa vykonáva pomocou a / bin / sh podriadeného procesu so štandardným vstupom, výstupom a chybou pripojenou k / dev / null . Zadajte príkaz "&" na konci príkazu, ak nechcete čakať, kým sa neskončí.

Príkazy shellu by sa nemali spoliehať na nastavenie PATH inetd. Namiesto toho by mali používať absolútne názvy ciest alebo by mali začínať explicitným PATH = akýmkoľvek vyhlásením.

Dokument hosts_options (5) opisuje alternatívny jazyk, ktorý používa pole príkazu shell iným a nekompatibilným spôsobom.

% EXPANSIONS

V rámci príkazov pre shell sú k dispozícii nasledujúce rozšírenia:

% a (% A)

Adresa hostiteľa klienta (server).

% c

Informácie o klientovi: user @ host, user @ address, názov hostiteľa alebo len adresa v závislosti od toho, koľko informácií je k dispozícii.

% d

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

% h (% H)

Názov hostiteľa (servera) alebo adresa, ak nie je k dispozícii názov hostiteľa.

% n (% N)

Názov hostiteľa (servera) (alebo "neznámy" alebo "paranoidný").

% p

Identifikátor procesu démona.

% s

Informácie o serveri: daemon @ host, daemon @ address, alebo len názov démona, podľa toho, koľko informácií je k dispozícii.

% u

Užívateľské meno klienta (alebo "neznáme").

%%

Rozbalí sa na jediný znak "%".

Znaky v% rozšírení, ktoré môžu zamieňať shell, sú nahradené znakmi podčiarknutia.

SERVEROVÉ ENDPOINT VZORKY

Ak chcete rozlíšiť klientov podľa sieťovej adresy, ku ktorej sa pripájajú, použite vzory formulára:

process_name @ host_pattern: client_list ...

Takéto vzory môžu byť použité, keď má stroj rôzne internetové adresy s rôznymi názvami internetových hostiteľov. Poskytovatelia služieb môžu využiť toto zariadenie na ponúkanie archívov FTP, GOPHER alebo WWW s internetovými názvami, ktoré môžu dokonca patriť do rôznych organizácií. Pozrite tiež možnosť "twist" v dokumente hosts_options (5). Niektoré systémy (Solaris, FreeBSD) môžu mať viac ako jednu internetovú adresu na jednom fyzickom rozhraní; s inými systémami sa budete musieť uchýliť k pseudo rozhraniach SLIP alebo PPP, ktoré žijú v špecializovanom sieťovom adresnom priestore.

Hostiteľský_položka sa riadi rovnakými pravidlami syntaxe ako názvy a adresy hostiteľov v kontexte zoznamu klientov. Zvyčajne informácie o koncových bodoch servera sú k dispozícii len pri službách orientovaných na pripojenie.

CLIENT USERNAME LOOKUP

Keď hostiteľ hostiteľa podporuje protokol RFC 931 alebo jeden z jeho potomkov (TAP, IDENT, RFC 1413), baliace programy môžu získať ďalšie informácie o vlastníkovi pripojenia. Informácie o používateľských menách klienta, ak sú k dispozícii, sa zaznamenávajú spolu s názvom hostiteľa klienta a môžu sa použiť na porovnanie vzorov, ako sú:

daemon_list: ... user_pattern @ host_pattern ...

Obaly démonov je možné nakonfigurovať v čase kompilácie, aby sa vykonali vyhľadávania podľa pravidiel založené na pravidlách (predvolené) alebo aby sa vždy vypočúvali hostiteľský klient. V prípade vyhľadávania používateľských mien založených na pravidlách by hore uvedené pravidlo spôsobilo vyhľadávanie používateľských mien len vtedy, keď sa zhodujú s názvom daemon_list a host_pattern .

Používateľský vzor má rovnakú syntax ako vzor démonového procesu, takže platia rovnaké zástupné znaky (členstvo v sieti netgroup nie je podporované). Jeden by sa však nemal nechať utiecť pomocou hľadania používateľského mena.

Nie je možné dôverovať informáciám o používateľských menách klienta, keď je to najviac potrebné, tj keď bol klientský systém napadnutý. Vo všeobecnosti sú ALL a (UN) KNOWN jediné vzory používateľských mien, ktoré dávajú zmysel.

Vyhľadávanie používateľov je možné iba v službách založených na protokole TCP a len vtedy, keď klient hostiteľa spustí vhodný démon; vo všetkých ostatných prípadoch výsledok je "neznámy".

Dobre známa chyba jadra systému UNIX môže spôsobiť stratu služby, keď vyhľadávanie používateľských mien zablokuje brána firewall. Obálka dokumentu README opisuje postup, pomocou ktorého sa zistí, či vaše jadro obsahuje túto chybu.

Vyhľadávanie používateľov môže spôsobiť značné oneskorenie pre používateľov, ktorí nie sú používateľmi systému UNIX. Predvolený časový limit pre hľadanie používateľského mena je 10 sekúnd: príliš krátky na to, aby sa vyrovnal s pomalými sieťami, ale bol dostatočne dlhý na to, aby podráždil používateľov počítačov.

Výberové vyhľadávanie používateľov môže zmierniť posledný problém. Napríklad pravidlo ako:


daemon_list: @pcnetgroup ALL @ ALL

by sa zhodovali s členmi pc netgroup bez toho, aby robili vyhľadávanie používateľského mena, ale vykonávali vyhľadávanie používateľských mien so všetkými ostatnými systémami.

DETEKCIA DOSIAHNUTÝCH ÚTOKOV ADRESY

Chyba v generátore sekvenčných čísel mnohých implementácií protokolu TCP / IP umožňuje narušiteľom ľahké zosobnenie dôveryhodných hostiteľov a rozbitie prostredníctvom služby vzdialeného shellu. Služba IDENT (RFC931 atď.) Sa môže použiť na detekciu takýchto a iných útokov spoofingu hostiteľských adries.

Pred prijatím žiadosti klienta môžu obaly použiť službu IDENT na zistenie, že klient žiadosť vôbec nepredložil. Keď klientský hostiteľ poskytuje službu IDENT, výsledok záporného vyhľadávania IDENT (klient sa zhoduje so súborom "UNKNOWN @ host") je silným dôkazom útoku hostiteľského spoofingu.

Pozitívny výsledok vyhľadávania IDENT (klient zodpovedá "KNOWN @ host") je menej dôveryhodný. Je možné, že útočník zneužije pripojenie klienta aj IDENT vyhľadávanie, hoci je to oveľa ťažšie ako spoofing iba klientskych pripojení. Môže sa stať, že klient IDENT server ležia.

Poznámka: vyhľadávania IDENT nefungujú s službami UDP.

PRÍKLADY

Jazyk je dostatočne flexibilný, aby rôzne typy pravidiel kontroly prístupu mohli byť vyjadrené s minimálnymi rozruchami. Hoci jazyk používa dve riadiace tabuľky prístupu, najbežnejšie politiky môžu byť implementované s jedným z tabuliek, ktoré sú triviálne alebo dokonca prázdne.

Pri čítaní nižšie uvedených príkladov je dôležité uvedomiť si, že tabuľka s povoleniami je skontrolovaná pred tabuľkou zamietnutia, že vyhľadávanie sa skončí, keď sa nájde zhoda a že prístup je pridelený, keď sa nenájde žiadna zhoda.

Príklady používajú názvy hostiteľov a domén. Môžu byť vylepšené zahrnutím informácií o adrese a / alebo sieti / sieťovej maske, aby sa znížil vplyv zlyhaní vyhľadávania dočasného mena servera.

VOĽNÉ ZATVORENÉ

V tomto prípade je predvolený prístup zakázaný. Iba povolené hostiteľom sú povolené prístupy.

Predvolená politika (bez prístupu) je implementovaná s triviálnym súborom deny:

/etc/hosts.deny: ALL: ALL

Toto zamieta všetku službu pre všetkých hostiteľov, pokiaľ im nie je povolený prístup podľa údajov v súbore povolenia.

Výhradne autorizovaní hostitelia sú uvedení v súbore povolenia. Napríklad:

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

Prvé pravidlo umožňuje prístup z hostiteľov v lokálnej doméne (nie. V názve hostiteľa) a členov siete net_netgroup . Druhé pravidlo umožňuje prístup od všetkých hostiteľov v doméne foobar.edu (upozornenie na vedúcu bodku), s výnimkou terminalserver.foobar.edu .

MOSTLY OPEN

Tu je prístup povolený štandardne. iba jednoznačne špecifikovaným hostiteľom sa služba odmieta.

Predvolená politika (povolený prístup) spôsobuje, že povolený súbor je redundantný, takže ho možno vynechať. Výnimočne neoprávnené hostiteľské počítače sú uvedené v súbore odmietnuť. Napríklad:

/etc/hosts.deny: ALL: some.host.name, .some.domain
VŠETKÝCH OKREM in.fingerd: other.host.name, .other.domain

Prvé pravidlo popiera niektorých hostiteľov a domén všetky služby; druhé pravidlo stále povoľuje požiadavky prstov od iných hostiteľov a domén.

BOOBY TRAPS

Nasledujúci príklad povoľuje žiadosti tftp od hostiteľov v lokálnej doméne (všimnite si vedúcu bodku). Žiadosti iných hostiteľov sú zamietnuté. Namiesto požadovaného súboru sa vysiela prstová sonda hostiteľovi. Výsledok je odoslaný superužívajúcemu.

/etc/hosts.allow:

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

Príkaz safe_finger je dodávaný s balíčkom tcpd a mal by byť nainštalovaný na vhodnom mieste. Obmedzuje možné poškodenie dát odosielaných serverom vzdialeného prsta. Poskytuje lepšiu ochranu ako príkaz štandardného prsta.

Rozšírenie sekvencií% h (hostiteľa klienta) a% d (názov služby) je popísané v sekcii príkazov pre shell.

Upozornenie: Nepoužívajte zachytenie démona prstov, pokiaľ nie ste pripravení na nekonečné prsty.

Na sieťových firewallových systémoch tento trik môže byť prenášaný ešte ďalej. Typický sieťový firewall poskytuje iba obmedzený súbor služieb vonkajšiemu svetu. Všetky ostatné služby môžu byť "zablokované" rovnako ako vyššie uvedený príklad tftp. Výsledkom je vynikajúci systém včasného varovania.

POZRI TIEŽ

program tcpd (8) tcp / ip. tcpdchk (8), tcpdmatch (8), testovacie programy.

Dôležité: Pomocou príkazu man ( % man ) môžete zistiť, ako sa príkaz používa vo vašom konkrétnom počítači.