我无法让 iptables 进行日志记录。以下是相关命令:
/usr/sbin/iptables -N LOG_DROP
/usr/sbin/iptables -A LOG_DROP -m limit --limit 2/min -j LOG --log-prefix "iptables drop: " --log-level 7
/usr/sbin/iptables -A LOG_DROP -j DROP
输入这些命令,结果为:
iptables v1.4.21:未知选项“--log-prefix”
我相信以下模块很重要,因此它们在我的内核中处于活跃状态:
`nf_log_common
nf_log_ipv4
nf_log_ipv6`
有什么建议可以解决这个问题吗?
答案1
我必须以 root 权限运行所有命令(sudo
)。显然用户执行的iptables命令并不知道root创建的通道。
答案2
在 Centos 7 中可以使用以下命令
iptables -N SIPDOS
mkdir -p /var/log/firewall/
touch /var/log/firewall/iptables.log
chmod 600 /var/log/firewall/iptables.log
chown root:adm /var/log/firewall/iptables.log
touch /etc/rsyslog.d/firewall.conf
echo -e ":msg, contains, «iptables: » -/var/log/firewall/iptables.log\n& ~ " >>/etc/rsyslog.d/firewall.conf
touch /etc/logrotate.d/firewall
echo -e "/var/log/firewall/iptables.log\n{\nrotate 7\ndaily\nsize 10M\ndateext\nmissingok\ncreate 600 root adm\nnotifempty\ncompress\ndelaycompress\npostrotate\ninvoke-rc.d rsyslog reload > /dev/null\nendscript\n} " >>/etc/logrotate.d/firewall
service rsyslog restart
iptables -A SIPDOS -j LOG --log-prefix "firewall-sipdos:" --log-level 6
答案3
您可以了解您的设备内核是否支持这样的目标:
zcat /proc/config.gz | grep CONFIG_NETFILTER_XT_TARGET_LOG
参考:https://forum.sailfishos.org/t/iptables-log-target-missing/4537
答案4
您错过了一个内核模块:
modprobe nfnetlink_log