删除Ubuntu Linux中的所有fail2ban禁令


16

如何删除Ubuntu中的所有fail2ban禁令?我尝试了所有东西,但我不明白。

我只想删除所有禁令-但我不知道任何IP地址。


1
禁令通常是通过防火墙在IP地址上完成的,因此您应该查看防火墙规则。
Julie Pelletier

是的我知道。但我想清除所有禁令瞒着一个IP地址
帕特里克

Answers:


26

更新的答案

从0.10.0版本开始,fail2ban-clientunban命令可以以两种方式使用:

unban --all                              unbans all IP addresses (in all
                                         jails and database)
unban <IP> ... <IP>                      unbans <IP> (in all jails and
                                         database)

此外,restart <JAIL>reload <JAIL>reload命令现在也有--unban选择。

旧答案

fail2ban用于iptables阻止流量。如果要查看当前被阻止的IP地址,请键入

iptables -L -n

并查找名为的各种链fail2ban-something,其中something指向fail2ban监狱(例如,Chain f2b-sshd指的是监狱sshd)。如果您只想删除<IP>给定监狱的单个IP地址的阻止<JAIL>,则fail2ban提供其自己的客户端:

fail2ban-client set <JAIL> unbanip <IP>

或者,您可以使用行号。首先,列出iptables带有行号的规则:

iptables -L -n --line-numbers

接下来可以使用

iptables -D fail2ban-somejail <linenumber> 

从表格中删除一行。据我所知,没有选择行号范围的选项,所以我想您将必须将此命令包装在for循环中:

for lin in {200..1}; do
   iptables -D fail2ban-somejail $lin
done

在这里,我把数字增加了200。使用检查您自己的命令输出,--line-numbers并注意最后一行(带有RETURN)应该保留。有关递减计数的原因,请参见下面的@roaima评论。


谢谢@roaima!我将相应地更新答案。
ph0t0nix

1
@roaima是的(至少在zsh和bash中):echo {5..1}将导致5 4 3 2 1
ph0t0nix

你救了我。非常感谢。请添加完整的命令,因为我必须确定在您的命令前我需要fail2ban-client。(因为我是菜鸟)
sebastian.roibu

旧的答复仍缓存在DuckDuckGo,来到说同样的事情@roaima - snipboard.io/0oZkXy.jpg
阿里

15

取消禁止所有IP的最佳方法是将禁止时间设置为1秒,然后将立即释放所有IP。

fail2ban-client set JailName bantime 1

之后,您可以设置适当的禁止时间。

最好让fail2ban为您进行取消禁止。不要自己手动编辑iptables。


1
这是这里唯一正确的答案。Fail2ban维护自己的禁止数据库,必须单独清除该数据库。关于删除iptables规则的每个答案都忽略了启动fail2ban的那一刻,它将把刚刚删除的规则重新添加回iptables。同样,并非每个fail2ban配置都使用iptables来实现禁止。
悬崖阿姆斯特朗'18

3
查找所有监狱fail2ban-client status
Flion '18

我刚刚发出了此命令,并且正在监视我的监狱中IP的数量减少到零,因为fail2ban处理该监狱。它并没有真的很快发生,但是没关系,监狱中有五千多个条目。好答案!
Eric M

5

最新的fail2ban-client(0.10)有一个unban -all命令。还可以单独“重新启动”监狱,从而有效地清除禁令。

如果您使用的是较旧的版本,此技巧可能适用于自动临时禁令:删除包含该禁令的监狱,然后重新启动fail2ban,以便重新创建(现在为空)监狱。

$ fail2ban-client stop sshd
Jail stopped
$ systemctl restart fail2ban

1
-全部还是全部?还是-全部?
通配符

3

将iptable配置保存到文件

$ iptables-save > iptables.conf

使用任何喜欢的编辑器进行编辑,而不是将配置加载回iptables

$ iptables-restore < iptables.conf

不要忘记将配置存储在iptables中,这样它将在重新启动时被提取

$ service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

这是一种可以做到这一点的方式。谢谢。
User9102d82

3

1.停止服务将清除fail2ban添加的所有规则

service fail2ban stop

2.如果没有其他iptables规则,则可以刷新它

iptables -F

注意:这会删除您iptables中的所有其他规则。


3

这是一个简单的oneliner,用于以适当方式取消对整个fail2ban监狱的禁令:

iptables -L f2b-recidive -n | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | grep -v 0.0.0.0 | xargs -n 1 fail2ban-client set recidive unbanip

注意:iptables命令在监狱名称之前使用“ f2b-”前缀,而“ fail2ban-client”是实际监狱名称


对于0.12以下的fail2ban版本,这是最好的答案。您可以进一步在.bashrc中创建一个别名,如fail2ban-purge,并使用一个参数清除整个监狱。只需将上面的隐性单词替换为$ 1并将别名用作fail2ban-purge <JAIL_NAME>。
ADDISON74,19年

2

由于工作方式的原因fail2ban,只有两种可能的解决方案:

  • 制作包含fail2ban监狱的防火墙配置脚本,然后重新启动防火墙。
  • 删除阻止您要取消禁止的IP的防火墙规则。

2

这是我用来取消ssh监狱的所有IP地址的脚本(只需将sshd占用替换为所需的监狱名称即可,例如mysqld-auth)

#!/bin/bash
j=$(iptables -L f2b-sshd | grep -c 'REJECT')
for ((i=1;i<=j;i++))
do
  fail2ban-client set sshd unbanip $(fail2ban-client status sshd | grep 'Banned IP list:' | cut -c23-)
done
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.