Product SiteDocumentation Site

4.12. Usare i tcpwrapper

TCP wrappers were developed when there were no real packet filters available and access control was needed. Nevertheless, they're still very interesting and useful. The TCP wrappers allow you to allow or deny a service for a host or a domain and define a default allow or deny rule (all performed on the application level). If you want more information take a look at hosts_access(5) manual page.
Molti servizi installati in Debian vengono:
  • lanciati mediante un servizio tcpwrapper (tcpd).
  • compilati con il supporto a libwrapper integrato.
In un caso, per i servizi configurati mediante /etc/inetd.conf (inclusi telnet, ftp, netbios, swat e finger) il file di configurazione esegue prima /usr/sbin/tcpd. Nell'altro, anche se il servizio viene lanciato dal superdemone inetd, il supporto per le regole dei tcp wrapper può essere compilato al suo interno. In Debian, tra i servizi compilati con il supporto ai tcp wrapper ci sono ssh, portmap, in.talk, rpc.statd, rpc.mountd, gdm, oaf (il demone di attivazione GNOME), nessus e molti altri.
To see which packages use tcpwrappers [25] try:
  $ apt-cache rdepends libwrap0
Occorre tenerne conto quando usate tcpdchk (molto utile per controllare le regole e la sintassi del file di configurazione del TCP wrapper). I servizi compilati col supporto alla libreria wrapper possono essere aggiunti ai file hosts.deny e hosts.allow ma tcpdchk avviserà che non è in grado di trovare questi servizi, perché li cerca in /etc/inetd.conf (la pagina man non è molto chiara su questo punto).
Now, here comes a small trick, and probably the smallest intrusion detection system available. In general, you should have a decent firewall policy as a first line, and tcp wrappers as the second line of defense. One little trick is to set up a SPAWN [26] command in /etc/hosts.deny that sends mail to root whenever a denied service triggers wrappers:
  ALL: ALL: SPAWN ( \
    echo -e "\n\
    TCP Wrappers\: Connection refused\n\
    By\: $(uname -n)\n\
    Process\: %d (pid %p)\n\
    User\: %u\n\
    Host\: %c\n\
    Date\: $(date)\n\
  " | /usr/bin/mail -s "Connection to %d blocked" root) &
Attenzione: L'esempio sopra è esposto a attacchi di tipo DoS stabilendo molte connessioni in un breve periodo di tempo. Molte email causano un elevato I/O di file spedendo solo pochi pacchetti.


[25] On older Debian releases you might need to do this:
  $ apt-cache showpkg libwrap0 | egrep '^[[:space:]]' | sort -u | \
        sed 's/,libwrap0$//;s/^[[:space:]]\+//'
[26] be sure to use uppercase here since spawn will not work