I wrapper TCP forniscono il filtraggio del traffico di base del traffico di rete in entrata. L'accesso ai servizi di rete "avvolti" in esecuzione su un server Linux da altri sistemi può essere consentito o negato. Un servizio TCP avvolto è uno che è stato compilato sulla libreria libwrap.a. Utilizzare il comando ldd per determinare se un servizio di rete è collegato a libwrap.a. L'esempio seguente determina il nome del percorso assoluto del servizio sshd, quindi elenca le librerie condivise collegate al servizio sshd, utilizzando il comando grep per cercare la libreria libwrap:
# which sshd /sbin/sshd
# ldd /sbin/sshd | grep libwrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f1fea580000)
File di configurazione
I wrapper TCP si basano su due file di configurazione come base per il controllo dell'accesso:
- /etc/hosts.allow
- /etc/hosts.deny
Quando un client tenta di connettersi a un servizio di rete su un sistema remoto, questi file vengono utilizzati per determinare se l'accesso del client è consentito o negato. Utilizzare /etc/hosts.allow e /etc/hosts.deny per definire regole che consentono o negano selettivamente ai client l'accesso ai daemon del server sul sistema locale. Il formato delle voci è il seguente per entrambi i file:
daemon_list : client_list [: command]
Segue una descrizione di ogni campo:
- lista_demoni :un elenco di demoni separati da virgole o una parola chiave ALL per tutti i demoni
- elenco_clienti :un elenco di clienti separati da virgole o parola chiave ALL per tutti i clienti
- comando :Un comando facoltativo che viene eseguito quando un client tenta di accedere a un demone del server
Per consentire l'accesso del client, aggiungere il nome host del client o l'indirizzo IP in /etc/hosts.allow. Per negare l'accesso al client, aggiungi il suo nome o indirizzo IP in /etc/hosts.deny.
Il file /etc/hosts.allow viene letto per primo e viene letto dall'alto verso il basso. Se una coppia demone-client corrisponde alla prima riga del file, l'accesso è concesso. Se la riga non corrisponde, viene letta la riga successiva e viene eseguito lo stesso controllo. Se tutte le righe vengono lette e non si verifica alcuna corrispondenza, viene letto il file /etc/hosts.deny, a partire dall'inizio. Se viene trovata una corrispondenza di coppia daemon-client nel file di negazione, l'accesso viene negato. Se non vengono trovate regole per la coppia demone-client in nessuno dei due file, o se nessuno dei due file esiste, viene concesso l'accesso al servizio.
Poiché le regole di accesso in hosts.allow vengono applicate per prime, hanno la precedenza sulle regole specificate in hosts.deny. Pertanto, se l'accesso a un servizio è consentito in hosts.allow, una regola che nega l'accesso allo stesso servizio in hosts.deny viene ignorata. Di seguito sono riportati alcuni esempi di voci nel file /etc/hosts.allow:
1. Per consentire ai client sulla sottorete 192.168.2 di accedere a FTP (il demone è vsftpd):
# vi /etc/hosts.allow vsftpd : 192.168.2.*
2. Per consentire a tutti i client di accedere a ssh, scp e sftp (il demone è sshd):
# vi /etc/hosts.allow sshd : ALL
3. Inserire la seguente voce nel file /etc/hosts.deny per negare il servizio FTP a tutti i client eccetto la sottorete 192.168.2.* (questo presuppone che la voce precedente di vsftpd:192.168.2.* esista in /etc/hosts. consentire):
# vi /etc/hosts.deny vsftpd : ALL
4. Utilizzare la sintassi .domain per rappresentare qualsiasi host di un determinato dominio. L'esempio seguente consente connessioni a vsftpd da qualsiasi host nel dominio example.com (se la voce è in /etc/hosts.allow):
# vi /etc/hosts.allow vsftpd : .example.com
Se questa voce appare in /etc/hosts.deny, la connessione è negata.
Opzioni di comando TCP Wrapper (hosts.allow e hosts.deny) in Linux