il tcp_wrapper è una libreria che può essere d'aiuto per proteggere i servizi dagli abusi.
Si può utilizzare tcp_wrapper per
Filtrare in base all'indirizzo sorgente (IPv4 o IPv6)
Filtrare in base all'utente (richiede un demone ident in esecuzione sul client)
Sono conosciuti i seguenti:
Ogni servizio chiamato da xinetd (se xinetd viene compilato per utilizzare la libreria tcp_wrapper)
sshd (se compilato per utilizzare tcp_wrapper)
tcp_wrapper è controllato da due file chiamati /etc/hosts.allow e /etc/hosts.deny. Per maggiori informazioni si veda
$ man 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.
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) |
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.
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) |
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 |