我正在尝试配置 fail2ban,我尝试多次登录我的 Web 服务器来触发规则,并且查看我的 iptables 似乎已经起作用了:
Chain fail2ban-apache (1 references)
target prot opt source destination
DROP all -- 192.168.1.70 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0
但是如果我尝试从 .70 访问 Apache 服务器,我仍然可以!
有任何想法吗?
根据要求的完整列表:
Chain INPUT (policy ACCEPT 100998 packets, 137858737 bytes)
pkts bytes target prot opt in out source destination
0 0 fail2ban-apache tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443
1925 322694 fail2ban-ssh tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 43963 packets, 7223477 bytes)
pkts bytes target prot opt in out source destination
Chain fail2ban-apache (1 references)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 192.168.1.70 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain fail2ban-ssh (1 references)
pkts bytes target prot opt in out source destination
1925 322694 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
答案1
这里发生的情况是,在尝试多次 SSH 后,fail2ban 规则已添加192.168.1.70
到fail2ban-apache
链中,但此链仅适用于端口 80 和 443。端口 22 仍然被允许,因为192.168.1.70
尚未添加到fail2ban-ssh
链中。
您会发现无法从 Web 服务器发出 http 或 https 请求,192.168.1.70
但仍然可以使用 SSH。
您可能希望更改 SSH 规则的 fail2ban 操作以阻止 SSH 而不是 http 和 https。
答案2
优先级较高的规则之一是允许在防火墙到达阻止规则之前进行通信。阻止规则应排在规则的首位,或非常接近首位。
答案3
如果您想在出现暴力 ssh 攻击或 apache 攻击时阻止所有端口,您需要添加或编辑以下行:
banaction = iptables-allports
[ssh]
或此处的或[apache]
行 之后/etc/fail2ban/jail.conf
执行默认操作
# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-allports
如果你不想阻止所有端口,你可以在此行添加端口名称,数字
[apache]
enabled = true
port = http,https,dns,6969 <-
filter = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6