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

Naam

hosts_access - indeling van hosttoegang Linux-besturingsbestanden.

Omschrijving

Deze handleidingenpagina beschrijft Linux als een eenvoudige toegangscontrole taal die is gebaseerd op client (hostnaam / adres, gebruikersnaam) en server (procesnaam, hostnaam / adres) patronen. Aan het eind worden voorbeelden gegeven. De ongeduldige lezer wordt aangemoedigd om naar de sectie Voorbeelden te gaan voor een snelle introductie. Een uitgebreide versie van de taal voor toegangscontrole wordt beschreven in de hosts_options (5) document. De uitbreidingen worden ingeschakeld tijdens het opbouwen van het programma door te bouwen met -DPROCESS_OPTIONS.

In de volgende tekst, demon is de procesnaam van een netwerkdaemonproces, en cliënt is de naam en / of het adres van een hostaanvraagservice. De netwerk daemon procesnamen worden gespecificeerd in het inetd configuratiebestand.

Toegangsbeheerbestanden

De toegangscontrolesoftware raadpleegt twee bestanden. De zoekopdracht stopt bij de eerste wedstrijd.

Toegang wordt verleend als een (daemon, client) paar overeenkomt met een item in de /etc/hosts.allow het dossier.

Anders wordt toegang geweigerd wanneer een (daemon, client) paar overeenkomt met een item in de /etc/hosts.deny het dossier.

Anders wordt toegang verleend.

Een niet-bestaand toegangscontrolebestand wordt behandeld alsof het een leeg bestand is. Zo kan toegangscontrole worden uitgeschakeld door geen toegangsbesturingsbestanden te bieden.

Toegangsregels

Elk toegangscontrolebestand bestaat uit nul of meer regels tekst. Deze regels worden verwerkt in volgorde van weergave. De zoekopdracht wordt beëindigd wanneer een overeenkomst wordt gevonden.

Een nieuwlijnteken wordt genegeerd wanneer het wordt voorafgegaan door een backslash-teken. Hiermee kunt u lange lijnen splitsen zodat ze gemakkelijker te bewerken zijn.

Lege regels of lijnen die beginnen met een `# 'teken worden genegeerd. Hiermee kunt u opmerkingen en witruimte invoegen, zodat de tabellen gemakkelijker te lezen zijn.

Alle andere regels moeten voldoen aan het volgende formaat, waarbij dingen tussen optioneel zijn:

daemon_list: client_list : shell_command

daemon_list is een lijst van een of meer daemon-procesnamen (argv 0 -waarden) of jokertekens (zie hieronder).

Cliënten lijst is een lijst van een of meer hostnamen, hostadressen, patronen of jokertekens (zie hieronder) die worden vergeleken met de hostnaam of het adres van de client.

De meer complexe vormen daemon @ host en user @ host worden uitgelegd in de secties over server eindpunt patronen en op client-lookups, respectievelijk.

Lijstelementen moeten van elkaar worden gescheiden door spaties en / of komma's.

Met uitzondering van NIS (YP) netgroup lookups, zijn alle toegangscontroles niet hoofdlettergevoelig.

patronen

De taal voor toegangscontrole implementeert de volgende patronen:

Een reeks die begint met een `. ' karakter. Een hostnaam wordt gekoppeld als de laatste componenten van de naam overeenkomen met het opgegeven patroon. Het patroon `.tue.nl 'komt bijvoorbeeld overeen met de hostnaam` wzv.win.tue.nl'.

Een tekenreeks die eindigt met een `. ' karakter. Een hostadres wordt vergeleken als de eerste numerieke velden overeenkomen met de gegeven reeks. Bijvoorbeeld het patroon `131.155. ' komt overeen met het adres van (bijna) elke host op het netwerk van de Universiteit Eindhoven (131.155.x.x).

Een string die begint met een `@ 'teken wordt behandeld als een NIS (voorheen YP) netgroep naam. Een hostnaam wordt gekoppeld als het een hostlid van de opgegeven netgroup is. Netgroup-overeenkomsten worden niet ondersteund voor daemon-procesnamen of voor clientgebruikersnamen.

Een uitdrukking van de vorm `n.n.n.n / m.m.m.m 'wordt geïnterpreteerd als een` net / masker'-paar. Een IPv4-hostadres wordt gekoppeld als `net 'gelijk is aan de bitsgewijze AND van het adres en het` masker'. Het net- / maskerpatroon `131.155.72.0/255.255.254.0 'komt bijvoorbeeld overeen met elk adres in het bereik` 131.155.72.0' tot en met `131.155.73.255 '.

