我在服务器上使用 Fail2Ban,我想知道如何正确解除对 IP 的禁令。
我知道我可以直接使用 IPTables:iptables -D fail2ban-ssh <number>
但是没有办法用吗fail2ban-client
?
手册中是这样描述的:fail2ban-client get ssh actionunban <IP>
。但是这不管用。
此外,我不想/etc/init.d/fail2ban restart
这样做,因为那样会丢失列表中的所有禁令。
答案1
使用 v0.8.8 之前的 Fail2Ban:
fail2ban-client get YOURJAILNAMEHERE actionunban IPADDRESSHERE
使用 Fail2Ban v0.8.8 及更高版本:
fail2ban-client set YOURJAILNAMEHERE unbanip IPADDRESSHERE
困难的是找到合适的监狱:
- 用于
iptables -L -n
查找规则名称... - ...然后使用
fail2ban-client status | grep "Jail list" | sed -E 's/^[^:]+:[ \t]+//' | sed 's/,//g'
获取实际的监狱名称。规则名称和监狱名称可能不相同,但应该清楚哪个与哪个相关。
答案2
从 v0.8.8 开始,有一个unbanip
选项(actionunban
不是为此目的)它可以通过命令触发set
,如果你查看选项列表,你会看到语法是。所以它将是(记住,请检查):
fail2ban-client set ssh-iptables unbanip IPADDRESSHERE
更通用:
fail2ban-client set JAILNAMEHERE unbanip IPADDRESSHERE
对我有用
答案3
交互模式下 SSH 的示例。
在 bash 中输入:
fail2ban-client -i
然后在交互模式下输入读取监狱的状态:
status sshd
你会得到:
Status for the jail: ssh
|- Filter
| |- Currently failed: 0
| |- Total failed: 6
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 1
|- Total banned: 2
`- Banned IP list: 203.113.167.162
然后在 fail2ban 交互模式下输入:
set sshd unbanip 203.113.167.162
你会得到:
203.113.167.162
这意味着不再203.113.167.162
在禁令名单中。
答案4
如果您正在运行版本v0.10.2:
sudo fail2ban-client 取消禁止 YOUR_IP_ADDRESS
这是来自帮助:
unban <IP> ... <IP> unbans <IP> (in all jails and database)
当我因为 ssh 客户端反复输入错误密码登录而很可能被禁止时,确认它可以在我的情况下起作用。