如何使用 iptables 记录所有网络连接活动?

如何使用 iptables 记录所有网络连接活动?

我想记录单台机器上的连接和连接尝试。这应该包括 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

相关内容