不知何故,我的一个系统中添加了 iptables 规则。 iptables 是否(或可以)保留有关何时以及(也许)谁更改规则的日志?如果 iptables 本身不能,是否有一个包装器可以做到这一点?我知道 sudo 记录命令,但是一旦有人执行“sudo su -”,那就结束了。
答案1
不,没有 iptables 的更改日志。
由于只有 root 可以运行iptables
,因此想要绕过您设置的任何日志记录的管理员也有权关闭该日志记录,因此您只能记录合作管理员所做的更改。
如果您使用iptables-save
,请对规则文件使用版本控制。培训您的管理员同事使用有意义的更改消息来提交更改。
如果您希望自动进行日志记录,请将iptables
可执行文件替换为执行日志记录的包装脚本。这是一个快速而肮脏的脚本,对于奇怪的参数(例如包含换行符)来说并不健壮。如果无法写入日志文件,该脚本会显示一条错误消息,但会继续调用iptables
。
#!/bin/sh
( exec >/var/log/iptables.log;
echo -n "$(date '+%Y:%m:%d %H:%M:%S')" "$(id -run)" iptables
for x; do echo -n "'$x'"; done )
exec /sbin/iptables.real "$@"