У меня CentOS 7 с firewalld. Я установил fail2ban и использовал действие firewallcmd-new. Я вижу баны в журналах fail2ban и хочу проверить в firewallcmd, заблокированы ли они. Как мне это сделать?
Во-первых, я настоятельно рекомендую вам использовать banaction = firewallcmd-ipset
так как это обеспечит гораздо лучшую производительность, когда список запретов начнет расти.
Теперь, с любым действием firewalld fail2ban, он добавит прямое правило, которое вы можете проверить с помощью 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-адреса здесь не перечислены. Вместо этого я нахожу их с 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
Список всех зон с включенными функциями.
firewall-cmd --list-all-zones
Зона печати с включенными функциями. Если зона не указана, будет использоваться зона по умолчанию.
firewall-cmd [--zone=<zone>] --list-all
Если приведенная выше команда не отображает достаточно информации, вы можете попробовать
Для наиболее продвинутого использования или для экспертов по iptables FirewallD предоставляет прямой интерфейс, который позволяет передавать ему необработанные команды iptables. Правила прямого интерфейса не являются постоянными, если не используется --permanent.
Чтобы увидеть все настраиваемые цепочки или правила, добавленные в FirewallD:
firewall-cmd --direct --get-all-chains
firewall-cmd --direct --get-all-rules