Accounting sul traffico con IPTables

Attraverso IPTables abbiamo la possibilità di monitorare il traffico: ad esempio, se il nostro server si occupa di gestire più di un servizio (ad esempio se funge sia da web server che da mail server), ci potrebbe tornare utile sapere quanto traffico è consumato per il web e quanto per la posta elettronica.

Attraverso questo semplice script, creeremo le regole IPTables necessarie per creare  delle tabelle “copia” delle tabelle INPUT e OUTPUT e, quindi, inseriremo le regole per monitorare il traffico di ogni porta.

### creo i nuovi set ###
/sbin/iptables -N INET_IN_PORT
/sbin/iptables -N INET_OUT_PORT
### li collego (usare FORWARD in caso di gateway) ###
/sbin/iptables -A INPUT -j INET_IN_PORT
/sbin/iptables -A OUTPUT -j INET_OUT_PORT
### setto e regole per INPUT ###
/sbin/iptables -A INET_IN_PORT -i eth1 -p tcp --dport 80
/sbin/iptables -A INET_IN_PORT -i eth1 -p tcp --dport 443
/sbin/iptables -A INET_IN_PORT -i eth1 -p tcp --dport 25
/sbin/iptables -A INET_IN_PORT -i eth1 -p tcp --dport 143
/sbin/iptables -A INET_IN_PORT -i eth1 -p tcp --dport 53
/sbin/iptables -A INET_IN_PORT -i eth1 -p udp --dport 53
/sbin/iptables -A INET_IN_PORT -i eth1 -p tcp --dport 22
### setto e regole per OUTPUT ###
/sbin/iptables -A INET_OUT_PORT -o eth1 -p tcp --sport 80
/sbin/iptables -A INET_OUT_PORT -o eth1 -p tcp --sport 443
/sbin/iptables -A INET_OUT_PORT -o eth1 -p tcp --sport 25
/sbin/iptables -A INET_OUT_PORT -o eth1 -p tcp --sport 143
/sbin/iptables -A INET_OUT_PORT -o eth1 -p tcp --sport 53
/sbin/iptables -A INET_OUT_PORT -o eth1 -p udp --sport 53
/sbin/iptables -A INET_OUT_PORT -o eth1 -p tcp --sport 22
/sbin/service iptables save

Una volta inserite le regole, possiamo vedere il traffico registrato con:

iptables -L INET_IN_PORT -v -n
iptables -L INET_OUT_PORT -v -n

Se vogliamo monitorare in tempo reale cosa succede, possiamo usare il comando watch -n 1:

watch -n 1 iptables -L INET_IN_PORT -v -n
watch -n 1 iptables -L INET_OUT_PORT -v -n