Een uitdrukking van de vorm `n: n: n: n: n: n: n: n / m 'wordt geïnterpreteerd als een` net / prefixlen'-paar. Een IPv6-hostadres wordt vergeleken als `prefixlen'-bits van` net 'gelijk zijn aan de `prefixlen'-bits van het adres. Het net / prefixlen-patroon `3ffe: 505: 2: 1 :: / 64 'komt bijvoorbeeld overeen met elk adres in het bereik` 3ffe: 505: 2: 1 ::' tot `3ffe: 505: 2: 1: ffff: ffff: ffff: ffff'.

Een string die begint met een `/ 'teken wordt behandeld als een bestandsnaam. Een hostnaam of -adres is gekoppeld als deze overeenkomt met een hostnaam of adrespatroon dat in het genoemde bestand wordt vermeld. Het bestandsformaat is nul of meer regels met nul of meer hostnaam- of adrespatronen gescheiden door witruimten. Een bestandsnaampatroon kan overal worden gebruikt waar een hostnaam of adrespatroon kan worden gebruikt.

Jokertekens `* 'en`?' kan worden gebruikt om hostnamen of IP-adressen met elkaar te matchen. Deze koppelingsmethode kan niet worden gebruikt in combinatie met `net / masker'-aanpassing, hostnaam matching die begint met`. ' of IP-adresovereenkomst die eindigt op `. '.

wildcards

De taal voor toegangsbeheer ondersteunt expliciete jokertekens, waaronder:

'ALLEMAAL'

De universele joker, komt altijd overeen.

'LOCAL'

Komt overeen met elke host waarvan de naam geen puntkarakter bevat.

'ONBEKEND'

Komt overeen met elke gebruiker wiens naam onbekend is en komt overeen met elke host wiens naam of adres is onbekend. Dit patroon moet voorzichtig worden gebruikt: hostnamen kunnen niet beschikbaar zijn vanwege tijdelijke problemen met de naamserver. Een netwerkadres is niet beschikbaar als de software niet weet met welk type netwerk het praat.

'BEKEND'

Komt overeen met elke gebruiker wiens naam bekend is en komt overeen met elke host wiens naam en adres zijn bekend.Dit patroon moet voorzichtig worden gebruikt: hostnamen kunnen niet beschikbaar zijn vanwege tijdelijke problemen met de naamserver. Een netwerkadres is niet beschikbaar als de software niet weet met welk type netwerk het praat.

'PARANOÏDE'

Komt overeen met elke host waarvan de naam niet overeenkomt met zijn adres. Wanneer tcpd is gebouwd met -DPARANOID (standaardmodus), worden aanvragen van dergelijke clients verwijderd voordat de tabellen met toegangsbeheer worden bekeken. Build zonder -DPARANOID als u meer controle wilt over dergelijke verzoeken.

'Exploitanten'

'BEHALVE'

Het beoogde gebruik is van de vorm: `list_1 EXCEPT list_2 '; deze constructie komt overeen met alles dat overeenkomt list_1 tenzij het overeenkomt list_2 . De operator EXCEPT kan worden gebruikt in daemon_lists en in clientlijst. De EXCEPT-operator kan worden genest: als de besturingstaal het gebruik van haakjes toestaat, zou `a UITGEZONDERD b BEHALVE c 'als' (een BEHALVE (b BEHALVE c)) worden ontleed '.

Shell-opdrachten

Als de eerste aangepaste toegangsbeheerregel een shell-opdracht bevat, wordt die opdracht onderworpen aan% -substituties (zie volgende sectie). Het resultaat wordt uitgevoerd door een / Bin / sh kindproces met standaard invoer, uitvoer en fout verbonden met / Dev / null . Geef een `& 'op aan het einde van de opdracht terminal als u niet wilt wachten totdat deze is voltooid.

Shell-opdrachten mogen niet vertrouwen op de PATH-instelling van de inetd. In plaats daarvan zouden ze absolute padnamen moeten gebruiken, of ze zouden moeten beginnen met een expliciete PATH = any statement.

De hosts_options (5) document beschrijft een alternatieve taal die het shell-commandoveld op een andere en incompatibele manier gebruikt.

% Uitbreidingen

De volgende uitbreidingen zijn beschikbaar binnen shell-opdrachten:

% a (% A) - Het clientadres (server) host.

% c - Klantinformatie: user @ host, user @ address, een hostnaam of alleen een adres, afhankelijk van hoeveel informatie beschikbaar is.

% d - De daemon-procesnaam (waarde argv 0).

% h (% H) - De client (server) -hostnaam of -adres, als de hostnaam niet beschikbaar is.

% n (% N) - De client (server) hostnaam (of "onbekend" of "paranoïde").

% p - De daemon proces-ID.

% s - Serverinformatie: daemon @ host, daemon @ -adres of alleen een daemonnaam, afhankelijk van hoeveel informatie beschikbaar is.

% u - De gebruikersnaam van de klant (of "onbekend").

%% - Wordt uitgevouwen tot een% -teken.

Tekens in% -uitbreidingen die de shell kunnen verwarren, worden vervangen door onderstrepingstekens.

Server eindpunt patronen

Gebruik de patronen van het formulier om onderscheid te maken tussen clients op het netwerkadres waarmee ze verbinding maken:

process_name @ host_pattern: client_list …

Patronen zoals deze kunnen worden gebruikt wanneer de machine verschillende internetadressen heeft met verschillende internet-hostnamen. Serviceproviders kunnen deze faciliteit gebruiken om FTP-, GOPHER- of WWW-archieven aan te bieden met internetnamen die mogelijk zelfs bij verschillende organisaties horen. Zie ook de optie `twist 'in het document hosts_opties (5). Sommige systemen (Solaris, FreeBSD) kunnen meer dan één internetadres op één fysieke interface hebben; bij andere systemen moet u mogelijk gebruikmaken van SLIP- of PPP-pseudo-interfaces die zich in een speciale netwerkadresruimte bevinden.

