Clark's Home page

Tecnicismi vari di un Sysadmin Linux ma anche qualcosa della sua vita

Loggare iptables in un file diverso da syslog —

I log di iptables sono notoriamente tanto utili quanto invasivi, ci sono diversi modi di raccogliere i log e anche un demone apposta che si chiama ulogd, sino ad arrivare a un DB mysq per la raccolta,personalmente preferisco usare il vecchio metodo del file nella directory /var/log.
Si tratta di istruire il sistema a salvare in un file diverso da syslog, e in questo ci viene incontro il flag –log-prefix di iptables, i pasi da compiere sono tre, il primo è appunto istruire il nostro sistema a mettere un identificativo dei log di ipatbles e questo lo fa lo script di firewall che diventa una cosa del genere nella sezione di log,
$IPT -A FORWARD -p tcp -j LOG –log-level info –log-prefix “tcp forward ”
$IPT -A FORWARD -p udp -j LOG –log-level info –log-prefix “udp forward ”
$IPT -A OUTPUT -o $INTIF -p tcp -j LOG –log-level info –log-prefix “tcp output ”
$IPT -A OUTPUT -o $INTIF -p udp -j LOG –log-level info –log-prefix “udp output ”
$IPT -A INPUT -i $EXTIF -p tcp -m limit –limit 1/s –dport 0:65535 -j LOG –log-level \ info –log-prefix “tcp connection: ”
$IPT -A INPUT -i $EXTIF -p udp -m limit –limit 1/s –dport 0:65535 -j LOG –log-level \ info –log-prefix “udp connection: ”
e a seguire andiamo a dire al demone di loggin cosa fare con quegli identificativi, quindi si crea nella directory /etc/rsyslog.d un file iptables.conf che contiene queste righe:
:msg, startswith, “tcp connection: ” -/var/log/iptables.log
& STOP
:msg, startswith, “udp connection: ” -/var/log/iptables.log
& STOP
:msg, startswith, “tcp forward: ” -/var/log/iptables.log
& STOP
:msg, startswith, “udp forward: ” -/var/log/iptables.log
& STOP
:msg, startswith, “tcp output: ” -/var/log/iptables.log
& STOP
:msg, startswith, “udp output: ” -/var/log/iptables.log
& STOP

Al fine di evitare di avere un file di dimensioni esagerate istruiamo logrotate a creare un file per giorno e a tenere i log di una settimana, nella directory logrotate.d creiamo uno script iptables che contiene:

/var/log/iptables.log
{
	rotate 7
	daily
	missingok
	notifempty
	delaycompress
	compress
	postrotate
		invoke-rc.d rsyslog rotate > /dev/null
	endscript
}

e con questo abbiamo finito, restartiamo rsyslog e lo script di firewall e nella directory /var/log si genera il file iptables.log.

 

Addendum:

Visto che come al solito su una macchina funziona in un modo e sulla gemella non c’è verso di farla andare neanche piangendo in cinese mandarino antico,  la dizione:
:msg, startswith, “tcp connection: ” -/var/log/iptables.log
& STOP
può diventare (deve se volete che funzioni)

:msg, contains, “tcp connection: ” -/var/log/iptables.log
& STOP

e di conseguenza anche le altre righe.


Categorised as: firewall | Linux | Networking | Work

Comments are disabled on this post


Comments are closed.


Hide picture