![如何使用 iptables 记录所有网络连接活动?](https://linux22.com/image/755865/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20iptables%20%E8%AE%B0%E5%BD%95%E6%89%80%E6%9C%89%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5%E6%B4%BB%E5%8A%A8%EF%BC%9F.png)
我想记录单台机器上的连接和连接尝试。这应该包括 IP、端口和时间戳。这实际上只是为了分析/安全目的。
我怎样才能实现这个目标?
有类似的问题,但似乎没有一个能具体回答这个问题。
答案1
一种选择是使用ulogd
,它使用 iptablesULOG
目标从 Netfilter 接收日志事件到其自身。ulogd
然后可以配置为使用多个数据输出目的地,例如 MySQL、PostgreSQL 等。
更多信息可参见项目主页。
答案2
需要以下 iptable 配置:
iptables -I INPUT -m state --state NEW -j LOG --log-prefix='[networklogging] '
iptables -I OUTPUT -m state --state NEW -j LOG --log-prefix='[networklogging] '
日志输出/var/log/kern.log
可能会与其他内容混淆...因此参考:https://askubuntu.com/a/348448/585364
我们可以使用以下命令登录到一个明确的文件:
cat >/etc/rsyslog.d/00-my_iptables_networklogging.conf <<EOL
:msg,contains,"[networklogging] " -/var/log/iptables_networklogging.log
& stop
EOL
我们还需要重新启动 rsyslog:
sudo service rsyslog restart