如何使用 firewalld 记录拒绝连接到特定端口?

How do I log a deny of connection to a specific port using firewalld?

在我的新 CentOS7 机器上,我尝试使用 'new' firewalld,但我无法记录断开的连接尝试。 有人知道诀窍吗?

我试过了:

firewall-cmd --zone=public --remove-service=ssh
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.1.2.0/24" port port="22" protocol="tcp" log prefix="SSH-ALLOW_" accept'
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.3.4.0/24" port port="22" protocol="tcp" log prefix="SSH-ALLOW_" accept'
[here comes a VERY VERY long list of similar entries]

现在的问题是:如何为来自不允许的 IP 的连接尝试指定日志条目? 像非工作的东西:

firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="NOT-ONE-OF-THE-ABOVE" port port="22" protocol="tcp" log prefix="SSH-DENY_" drop'

有什么想法吗?

差不多。在这两种情况下,反转地址参数。

对于包含两个所示子网的示例,请更改您的原始示例:

firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="NOT-ONE-OF-THE-ABOVE" port port="22" protocol="tcp" log prefix="SSH-DENY_" drop'

致这些:

firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.1.2.0/24" invert=true port port="22" protocol="tcp" log prefix="SSH-DENY_" drop'
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.3.4.0/24" invert=true port port="22" protocol="tcp" log prefix="SSH-DENY_" drop'

这会导致 firewalld 创建以下 IP table 规则:

# iptables -S | grep _public_log
-A IN_public -j IN_public_log
-A IN_public_log ! -s 10.1.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j LOG --log-prefix SSH-DENY_
-A IN_public_log ! -s 10.3.4.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j LOG --log-prefix SSH-DENY_

iptables speak 中两条规则的区别在于'!'表示逻辑运算符 "Not"。你原来的规则是 iptables:

-A IN_public_deny -s 10.1.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j DROP
-A IN_public_log -s 10.1.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j LOG --log-prefix SSH-DENY_

HTH.

我知道这是一个过时的 post,我的解决方案没有直接解决特定端口的日志记录问题,但我一直在使用 firewalld 搜索日志记录丢失。有许多旧的 posts 和博客试图解决这个问题。

对于 public,来自 Red Hat 的这个更新应该比仅对订阅者更可用:

从勘误 RHSA-2016:2597 升级到 firewalld-0.4.3.2-8.el7

指定应记录哪些数据包

firewall-cmd --set-log-denied= 值可以是以下之一:全部、单播、广播、多播或关闭

来源:https://access.redhat.com/solutions/1191593