Журналирование активности средствами IPTables

С помощью iptables можно записывать в лог-файл сетевую активность, то есть какие данные куда передаются и откуда приходят.

Пример команды (http трафик):

sudo iptables -t filter -A FORWARD -s 192.168.1.0/24 -m tcp -p tcp --dport 80 -j LOG --log-prefix "iptables: "

Приведу примет для DNS трафика:

sudo iptables -t filter -A INPUT -m tcp -p tcp --dport 53 -j LOG --log-prefix "iptables: "
sudo iptables -t filter -A INPUT -m udp -p udp --dport 53 -j LOG --log-prefix "iptables: "
sudo iptables -t filter -A INPUT -s 192.168.5.0/24 -m udp -p udp --dport 53 -j LOG --log-prefix "iptables: "
sudo iptables -t filter -A INPUT -s 192.168.5.0/24 -m tcp -p tcp --dport 53 -j LOG --log-prefix "iptables: "

Если трафик очень большой и чтобы логи быстро не заняли все дисковое пространство, то можно ограничить количество записей, вот например писать логи SMTP трафика не чаще 10 записей в минуту:

iptables -t filter -A FORWARD -s 172.16.0.0/12 -m tcp -p tcp --dport 25 -m limit --limit 10/minute -j LOG --log-prefix "iptables: "

Чтобы удалить правило, заменим -A на -D.

Чтобы информация писалась не в rsyslog файл, а отдельно, создадим файл:

sudo nano /etc/rsyslog.d/10-iptables.conf

И добавим в него следующее:

:msg, contains, "iptables: " -/var/log/iptables.log
& ~

Чтобы применить изменения перезапустим rsyslog:

sudo /etc/init.d/rsyslog reload

Готово, указанная в первом правиле сетевая активность будет записываться в файл /var/log/iptables.log.

Также желательно настроить logrotate для удаления старых логов, для экономии места на диске.

Смотрите также мои статьи:
Настройка logrotate для ротации логов
Настройка IPTables

Оставьте комментарий

Добавить комментарий