Het host-patroon voldoet aan dezelfde syntaxisregels als hostnamen en adressen in context van clientlijst. Doorgaans is informatie over servereindpunten alleen beschikbaar met verbindingsgerichte services.

Opzoeken van gebruikersnaam voor client

Wanneer de clienthost het RFC 931-protocol of een van zijn nakomelingen (TAP, IDENT, RFC 1413) ondersteunt, kunnen de wrapper-programma's aanvullende informatie over de eigenaar van een verbinding opvragen. Informatie over klantbenaming, indien beschikbaar, wordt samen met de clienthostnaam vastgelegd en kan worden gebruikt om patronen te matchen zoals:

daemon_list: … user_pattern @ host_pattern …

De daemon-wrappers kunnen tijdens het compileren worden geconfigureerd om op regels gebaseerde lookups voor de gebruikersnaam uit te voeren (standaard) of om altijd de clienthost te ondervragen. In het geval van door regels gestuurde opzoekingen met gebruikersnamen, zou de bovenstaande regel ervoor zorgen dat gebruikersnaam alleen wordt opgezocht wanneer beide daemon_list en de host_pattern wedstrijd.

Een gebruikerspatroon heeft dezelfde syntaxis als een daemon-procespatroon, dus dezelfde jokertekens zijn van toepassing (netgroup-lidmaatschap wordt niet ondersteund). Je moet je echter niet laten meeslepen door het opzoeken van gebruikersnaam.

De gebruikersinformatie van de client kan niet worden vertrouwd wanneer deze het meest nodig is, d.w.z. wanneer het clientsysteem is gecompromitteerd. In het algemeen zijn ALLES en (VN) KNOWN de enige patronen met gebruikersnamen die logisch zijn.

Opzoeken van gebruikersnamen is alleen mogelijk met op TCP gebaseerde services en alleen wanneer de clienthost een geschikte daemon uitvoert; in alle andere gevallen is het resultaat "onbekend".

Een bekende UNIX-kernelbug kan leiden tot serviceverlies wanneer zoekacties met gebruikersnamen worden geblokkeerd door een firewall. Het README-document van de wrapper beschrijft een procedure om te achterhalen of uw kernel deze bug bevat.

Opzoeken van gebruikersnamen kan merkbare vertragingen veroorzaken voor niet-UNIX-gebruikers. De standaard time-out voor het opzoeken van de gebruikersnaam is 10 seconden: te kort om het hoofd te bieden aan langzame netwerken, maar lang genoeg om pc-gebruikers te irriteren.

Selectieve zoekopdrachten voor gebruikers kunnen het laatste probleem verlichten. Bijvoorbeeld, een regel als:daemon_list: @pcnetgroup ALL @ ALL

zou overeenkomen met leden van de pc-netgroep zonder het doen van opzoeknamen voor de gebruikersnaam, maar zou het opzoeken van de gebruikersnaam bij alle andere systemen uitvoeren.

Detecting Address Spoofing Attacks

Een fout in de volgnummergenerator van veel TCP / IP-implementaties stelt indringers in staat om zich gemakkelijk als vertrouwde hosts te imiteren en in te breken via bijvoorbeeld de remote shell-service.De IDENT (RFC931 etc.) -service kan worden gebruikt om dergelijke en andere spoofingaanvallen op host-adressen te detecteren.

