Skip to main content

Hosts.allow - Linux Command

/etc/hosts for Local Domains in Linux (Juni 2026)

/etc/hosts for Local Domains in Linux (Juni 2026)
Anonim

namn

hosts_access - format för värdåtkomst Linux-kontrollfiler.

Beskrivning

Den här handboken beskriver Linux som ett enkelt åtkomstkontrollspråk som är baserat på klient (värdnamn / adress, användarnamn) och server (processnamn, värdnamn / adress) mönster. Exempel ges i slutet. Den otåliga läsaren uppmanas att hoppa över i avsnittet Exempel för en snabb introduktion. En utökad version av åtkomstkontrollspråk beskrivs i hosts_options (5) dokument. Förlängningarna slås på vid programbyggtiden genom att bygga med -DPROCESS_OPTIONS.

I följande text, demon är processnamnet för en nätverksdemon process, och klient är namnet och / eller adressen till en värdbegärande tjänst. Nätverksdemonprocessnamn anges i inetd-konfigurationsfilen.

Access Control Files

Programmet för åtkomstkontroll kontrollerar två filer. Sökningen stannar vid första matchen.

Tillträde kommer att beviljas när ett (daemon, klient) par matchar en post i /etc/hosts.allow fil.

Annars kommer åtkomst nekas när ett (daemon, klient) par matchar en post i /etc/hosts.deny fil.

Annars kommer åtkomst beviljas.

En icke-existerande åtkomstkontrollfil behandlas som om det var en tom fil. Således kan åtkomstkontrollen stängas av genom att inte ge några åtkomstkontrollfiler.

Åtkomstkontrollregler

Varje åtkomstkontrollfil består av noll eller flera textrader. Dessa linjer behandlas i utseende. Sökningen avslutas när en matchning hittas.

En nylinje karaktär ignoreras när den föregås av en backslash tecken. Detta tillåter dig att bryta upp långa linjer så att de är enklare att redigera.

Blanka linjer eller rader som börjar med en `# 'tecken ignoreras. Detta tillåter dig att lägga in kommentarer och blankutrymme så att tabellerna är enklare att läsa.

Alla andra rader ska uppfylla följande format, saker mellan är valfria:

daemon_list: client_list : shell_command

daemon_list är en lista över ett eller flera demonnamnsprocessnamn (argv 0 -värden) eller jokertecken (se nedan).

client_list är en lista över ett eller flera värdnamn, värdadresser, mönster eller jokertecken (se nedan) som matchas mot värdens värdnamn eller adress.

De mer komplexa formerna daemon @ värd och användare @ värd förklaras i sektionerna om serverns slutpunktsmönster och på respektive användarnamnuppslag.

Listelementen ska separeras av blanketter och / eller kommatecken.

Med undantag för NIS (YP) nätgruppsuppslag är alla kontroller av åtkomstkontroll otillräckliga.

Mönster

Åtkomstkontrollspråk implementerar följande mönster:

En sträng som börjar med en `. ' karaktär. Ett värdnamn matchas om de sista komponenterna i namnet matchar det angivna mönstret. Mönstret `. Tue.nl 'matchar till exempel värdnamnet` wzv.win.tue.nl'.

En sträng som slutar med en `. ' karaktär. En värdadress matchas om dess första numeriska fält matchar den angivna strängen. Till exempel mönstret `131.155. ' matchar adressen till (nästan) varje värd på Eindhoven universitetets nätverk (131.155.x.x).

En sträng som börjar med ett `@ 'tecken behandlas som ett NIS (tidigare YP) nätgruppsnamn. Ett värdnamn matchas om det är värdmedlem i den angivna nätgruppen. Netgroup-matchningar stöds inte för demonprocessnamn eller för användarnamn för klienter.

Ett uttryck för formuläret "n.n.n.n.m.m.m.m" tolkas som ett "nät / mask" -par. En IPv4-värdadress matchas om "net" är lika med bitvis OCH av adressen och "masken". Till exempel matchar nät / maskmönstret `131.155.72.0/255.255.254.0 'varje adress i intervallet' 131.155.72.0 'till' 131.155.73.255 '.

