Hosts.deny - Comando de Linux - Comando Unix

NOM

hosts_access - format dels fitxers de control d'accés de host

DESCRIPCIÓ

Aquesta pàgina de manual descriu un llenguatge de control d'accés senzill que es basa en el client (nom de l'amfitrió / adreça, nom d'usuari) i el servidor (nom del procés, nom del / nom de l'amfitrió) patrons. Es donen exemples al final. Es recomana al lector impacient que s'adapti a la secció EXEMPLES per obtenir una ràpida introducció.

En el document hosts_options (5) es descriu una versió ampliada del llenguatge de control d'accés. Les extensions estan activades durant el temps de construcció del programa mitjançant la creació de -DPROCESS_OPTIONS.

En el text següent, el dimoni és el nom del procés d'un procés de dimoni de xarxa , i el client és el nom i / o l'adreça del servei sol·licitant d'un host. Els noms dels processos del dimoni de xarxa s'especifiquen en el fitxer de configuració inetd.

ARXIUS DE CONTROL D'ACCÉS

El programari de control d'accés consulta dos fitxers . La cerca s'atura al primer partit:

*

L'accés es concedirà quan un parell (dimoni, client) coincideixi amb una entrada al fitxer /etc/hosts.allow .

*

En cas contrari, es denega l'accés quan un parell ( daemon , client) coincideixi amb una entrada al fitxer /etc/hosts.deny .

*

En cas contrari, es concedirà accés.

Es tracta d'un fitxer de control d'accés no existent com si fos un fitxer buit . D'aquesta manera, el control d'accés es pot desactivar sense proporcionar fitxers de control d'accés.

NORMES DE CONTROL D'ACCÉS

Cada fitxer de control d'accés consta de zero o més línies de text. Aquestes línies es processen per ordre d'aparició. La cerca finalitza quan es troba una coincidència.

*

S'ignora un caràcter de línia nova quan el precedeix un caràcter de barra invertida. Això us permet trencar línies llargues perquè siguin més fàcils d'editar.

*

Les línies o línies en blanc que comencen amb un caràcter «#» s'ignoren. Això us permet inserir comentaris i espais en blanc perquè les taules siguin més fàcils de llegir.

*

Totes les altres línies han de satisfer el següent format, les coses entre [] seran opcionals:


daemon_list: client_list [: shell_command]

daemon_list és una llista d'un o més noms del procés de dimoni (valors argv [0]) o comodins (vegeu a continuació).

client_list és una llista d'un o més noms d' amfitrió , adreces d'amfitrions, patrons o comodins (vegeu a continuació) que es compararan amb el nom o l'adreça de l'amfitrió del client.

Les dades més complexes del dimoni @ host i user @ host s'expliquen a les seccions sobre els patrons de l'extrem de servidor i a les cerques de noms d'usuari del client, respectivament.

Els elements de la llista s'han de separar per espais en blanc i / o comes.

A excepció de les cerques de grup de xarxa NIS (YP), totes les comprovacions de control d'accés són insensibles a majúscules i minúscules.

PATRONES

El llenguatge de control d'accés implementa els següents patrons:

*

Una cadena que comença amb un `. ' personatge. Un nom de host coincideix si els últims components del seu nom coincideixen amb el patró especificat. Per exemple, el patró `.tue.nl 'coincideix amb el nom d'amfitrió` wzv.win.tue.nl'.

*

Una cadena que finalitza amb un `. ' personatge. Una adreça host coincideix si els seus primers camps numèrics coincideixen amb la cadena donada. Per exemple, el patró `131.155. ' coincideix amb l'adreça de (gairebé) tots els amfitrions de la xarxa de la Universitat d'Eindhoven (131.155.xx).

*

Una cadena que comença amb un caràcter `@ 'es tracta com un nom del grup de xarxa NIS (anteriorment YP). Un nom d'amfitrió coincideix si és un membre amfitrió del grup de xarxa especificat. Les coincidències de Netgroup no són compatibles amb els noms dels processos de dimoni ni per als noms d'usuaris del client.

*

Una expressió del formulari `nnnn / mmmm 's'interpreta com a parell` net / mask'. Una adreça de host IPv4 coincideix si `net 'és igual a la AND bit a bit de l'adreça i la' màscara '. Per exemple, el patró net / màscara '131.155.72.0/255.255.254.0' coincideix amb totes les adreces del rang "131.155.72.0" a través de '131.155.73.255'.