Alvorens een clientverzoek te accepteren, kunnen de wrappers de IDENT-service gebruiken om erachter te komen dat de client het verzoek helemaal niet heeft verzonden. Wanneer de clienthost de IDENT-service biedt, is een negatief IDENT-zoekopdrachtresultaat (de client komt overeen met `UNKNOWN @ host ') sterk bewijs van een host-spoofing-aanval.

Een positief IDENT-lookup-resultaat (de client komt overeen met 'KNOWN @ host') is minder betrouwbaar. Het is mogelijk voor een indringer om zowel de clientverbinding als de IDENT-lookup te spoofen, maar dat is veel moeilijker dan alleen een clientverbinding vervalsen. Het kan ook zijn dat de IDENT-server van de client liegt.

Opmerking: IDENT-zoekopdrachten werken niet met UDP-services.

Voorbeelden

De taal is flexibel genoeg om met een minimum aan gedoe verschillende soorten toegangscontrolebeleid tot uitdrukking te brengen. Hoewel de taal twee toegangscontroletabellen gebruikt, kunnen de meest algemene beleidsregels worden geïmplementeerd, waarbij een van de tabellen triviaal of zelfs leeg is.

Bij het lezen van de onderstaande voorbeelden is het belangrijk om te weten dat de allow-tabel vóór de ontzeggingstabel gescand is, dat de zoekopdracht wordt beëindigd wanneer een overeenkomst wordt gevonden en dat toegang wordt verleend wanneer helemaal geen overeenkomst wordt gevonden.

De voorbeelden gebruiken host- en domeinnamen. Ze kunnen worden verbeterd door adres- en / of netwerk- / netmaskerinformatie op te nemen, om de impact van tijdelijke nameserverzoekfouten te verminderen.

Meestal gesloten

In dit geval wordt toegang standaard geweigerd. Alleen expliciet geautoriseerde hosts hebben toegang.

Het standaardbeleid (geen toegang) is geïmplementeerd met een trivial deny-bestand:

/etc/hosts.deny: ALL: ALL

Hiermee wordt alle service voor alle hosts geweigerd, tenzij ze toegang hebben gekregen door vermeldingen in het allowbestand.

De expliciet geautoriseerde hosts worden vermeld in het allow-bestand. Bijvoorbeeld:

/etc/hosts.allow: ALL: LOCAL @some_netgroupALL: .foobar.edu BEHALVE terminalserver.foobar.edu

De eerste regel staat toegang toe vanaf hosts in het lokale domein (geen `. 'In de hostnaam) en van leden van de some_netgroup netgroup. De tweede regel geeft toegang aan alle hosts in de foobar.edu domein (let op de leidende stip), met uitzondering van terminalserver.foobar.edu .

Meestal open

Hier wordt standaard toegang verleend; alleen expliciet gespecificeerde hosts worden service geweigerd.

Het standaardbeleid (toegekende toegang) maakt het toestandsbestand overbodig, zodat het kan worden weggelaten. De expliciet niet-geautoriseerde hosts worden vermeld in het deny-bestand. Bijvoorbeeld:

/etc/hosts.deny: ALL: some.host.name, .somdomdomALLEN BEHALVE in.fingerd: other.host.name, .other.domein

De eerste regel ontkent een aantal hosts en domeinen alle services; de tweede regel staat nog steeds vingeraanvragen van andere hosts en domeinen toe.

Booby Traps

Het volgende voorbeeld staat tftp-verzoeken van hosts in het lokale domein toe (let op de leidende stip). Verzoeken van andere hosts worden geweigerd. In plaats van het gevraagde bestand, wordt een vingersonde verzonden naar de aanstootgevende host. Het resultaat wordt naar de superuser gemaild.

/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) &

De opdracht safe_finger wordt geleverd met de tcpd-wrapper en moet op een geschikte plaats worden geïnstalleerd. Het beperkt mogelijke schade aan gegevens die door de externe vingerserver zijn verzonden. Het biedt betere bescherming dan het standaard vingercommando.

De uitbreiding van de% h (clienthost) en% d (servicenaam) -reeksen wordt beschreven in de sectie over shell-opdrachten.

Waarschuwing: Grijp niet in met uw vingerdaemon, tenzij u bent voorbereid op oneindige vingerlussen.

Op netwerkfirewallsystemen kan deze truc nog verder worden uitgevoerd. De typische netwerkfirewall biedt slechts een beperkt aantal services aan de buitenwereld. Alle andere services kunnen worden 'afgeluisterd', net als het bovenstaande tftp-voorbeeld. Het resultaat is een uitstekend systeem voor vroegtijdige waarschuwing.

Zie ook

tcpd (8) tcp / ip daemon wrapper-programma.tcpdchk (8), tcpdmatch (8), testprogramma's.

Belangrijk: Gebruik de man commando ( % man ) om te zien hoe een opdracht wordt gebruikt op uw specifieke computer.