20.5. tcp_wrapper

il tcp_wrapper è una libreria che può essere d'aiuto per proteggere i servizi dagli abusi.

20.5.1. Capacità di filtraggio

Si può utilizzare tcp_wrapper per

20.5.2. Quali programmi usano tcp_wrapper

Sono conosciuti i seguenti:

20.5.3. Utilizzo

tcp_wrapper è controllato da due file chiamati /etc/hosts.allow e /etc/hosts.deny. Per maggiori informazioni si veda

$ man hosts.allow
   

20.5.3.1. Esempio del file /etc/hosts.allow

Ogni servizio che debba essere filtrato in maniera positiva (cioè le cui connnessioni sono accettate) ha bisogno di una riga all'interno di questo file.

sshd:           1.2.3. [3ffe:ffff:100:200::]/64
daytime-stream: 1.2.3. [3ffe:ffff:100:200::]/64
    

Nota: ci sono in giro implementazioni difettose, che utilizzano la seguente errata descrizione di rete IPv6: [3ffe:ffff:100:200::/64]. Si spera che queste versioni vengano corrette al più presto.

20.5.3.2. Esempio del file /etc/hosts.deny

Questo file contiene tutti le voci di filtraggio negativo e di solito dovrebbe negare tutto utilizzando

ALL: ALL
    

Se il nodo è particolarmente sensibile, si può rimpiazzare la linea standard indicata sopra, con quella indicata qui di seguito, ciò però può causare un attacco DoS (a carico del mailer e della directory di spool) nel caso in cui vengano fatte molte connessioni in poco tempo. Un logwatch forse potrebbe essere una soluzione migliore per questo problema.

ALL: ALL: spawn (echo "Attempt from %h %a to %d at `date`" 
 | tee -a /var/log/tcp.deny.log | mail root@localhost)
    

20.5.4. Logging

A seconda della voce presente nel file di configurazione del demone syslog, /etc/syslog.conf, il tcp_wrapper solitamente scrive i log nel file /var/log/secure.

20.5.4.1. Connessione rifiutata

Il rifiuto di una connessione IPv4 verso un servizio daytime, gestito tramite xinetd, produce una riga simile a quella dell'esempio seguente

Jan 2 20:40:44 gate xinetd-ipv6[12346]: FAIL: daytime-stream libwrap
¬ from=::ffff:1.2.3.4
Jan 2 20:32:06 gate xinetd-ipv6[12346]: FAIL: daytime-stream libwrap 
 from=3ffe:ffff:100:200::212:34ff:fe12:3456
    

Il rifiuto di una connessione IPv4 verso un servizio sshd in doppio ascolto, produce una riga simile a quella dell'esempio seguente

Jan 2 20:24:17 gate sshd[12345]: refused connect from ::ffff:1.2.3.4
¬ (::ffff:1.2.3.4)
Jan 2 20:39:33 gate sshd[12345]: refused connect 
 from 3ffe:ffff:100:200::212:34ff:fe12:3456
¬ (3ffe:ffff:100:200::212:34ff:fe12:3456)
    

20.5.4.2. Connessione permessa

L'accettazione di una connessione IPv4 verso un servizio daytime, gestito tramite xinetd, produce una riga simile a quella del seguente esempio

Jan 2 20:37:50 gate xinetd-ipv6[12346]: START: daytime-stream pid=0
¬ from=::ffff:1.2.3.4 
Jan 2 20:37:56 gate xinetd-ipv6[12346]: START: daytime-stream pid=0 
 from=3ffe:ffff:100:200::212:34ff:fe12:3456
    

L'accettazione di una connessione IPv4, verso un servizio sshd in doppio ascolto, produce una riga simile a quella del seguente esempio

Jan 2 20:43:10 gate sshd[21975]: Accepted password for user from ::ffff:1.2.3.4
¬ port 33381 ssh2
Jan 2 20:42:19 gate sshd[12345]: Accepted password for user 
 from 3ffe:ffff:100:200::212:34ff:fe12:3456 port 33380 ssh2