*

Una expressió del formulari `[n: n: n: n: n: n: n: n] / m 's'interpreta com un parell' [net] / prefix '. Una adreça de host IPv6 coincideix si els bits 'prefixlen' de `net 'són iguals als bits' prefixlen 'de l'adreça. Per exemple, el patró [net] / prefixlen `[3ffe: 505: 2: 1 ::] / 64 'coincideix amb totes les adreces del rang` 3ffe: 505: 2: 1 ::' a través de `3ffe: 505: 2: 1: ffff: ffff: ffff: ffff '.

*

Una cadena que comença amb un caràcter `/ 'es tracta com un nom de fitxer. El nom o l'adreça d'un amfitrió coincideixen si coincideix amb qualsevol nom d'amfitrió o patró d'adreça que figuren en el fitxer amb nom. El format del fitxer és zero o més línies amb zero o més nom d'amfitrió o patrons d'adreça separats per espais en blanc. Es pot utilitzar un patró de nom de fitxer en qualsevol lloc on es pot utilitzar un nom de host o un patró d'adreça.

*

Els comodins `* 'i`?' es pot utilitzar per combinar noms d'amfitrió o adreces IP. Aquest mètode de concordança no es pot utilitzar juntament amb la combinació `net / mask ', que coincideix amb el nom del servidor des del principi amb`.' o l'adreça IP que coincideix amb la finalització amb `. '.

WILDCARDS

L'idioma de control d'accés admet comodins explícits:

TOTS

El comodí universal, sempre coincideix.

LOCAL

Coincideix amb qualsevol host el nom no contingui un caràcter de punt.

Desconegut

Coincideix amb qualsevol usuari el nom no es coneix i coincideix amb qualsevol host que tingui un nom o una adreça desconegudes. Aquest patró s'hauria d'utilitzar amb compte: els noms d'amfitrió poden no estar disponibles a causa de problemes del servidor de noms temporals. L'adreça de xarxa no estarà disponible quan el programari no pugui determinar quin tipus de xarxa parla.

Conegut

Coincideix amb qualsevol usuari que tingui el nom conegut i que coincideixi amb qualsevol host que tingui el nom i l' adreça coneguts. Aquest patró s'hauria d'utilitzar amb compte: els noms d'amfitrió poden no estar disponibles a causa de problemes del servidor de noms temporals. L'adreça de xarxa no estarà disponible quan el programari no pugui determinar quin tipus de xarxa parla.

PARANOID

Coincideix amb qualsevol host que no coincideixi amb la seva adreça. Quan tcpd es construeix amb -DPARANOID (mode predeterminat), deixa caure les sol·licituds d'aquests clients fins i tot abans de mirar les taules de control d'accés. Creeu sense -DPARANOID quan vulgueu més control sobre aquestes sol·licituds.

OPERADORS

EXCEPTE

L'ús previst és del formulari: `list_1 EXCEPT list_2 '; aquesta construcció coincideix amb qualsevol cosa que coincideixi amb la llista_1 tret que coincideixi amb la llista_2 . L'operador EXCEPT es pot utilitzar a les llistes de demon i a les llistes de client. L'operador EXCEPT es pot anidar: si el llenguatge de control permetria l'ús de parèntesis, `a EXCEPTE b EXCEPTE c 'analizaria com' (un EXCEPTE (b EXCEPTE c)) '.

SHELL COMMANDS

Si la regla de control d'accés de primera coincidència conté un comandament de shell, aquesta ordre està subjecta a% substitucions (vegeu la següent secció). El resultat és executat per un procés secundari a / bin / sh amb entrada estàndard, sortida i error connectats a / dev / null . Especifiqueu un `& 'al final de l'ordre si no voleu esperar fins que s'hagi completat.

Les ordres Shell no han de confiar en la configuració PATH de la inetd. En el seu lloc, han d'utilitzar noms de ruta absoluts, o han de començar amb una declaració PATH = expressa qualsevol.

El document hosts_options (5) descriu un llenguatge alternatiu que utilitza el camp d'ordres shell d'una manera diferent i incompatible.

% EXPANSIONS

Les següents expansions estan disponibles en comandaments de shell:

% a (% A)

Adreça del host del client (servidor).

% c

Informació del client: usuari @ host, adreça d'usuari @, nom d'amfitrió o només una adreça, depenent de quanta informació estigui disponible.

