我正在尝试使用fail2ban
.
以下是监狱的配置/etc/fail2ban/jail.conf
:
[sshd]
# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode = normal
enabled = true
port = ssh
maxretry = 3
logpath = %(sshd_log)s
backend = %(sshd_backend)s
banaction = iptables-multiport[name=sshd, port=ssh, protocol=tcp]
当我在我的服务器上尝试 3 次 ssh 登录失败后,我们可以看到我的 IP(匿名)已被列入黑名单:
fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 3
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: X.X.X.X
iptables
这是配置的规则fail2ban
:
iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N f2b-sshd
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A f2b-sshd -s X.X.X.X/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -j RETURN
当我尝试再次登录时,我收到以下消息:ssh: connect to host <hostname_anonymised> port 22: Connection refused
但这是问题,我不想收到icmp port unreachable
上面这样的消息,这是一个安全问题。
我希望 fail2ban 默默地 DROP (而不是使用 icmp REJECT )。我尝试更改监狱的配置以指定banaction
我想要的,但我找不到正确的参数来告诉jail2banDROP silently
而不是REJECT with icmp
。
我如何配置它fail2ban
?
答案1
所有iptables
动作都有blocktype
范围,可以被覆盖:
- 在全球范围内
action.d/iptables.conf
:
[Definition]
blocktype = DROP
(对于最新的fail2ban版本的默认上游配置,旧版本和维护版本可能对您用作banaction的操作有不同的包含)
- 或者在
jail.local
默认或监狱部分:
[DEFAULT]
banaction = iptables-multiport[blocktype=DROP]
banaction_allports = iptables-allports[blocktype=DROP]
此后不要忘记重新启动fail2ban。
另请注意https://github.com/fail2ban/fail2ban/issues/2217#issuecomment-423248516有关 REJECT 与 DROP 的更多信息。
答案2
要将fail2ban配置为执行静默阻止(DROP)而不是使用ICMP消息拒绝(REJECT),您可以按照以下步骤操作:
/etc/fail2ban/jail.local
在文本编辑器中打开该文件。
在 [sshd] 部分中添加或修改以下行以指定所需的阻止操作:
banaction = iptables-multiport[name=sshd, port=ssh, protocol=tcp, action=drop]
此配置指示fail2ban
在阻止 SSH 连接时使用丢弃操作而不是默认拒绝操作。
将更改保存到jail.local 文件。
重新启动fail2ban服务以应用新配置:
sudo service fail2ban restart
通过此配置,当阻止 SSH 监狱中的 IP 地址时,fail2ban 将使用丢弃操作,而不是使用 ICMP 消息的拒绝操作。
这将提供一个静默阻止而不发送 ICMP 拒绝消息。