Ett uttryck av formen `n: n: n: n: n: n / m 'tolkas som ett` net / prefixlen' par. En IPv6-värdadress matchas om `prefixlen 'bitar av' net 'är lika med' prefixlen '-bitarna i adressen. Exempelvis matchar net / prefixlen mönstret `3ffe: 505: 2: 1 :: / 64 'varje adress inom intervallet` 3ffe: 505: 2: 1 ::' till `3ffe: 505: 2: 1: FFFF: FFFF: FFFF: FFFF'.

En sträng som börjar med en `/ 'tecken behandlas som ett filnamn. Ett värdnamn eller en adress matchas om den matchar något värdnamn eller adressmönster som anges i den angivna filen. Filformatet är noll eller flera rader med noll eller flera värdnamn eller adressmönster separerade av blankutrymme. Ett filnamn mönster kan användas var som helst ett värdnamn eller adressmönster kan användas.

Vildkort `* 'och`?' kan användas för att matcha värdnamn eller IP-adresser. Denna matchningsmetod kan inte användas tillsammans med "net / mask" matchning, värdnamn matchning som börjar med `. ' eller IP-adress matchning slutar med `. '.

joker~~POS=TRUNC

Åtkomstkontrollspråk stöder uttryckliga jokertecken, inklusive:

'ALLT'

Det universella jokertecknet matchar alltid.

'LOKAL'

Matchar någon värd vars namn inte innehåller en prickningstecken.

'OKÄND'

Matchar alla användare vars namn är okänt och matchar alla värdar vars namn eller Adressen är okänd. Detta mönster ska användas med försiktighet: Värdnamn kan vara otillgängliga på grund av tillfälliga namn serverproblem. En nätverksadress kommer inte att vara tillgänglig när programvaran inte kan ta reda på vilken typ av nätverk det pratar med.

'KÄND'

Matchar alla användare vars namn är känt och matchar alla värdar vars namn och adress är känd.Detta mönster ska användas med försiktighet: Värdnamn kan vara otillgängliga på grund av tillfälliga namn serverproblem. En nätverksadress kommer inte att vara tillgänglig när programvaran inte kan ta reda på vilken typ av nätverk det pratar med.

'PARANOID'

Matchar någon värd vars namn inte matchar adressen. När tcpd är byggt med -DPARANOID (standardläge), släpper det förfrågningar från sådana klienter redan innan du tittar på åtkomstkontrolltabellerna. Bygg utan -DPARANOID när du vill ha mer kontroll över sådana förfrågningar.

'aktörer'

'BORTSETT FRÅN'

Avsedd användning är av formuläret: `list_1 EXCEPT list_2 '; den här konstruktionen matchar allt som matchar list_1 om det inte matchar list_2 . EXCEPT-operatören kan användas i daemon_lists och i client_lists. EXCEPT-operatören kan näts: Om styrningsspråket skulle tillåta användning av parentes, skulle "med undantag b bortsett från c" tolka som "(EXCEPT (b EXCEPT c))".

Shell kommandon

Om den första matchade åtkomstkontrollregeln innehåller ett skalkommando, utsätts det här kommandot för% substitutioner (se nästa avsnitt). Resultatet utförs av a / Bin / sh barnprocess med standardinmatning, utgång och fel ansluten till / Dev / null . Ange ett `& 'i slutet av terminalkommandot om du inte vill vänta tills det har slutförts.

Shell-kommandon bör inte förlita sig på inställningen PATH för inetd. I stället bör de använda absoluta sökvägar, eller de bör börja med en explicit PATH = vad som helst uttalande.

De hosts_options (5) dokumentet beskriver ett alternativt språk som använder fältet Shell-kommandot på ett annat och oförenligt sätt.

% Expansions

Följande utvidgningar finns inom skalkommandon:

% a (% A) - Klientens (server) värdadress.

% c - Klientinformation: Användare @ värd, användare @ adress, värdnamn eller bara en adress, beroende på hur mycket information som finns tillgänglig.

% d - Daemon process namn (argv 0 värde).