% d

Nom del procés del dimoni (valor argv [0]).

% h (% H)

El nom o l'adreça del servidor del client (servidor), si el nom d'amfitrió no està disponible.

% n (% N)

El nom del servidor client (servidor) (o "desconegut" o "paranoic").

% p

L'identificador del procés del dimoni

% s

Informació del servidor: dimoni @ host, dimoni @ adreça o només un nom del dimoni, segons la quantitat d'informació disponible.

% u

El nom d'usuari del client (o "desconegut").

%%

S'expandeix a un sol caràcter `% '.

Els caràcters en% d'expansions que poden confondre l'intèrpret d'ordres es reemplacen per guions baixos.

PATRONITZADORS PER A SERVER ENDPOINT

Per distingir els clients de l'adreça de xarxa amb la qual es connecten, utilitzeu els patrons del formulari:


process_name @ host_pattern: client_list ...

Els patrons d'aquest tipus es poden utilitzar quan la màquina té diferents adreces d'Internet amb diferents noms d'amfitrió d'Internet. Els proveïdors de serveis poden utilitzar aquesta instal·lació per oferir arxius FTP, GOPHER o WWW amb noms d'Internet que fins i tot poden pertànyer a diferents organitzacions. Vegeu també l'opció `twist 'al document hosts_options (5). Alguns sistemes (Solaris, FreeBSD) poden tenir més d'una adreça d'Internet en una interfície física; amb altres sistemes, és possible que hagi de recórrer a les pseudo interfícies SLIP o PPP que viuen en un espai dedicat d'adreces de xarxa.

El host_pattern obeeix les mateixes regles de sintaxi que els noms i adreces d'amfitrió en el context de client_list. Normalment, la informació del punt final del servidor només està disponible amb serveis orientats a la connexió.

CLIENT USERNAME LOOKUP

Quan l'amfitrió del client admet el protocol RFC 931 o un dels seus descendents (TAP, IDENT, RFC 1413), els programes d'embolcall poden obtenir informació addicional sobre el propietari d'una connexió. La informació del nom d'usuari del client, quan està disponible, es registra juntament amb el nom de l'amfitrió del client, i es pot utilitzar per combinar patrons com:


daemon_list: ... user_pattern @ host_pattern ...

Els contenidors del dimoni es poden configurar en temps de compilació per realitzar cerques de noms d'usuari basades en regles (predeterminades) o per interrogar sempre el host del client. En el cas de les cerques de noms d'usuari basades en regles, la regla anterior provocaria la cerca de noms d'usuari només quan coincideixin tant la llista daemon_list com la host_pattern .

Un patró d'usuari té la mateixa sintaxi que un patró de procés del dimoni, de manera que s'apliquen els comodins (la pertinença al grup de xarxa no és compatible). Tanmateix, no s'ha de deixar portar les cerques de nom d'usuari.

*

La informació del nom d'usuari del client no es pot confiar quan més es necessita, és a dir, quan s'ha compromès el sistema del client. En general, ALL i (UN) KNOWN són els únics patrons de noms d'usuari que tenen sentit.

*

Les cerques de noms d'usuari només són possibles amb serveis basats en TCP, i només quan l'amfitrió del client executa un dimoni adequat; en tots els altres casos el resultat és "desconegut".

*

Un conegut error del nucli UNIX pot causar pèrdua de servei quan un tallafocs bloqueja les cerques d'un nom d'usuari. El document README del contenidor descriu un procediment per esbrinar si el vostre nucli té aquest error.

*

Les cerques d'un nom d'usuari poden causar retards importants als usuaris que no siguin UNIX. El temps d'espera predeterminat per a les cerques de noms d'usuari és de 10 segons: massa curt per fer front a xarxes lentes, però el temps suficient per irritar els usuaris de PC.

Les cerques selectives de noms d'usuari poden alleujar l'últim problema. Per exemple, una regla com:


daemon_list: @pcnetgroup ALL @ ALL

coincidiria amb membres del grup net de la pc sense fer cerques de noms d'usuari, sinó que realitzaria cerques de noms d'usuari amb tots els altres sistemes.

DETECCIÓ DE L'ADREÇA DE L'ADREÇA

Un defecte en el generador de número de seqüència de moltes implementacions TCP / IP permet als intrusos suplantar fàcilment hosts confiables i interrompre, per exemple, el servei de shell remot. El servei IDENT (RFC931, etc.) es pot utilitzar per detectar atacs de falsificació d'adreces d'aquest i d'altres hosts.

Abans d'acceptar una sol·licitud de client, els contenidors poden utilitzar el servei IDENT per saber que el client no ha enviat la sol·licitud en absolut. Quan el proveïdor del client proporciona el servei IDENT, un resultat negatiu de la recerca d'IDENT (el client coincideix amb 'UNKNOWN @ host') és una prova sòlida d'un atac de falsificació d'host.

Un resultat de cerca d'IDENT positiu (el client coincideix amb 'KNOWN @ host') és menys confiable. És possible que un intrús pugui parlar tant de la connexió del client com de la recerca d'IDENT, tot i que fer-ho és molt més difícil que la spoofing només amb una connexió del client. També pot ser que el servidor IDENT del client estigui mentint.

Nota: les cerques IDENT no funcionen amb els serveis UDP.

EXEMPLES

El llenguatge és prou flexible perquè es puguin expressar diferents tipus de polítiques de control d'accés amb un mínim de confusió. Tot i que l'idioma utilitza dues taules de control d'accés, es poden implementar les polítiques més comunes amb una de les taules trivials o fins i tot buides.

Quan llegeix els exemples a continuació, és important adonar-se que la taula de permisos s'escaneja abans de la taula negativa, que la recerca finalitza quan es troba una coincidència i que es dóna accés quan no es troba cap coincidència.

Els exemples utilitzen noms d'amfitrió i de domini. Es poden millorar incloent la informació d'adreça i / o xarxa / màscara de xarxa, per reduir l'impacte de les fallades en la cerca del servidor de noms temporals.

TANCAT MÉS

En aquest cas, l'accés es denega de manera predeterminada. Només es permet l'accés a hosts explícitament autoritzats.

La política predeterminada (sense accés) s'implementa amb un fitxer de denegació trivial:

/etc/hosts.deny: ALL: ALL

Això denega tot el servei a tots els hosts, tret que se'ls permeti l'accés per les entrades al fitxer de permisos.

Els amfitrions explícitament autoritzats s'enumeren al fitxer de permisos. Per exemple:

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

La primera regla permet l'accés des d'amfitrions en el domini local (no `. 'Al nom de l'amfitrió) i de membres del grup de xarxa some_netgroup . La segona regla permet l'accés de tots els hosts del domini foobar.edu (observeu el punt principal), a excepció de terminalserver.foobar.edu .

