如何检查是否firewalld阻止传入的IP地址?

我有CentOS 7与firewalld。 我安装了fail2ban并使用firewallcmd-new操作。 我看到在fail2ban日志中禁止,并且我想在firewallcmd中检查是否被阻止。 我该怎么做?

首先,我强烈build议你使用banaction = firewallcmd-ipset因为当禁止列表开始变大时,这将提供更好的性能。

现在,使用fail2ban的firewalld动作,它将添加一个直接规则,您可以使用firewall-cmd --direct --get-all-rules来检查:

 # firewall-cmd --direct --get-all-rules ipv4 filter INPUT 0 -p tcp -m multiport --dports ssh -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable ipv4 filter INPUT 0 -p tcp -m multiport --dports 0:65535 -m set --match-set fail2ban-nginx-http-auth src -j REJECT --reject-with icmp-port-unreachable ipv4 filter INPUT 0 -p tcp -m multiport --dports http,https -m set --match-set fail2ban-nginx-wordpress-login src -j REJECT --reject-with icmp-port-unreachable 

正如你所看到的,我正在使用firewallcmd-ipset ,所以实际禁止的IP地址不在这里列出。 相反,我find他们与ipset list

 # ipset list Name: fail2ban-sshd Type: hash:ip Revision: 1 Header: family inet hashsize 1024 maxelem 65536 timeout 600 Size in memory: 16528 References: 1 Members: Name: fail2ban-nginx-http-auth Type: hash:ip Revision: 1 Header: family inet hashsize 1024 maxelem 65536 timeout 600 Size in memory: 16528 References: 1 Members: Name: fail2ban-nginx-wordpress-login Type: hash:ip Revision: 1 Header: family inet hashsize 1024 maxelem 65536 timeout 86400 Size in memory: 40656 References: 1 Members: 108.62.172.244 timeout 70819 108.62.172.121 timeout 82750 212.252.164.233 timeout 69907 108.62.24.87 timeout 58024 23.19.127.20 timeout 84310 ### many more omitted... 

详情请见: https : //fedoraproject.org/wiki/FirewallD#Which_zones_are_available.3F

  • 列出具有启用function的所有区域。

    firewall-cmd --list-all-zones

  • 打印带有启用function的区域。 如果省略了区域,则将使用默认区域。

    firewall-cmd [--zone=<zone>] --list-all

如果上述命令没有显示足够的信息,可以尝试

  • iptables直接接口(引自: CentOS上的FirewallD简介 )

对于最高级的用法,或者对于iptables专家来说,FirewallD提供了一个直接的接口,允许你将原始的iptables命令传递给它。 除非使用–permanent,否则直接接口规则不是永久的。

要查看所有添加到FirewallD的自定义链或规则:

firewall-cmd --direct --get-all-chains

firewall-cmd --direct --get-all-rules