我在局域网中有一个 CentOS 7 服务器和一些 Windows 机器。
我已经使用以下方法打开了“被拒绝”或“被丢弃”数据包的 iptables 日志记录:
firewall-cmd --set-log-denied=all
这将添加适当的 iptables 日志记录规则。例如,在 FORWARD 链的末尾:
LOG all -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID LOG flags 0 level 4 prefix "STATE_INVALID_DROP: "
DROP all -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 prefix "FINAL_REJECT: "
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
但是,现在内核日志(或者更确切地说是日志)记录了来自各种 Windows 机器的被拒绝的大量数据包,更准确地说是 NetBIOS 广播(子网广播地址上的端口 137 和 138 的 UDP),而 Linux 机器上的任何服务都不对此感兴趣。
我想在这些数据包被记录之前就将其丢弃,而不做进一步的处理。
FINAL_REJECT: IN=ens160 OUT= MAC=ff:ff:ff:ff:ff:ff:XX:XX:XX:XX:XX:XX:08:00 SRC=10.10.2.74 DST=10.10.2.255 LEN=78 TOS=0x00 PREC=0x00 TTL=128 ID=32306 PROTO=UDP SPT=137 DPT=137 LEN=58
如何firewall-cmd
正确地做到这一点?
答案1
您可以将firewalld配置为不记录广播或多播数据包(例如您在问题中给出的示例),而不是记录每个丢失的数据包。
为此,请使用--set-log-denied=unicast
。
firewall-cmd --set-log-denied=unicast
现在日志将仅包含指向您主机的被拒绝的流量。
从手册页中:
--set-log-denied=value
在默认规则的 INPUT、FORWARD 和 OUTPUT 链中的拒绝和丢弃规则之前添加日志记录规则,并在配置的链路层数据包类型的区域中添加最终的拒绝和丢弃规则。可能的值包括:全部,单播,播送,多播 和离开。默认设置为离开,禁用日志记录。这是一个运行时和永久性的改变,并且还将重新加载防火墙以便能够添加日志记录规则。