MÉS OBERT

Aquí, l'accés es dóna de manera predeterminada; només es rebutgen els servidors especificats explícitament.

La política predeterminada (accés concedit) fa que el fitxer permès sigui redundant perquè es pugui ometre. Els amfitrions explícitament no autoritzats s'enumeren al fitxer deny. Per exemple:

/etc/hosts.deny: ALL: some.host.name, .some.domain
TOTS EXCEPTE in.fingerd: other.host.name, .other.domain

La primera regla nega a alguns hosts i dominis tots els serveis; la segona regla encara permet sol·licituds de dits d'altres hosts i dominis.

TRAPS BOOBY

El següent exemple permet les sol·licituds de tftp dels hosts en el domini local (observeu el punt principal). Les sol·licituds de qualsevol altre host són denegades. En lloc del fitxer sol · licitat, s'envia una sonda de dit al servidor ofensiu. El resultat s'envia al superusuari.

/etc/hosts.allow:

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

L'ordre safe_finger ve amb el contenidor tcpd i s'ha d'instal·lar en un lloc adequat. Limita els possibles danys de les dades enviades pel servidor del dit remot. Proporciona una millor protecció que l'ordre de dit estàndard.

L'extensió de les seqüències% h (client host) i% d (nom del servei) es descriu a la secció dels comandaments de shell.

Advertència: no tregui el dit del dit, tret que estigui preparat per a bucles infinits.

En els sistemes de tallafocs de la xarxa, aquest truc es pot seguir encara més. El servidor de seguretat típic de la xarxa només proporciona un conjunt limitat de serveis al món exterior. Tots els altres serveis poden ser "bugged" igual que l'exemple anterior tftp. El resultat és un excel·lent sistema d'alerta primerenca.

Important: utilitzeu l'ordre man ( % home ) per veure com s'utilitza una comanda a l'ordinador en particular.

Articles relacionats