我正在使用 Firewalld,并且放置区域是默认区域,并为该区域分配了一个接口。
然后,我制定了丰富的规则来允许一些流量通过放置区,并且我已启用firewall-cmd --set-log-denied=all
。我本以为这会记录任何试图连接到服务器的不来自白名单丰富规则的内容……但它不会记录。我对服务器进行了端口扫描,/var/log/messages 没有显示任何被拒绝的端口日志。
但是,当我将默认区域设置为公共并将接口分配给公共时,当我运行另一个端口扫描时,它会记录被拒绝的数据包。
为什么?
答案1
问题似乎与评论中提到的错误有关。但是,对于那些仍然无法获取防火墙拒绝数据包日志记录的人来说,以下方法对我有用:
以下与firewalld
+配合使用rsyslogd
编辑并更新为的/etc/sysconfig/firewalld
值(或根据需要)LogDenied
all
LogDenied=all
重启firewalld
sudo systemctl restart firewalld
或者,使用命令行可以执行以下命令:
sudo firewall-cmd --set-log-denied all
这通常会在防火墙的拒绝/删除规则之前添加日志记录规则,例如:
LOG all -- anywhere anywhere LOG level warning prefix "IN_drop_DROP: "
LOG all -- anywhere anywhere LOG level warning prefix "FINAL_REJECT: "
创建一个名为的文件/etc/rsyslog.d/custom_iptables.conf
并向其中添加以下语句:
:msg,contains,"_DROP" /var/log/iptables.log
& stop
:msg,contains,"_REJECT" /var/log/iptables.log
& stop
重启 rsyslog
sudo systemctl restart rsyslog
现在丢弃和拒绝的数据包将记录到/var/log/iptables.log
答案2
太棒了,这帮助我走上了正确的道路,我很感谢这篇文章。
我唯一注意到的是,我认为 的位置LogDenied=all
应该是,/etc/firewalld/firewalld.conf
因为/etc/sysconfig/firewalld
它用于启动命令行选项。此外,rsyslog 的文件最好以 .conf 命名,有时默认包含语句可能不会查找 .log 文件。
VanagaS 做得真好!
參考文獻: https://firewalld.org/documentation/man-pages/firewalld.conf.html