Introduzione

I file hosts.allow e hosts.deny, situati in /etc controllano i TCP Wrappers, un insieme di funzioni utili per gestire gli accessi al vostro sistema dall'esterno.

Il file hosts.allow, elenca le regole che permettono l'accesso.
Il file hosts.deny elenca le regole che non permettono l'accesso.

Il sistema controllerà prima hosts.allow, se una una determinata regola corrisponde all'azione in entrata, l'accesso è garantito e il controllo termina, altrimenti il sistema controllerà le regole all'interno del file hosts.deny, se una regola al suo interno corrisponde l'accesso sarà negato. Di default l'accesso è garantito.

Configurazione

Generalmente è consigliato negare tutti gli accessi in hosts.deny e consentire solo quelli voluti in hosts.allow.

Punti da ricordare:

  • Puoi avere una sola regola per servizio nei file hosts.allow e hosts.deny.
  • Qualsiasi modifica ai file hosts.allow e hosts.deny ha effetto immediato.
  • L'ultima riga nei file hosts.allow e hosts.deny deve essere un nuovo carattere di riga. Oppure la regola fallirà.

Sintassi della regola generale per entrambi i file:

daemon : client [:opzione1:opzione2:…]

Esempi:
Per negare tutte le connessioni in entrata in hosts.deny:

ALL: ALL

Per consentire l'accesso tramite SSH verso esempio.com e negare l'accesso verso tutti gli altri, in hosts.allow:

sshd : .esempio.com

E in hosts.deny:

sshd: ALL

Negare l'accesso FTP al dominio esempio.com e agli host nella rete 192.168.1.0.
Nel file hosts.deny:

vsftpd : 192.168.1. , .esempio.com

Nella regola seguente, spawn scrive un messaggio nel file di log vsftpd ogni volta che la regola corrisponde:

vsftpd : 192.168.1. , .esempio.com : spawn /bin/echo  `/bin/date` access denied >> /var/log/vsftpd.log : deny

È possibile utilizzare l'opzione spawn per inviare posta all'amministratore.

Wildcards

È possibile utilizzare le Wildcards nella sezione client della regola per classificare ampiamente un gruppo di host. Questi sono i caratteri jolly validi che possono essere utilizzati.

ALL – Corrisponde a tutto
LOCAL – Corrisponde a qualsiasi host che non contiene un punto (.), come localhost.
KNOWN – Corrisponde a qualsiasi host in cui sono noti l'hostname e gli indirizzi host o dove l'utente è conosciuto.
UNKNOWN – Corrisponde a qualsiasi host in cui il nome host o l'indirizzo host sono sconosciuti o in cui l'utente è sconosciuto.
PARANOID – Corrisponde a qualsiasi host in cui il nome host non corrisponde all'indirizzo host.

Alcuni esempi.
Corrisponde a tutti gli host della rete 112.12.0.0. Nota il punto (.) Alla fine della regola:

ALL : 112.12.

Nella regola è possibile utilizzare l'indirizzo IP / maschera di rete.

ALL : 192.168.0.1/255.255.255.0

Se l'elenco dei client inizia con una barra (/), viene considerato come un nome file. Nella regola seguente, i wrapper TCP cercano il file sshd.deny per tutte le connessioni SSH.

sshd : /etc/sshd.deny

Consentirà la connessione ssh solo per la macchina con l'indirizzo IP 192.161.0.11 e bloccherà tutte le altre connessioni.

sshd : ALL EXCEPT 192.161.0.11

È possibile utilizzare le opzioni per consentire o negare l'autorizzazione o la limitazione per singolo client in uno dei file hosts.allow e hosts.deny

in.telnetd : 192.168.1.1 : deny
in.telnetd : 192.168.1.2 : allow

Comandi della shell

Come accennato in precedenza, è possibile associare delle regole a determinati comandi della shell utilizzando le due opzioni seguenti.

spawn - Questa opzione avvia un comando shell come processo figlio.
Ad esempio:

sshd : 192.168.5.5 : spawn /bin/echo `/bin/date` from %h >> /var/log/ssh.log : deny

Ogni volta che la regola è soddisfatta, la data corrente e il nome host del client% h vengono aggiunti al file ssh.log.

twist - Questa è un'opzione che sostituisce la richiesta con il comando specificato. Ad esempio, se si desidera inviare al client il tentativo di connettersi tramite ssh alla propria macchina, a cui è proibito l'accesso a SSH, è possibile utilizzare questa opzione.

sshd : esempio1.com : twist /bin/echo “Non puoi accedere a questo servizio” : deny

Con spawn e twist, è possibile utilizzare una serie di espressioni:
%a - L'indirizzo IP del client.
%A - L'indirizzo IP del server.
%c - Fornisce una varietà di informazioni sul cliente, come nome utente e nome host, o il nome utente e l'indirizzo IP.
%d - Il nome del processo daemon.
%h - Il nome host del client (o l'indirizzo IP, se il nome host non è disponibile).
%H - Il nome host del server (o l'indirizzo IP, se il nome host non è disponibile).
%n - Il nome host del client. Se non disponibile, viene stampato "unknow". Se il nome host e l'indirizzo host del client non corrispondono, viene stampato "paranoid".
%N - Il nome host del server. Se non disponibile, viene stampato "unknow". Se il nome host e l'indirizzo host del server non corrispondono, viene stampato "paranoid".
%p - L'ID del processo daemon.
%s - Vari tipi di informazioni sul server, come il processo daemon e l'host o l'indirizzo IP del server.
%u - Il nome utente del cliente. Se non disponibile, viene stampato "unknow".

La configurazione dei file hosts.allow e hosts.deny è terminata