====== Ubuntu - iptables - Log firewall messages to a separate file ======
Issue the following command:
sudo vi /etc/rsyslog.d/50-default.conf
and comment out the following lines near the bottom of the file by placing a hash # mark in front:
daemon.*;mail.*;\
news.err;\
*.=debug;*.=info;\
*.=notice;*.=warn |/dev/xconsole
to
#daemon.*;mail.*;\
# news.err;\
# *.=debug;*.=info;\
# *.=notice;*.=warn |/dev/xconsole
There is a bug in the default installation, in that on a server no /dev/xconsole exists.
Therefore this entire section if commented out.
Issue the following command:
sudo vi /etc/rsyslog.d/20-iptables.conf
and add the following lines to the file:
# Log kernel generated iptable log messages to file
:msg,contains,"iptables: " /var/log/iptables.log
# Uncomment the following to stop logging anything that matches the last rule.
# Doing this will stop logging kernel generated iptables log messages to the file
# normally containing kern.* messages (eg, /var/log/kern.log)
& ~
This logs all firewall related messages to /var/log/iptables.log.
----
===== Prevent the logfile getting to big =====
Issue the following command:
sudo vi /etc/logrotate.d/iptables
and add the following lines to the file:
/var/log/iptables.log
{
rotate 3
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/sbin/service rsyslog restart > /dev/null
endscript
}
A logrotate job is created to run daily to keep the log file from getting too large.
To view the firewall log file, issue the command:
sudo cat /var/log/iptables.log | grep DPT=22 | cut -d" " -f1-4,9,13,14,21,22,23,26
----
===== Restart rsyslog =====
Issue the following command:
sudo service rsyslog restart