% h (% H) - Klientens (server) värdnamn eller adress, om värdnamnet inte är tillgängligt.

% n (% N) - Klientens (server) värdnamn (eller "okänt" eller "paranoid").

% p - Daemon process ID.

% s - Serverinformation: daemon @ host, daemon @ address, eller bara ett demonnamn, beroende på hur mycket information som finns tillgänglig.

% u - Klientens användarnamn (eller "okänt").

%% - Expanderar till en enda `% 'tecken.

Tecken i% expansions som kan förvirra skalet ersätts av understreck.

Server Endpoint Patterns

För att skilja klienter från nätverksadressen som de ansluter till använder du mönster i formuläret:

processnamn @ host_pattern: client_list …

Mönster som dessa kan användas när maskinen har olika internetadresser med olika internet värdnamn. Tjänsteleverantörer kan använda denna möjlighet att erbjuda FTP-, GOPHER- eller WWW-arkiv med internetnamn som till och med kan tillhöra olika organisationer. Se även alternativet "twist" i dokumentet hosts_options (5). Vissa system (Solaris, FreeBSD) kan ha mer än en internetadress på ett fysiskt gränssnitt. med andra system kan du behöva tillgripa SLIP- eller PPP-pseudo-gränssnitt som bor i ett dedikerat nätverksadressutrymme.

Host_pattern följer samma syntaxregler som värdnamn och adresser i client_list-sammanhang. Vanligtvis är serverändpunktsinformation endast tillgänglig med anslutningsorienterade tjänster.

Klientens användarnamnssökning

När klientens värd stöder RFC 931-protokollet eller en av sina efterkommande (TAP, IDENT, RFC 1413) kan wrappprogrammen hämta ytterligare information om ägaren till en anslutning. Kundens användarnamn, när den är tillgänglig, loggas tillsammans med värdens värdnamn och kan användas för att matcha mönster som:

daemon_list: … user_pattern @ host_pattern …

Daemon wrappers kan konfigureras vid kompileringstid för att utföra regelbundna användarnamnuppslag (standard) eller att alltid höra klientens värd. När det gäller regelstyrda användarnamnuppslag, skulle ovanstående regel orsaka användarnamnuppslag endast när båda daemon_list och den host_pattern match.

Ett användarmönster har samma syntax som ett demonprocessmönster, så samma jokertecken gäller (netgroupmedlemskapet stöds inte). Man borde dock inte få bort med användarnamnuppslag.

Klientens användarnamn information kan inte lita på när det behövs mest, det vill säga när klientsystemet har äventyras. I allmänhet är ALL och (UN) KNOWN de enda användarnamnet som är meningsfulla.

Användningsuppslag är endast möjliga med TCP-baserade tjänster, och endast när klientens värd kör en lämplig demon. i alla andra fall är resultatet "okänt".

En välkänd UNIX-kärnbull kan orsaka förlust av tjänsten när användarnamnuppslag blockeras av en brandvägg. Omslaget README-dokumentet beskriver ett förfarande för att ta reda på om din kärna har den här felet.

Användningsuppslag kan orsaka märkbara förseningar för icke-UNIX-användare. Standard timeout för användarnamnuppslag är 10 sekunder: för kort för att klara av långsamma nätverk, men tillräckligt länge för att irritera PC-användare.

Selektiva användarnamnuppslag kan lindra det sista problemet. Till exempel, en regel som:daemon_list: @pcnetgroup ALL @ ALL

skulle matcha medlemmar i pc-nätgruppen utan att göra användarnamnuppslag, men skulle utföra användarnamnuppslag med alla andra system.

Upptäcka Adress Spoofing Attacks

En fel i sekvensnummersgeneratorn för många TCP / IP-implementeringar gör det möjligt för inkräktare att enkelt omforma betrodda värdar och att bryta in via till exempel fjärrskalstjänsten.IDENT (RFC931 etc.) -tjänsten kan användas för att upptäcka sådana och andra värdadressspoofingangrepp.

Innan du accepterar en klientförfrågan kan wrappersna använda IDENT-tjänsten för att ta reda på att klienten inte skickade begäran alls. När klientens värd tillhandahåller IDENT-tjänsten, är ett negativt IDENT-uppslag (klienten matchar "UNKNOWN @ host") starkt bevis på en värdspoofingattack.

Ett positivt IDENT-uppslagningsresultat (klienten matchar "KNOWN @ host") är mindre trovärdig. Det är möjligt för en inkräktare att skymma både klientanslutningen och IDENT-uppslaget, men det gör det mycket svårare än att spoofa bara en klientanslutning. Det kan också vara att klientens IDENT-server ligger.

Obs! IDENT-sökning fungerar inte med UDP-tjänster.

exempel

Språket är flexibelt nog att olika typer av åtkomstkontrollpolitik kan uttryckas med ett minimum av väsen. Även om språket använder två åtkomstkontrolltabeller kan de vanligaste principerna implementeras med en av tabellerna som är triviala eller tom.

När du läser exemplen nedan är det viktigt att inse att tilldelningsbordet skannas före avvisningsbordet, att sökningen avslutas när en matchning hittas och att åtkomst beviljas när ingen matchning alls finns.

Exemplen använder värd- och domännamn. De kan förbättras genom att inkludera adress- och / eller nätverks- / nätmaskinformation, för att minska effekterna av tillfälliga navigeringsfel.

Mest stängt

I det här fallet nekas åtkomst som standard. Endast explicit behöriga värdar är tillåtna.

Standardpolicy (ingen åtkomst) implementeras med en trivial nekfil:

/etc/hosts.deny: ALL: ALL

Detta förnekar all service till alla värdar, om inte de får tillåtas åtkomst av poster i tillåtningsfilen.

De uttryckligen behöriga värdarna är listade i tillåtningsfilen. Till exempel:

/etc/hosts.allow: ALL: LOCAL @some_netgroupALL: .foobar.edu Bortsett från terminalserver.foobar.edu

Den första regeln tillåter åtkomst från värdar i den lokala domänen (nej `. 'I värdnamnet) och från medlemmarna av some_netgroup NetGroup. Den andra regeln tillåter åtkomst från alla värdar i foobar.edu domän (märka ledpunkten), med undantag för terminalserver.foobar.edu .

