С помощью iptables можно записывать в лог-файл сетевую активность, то есть какие данные куда передаются и откуда приходят.
Пример команды (http трафик):
iptables -t filter -A FORWARD -s 192.168.1.0/24 -m tcp -p tcp --dport 80 -j LOG --log-prefix "iptables: "
Приведу примет для DNS трафика:
iptables -t filter -A INPUT -m tcp -p tcp --dport 53 -j LOG --log-prefix "iptables: "
iptables -t filter -A INPUT -m udp -p udp --dport 53 -j LOG --log-prefix "iptables: "
iptables -t filter -A INPUT -s 192.168.5.0/24 -m udp -p udp --dport 53 -j LOG --log-prefix "iptables: "
iptables -t filter -A INPUT -s 192.168.5.0/24 -m tcp -p tcp --dport 53 -j LOG --log-prefix "iptables: "
iptables -t filter -A FORWARD -d 10.0.0.1 -m udp -p udp --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