För det mesta öppen

Här ges åtkomst som standard; Endast uttryckligen angivna värdar är nekad tjänst.

Standardpolicyen (tilldelad åtkomst) gör att filen är överflödig så att den kan utelämnas. De uttryckligen icke-auktoriserade värdarna anges i neka-filen. Till exempel:

/etc/hosts.deny: ALL: some.host.name, .some.domainAlla utom in.fingerd: other.host.name, .other.domain

Den första regeln förnekar vissa värdar och domäner alla tjänster; Den andra regeln tillåter fortfarande fingerförfrågningar från andra värdar och domäner.

Booby Fällor

Nästa exempel tillåter tftp-förfrågningar från värdar i den lokala domänen (märka ledpunkten). Begäranden från andra värdar nekas. Istället för den begärda filen skickas en fingersond till den avstående värden. Resultatet skickas till superanvändaren.

/etc/hosts.allow:

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

Kommandot safe_finger kommer med tcpd-omslaget och ska installeras på ett lämpligt ställe. Det begränsar eventuella skador från data som skickas av fjärrfingervern. Det ger bättre skydd än standardfingerkommandot.

Expansionen av% h (klient värd) och% d (servicenamn) sekvenser beskrivs i avsnittet om skalkommandon.

Varning: Stoppa inte din fingerdemon, om du inte är förberedd för oändliga fingerslingor.

På nätverkets brandväggssystem kan detta trick transporteras ytterligare. Den typiska nätverksväggen tillhandahåller endast en begränsad uppsättning tjänster till yttervärlden. Alla andra tjänster kan "bugged" precis som ovanstående tftp-exempel. Resultatet är ett utmärkt tidigt varningssystem.

Se även

tcpd (8) tcp / ip daemon wrapper program.tcpdchk (8), tcpdmatch (8), testprogram.

Viktig: Använd man kommando ( % man ) för att se hur ett kommando används på din dator.