如何使用 Fail2Ban 正确解禁 IP

psp*_*psp 257 firewall iptables fail2ban

我在服务器上使用 Fail2Ban,我想知道如何正确取消 IP。

我知道我可以直接使用 IPTables: iptables -D fail2ban-ssh <number>

但是有没有办法做到这一点fail2ban-client

在手册它规定是这样的:fail2ban-client get ssh actionunban <IP>。但这不起作用。

另外,我不想这样做,/etc/init.d/fail2ban restart因为那样会失去列表中的所有禁令。

小智 376

在 v0.8.8 之前使用 Fail2Ban:

fail2ban-client get YOURJAILNAMEHERE actionunban IPADDRESSHERE
Run Code Online (Sandbox Code Playgroud)

使用 Fail2Ban v0.8.8 及更高版本:

fail2ban-client set YOURJAILNAMEHERE unbanip IPADDRESSHERE
Run Code Online (Sandbox Code Playgroud)

困难的部分是找到合适的监狱:

  1. 使用iptables -L -n查找规则名称...
  2. ...然后用于fail2ban-client status | grep "Jail list" | sed -E 's/^[^:]+:[ \t]+//' | sed 's/,//g'获取实际的监狱名称。规则名称和监狱名称可能不同,但应该清楚哪个与哪个相关。

  • 对于最近版本的`fail2ban`,你应该使用`fail2ban-client set JAIL_NAME unbanip 1.2.3.4`。 (42认同)
  • sshd 是我的监狱名称。 (8认同)
  • 如果您查找您的 IP,您可以在 fail2ban 日志中找到监狱名称 (3认同)
  • 如果您有以下错误“无效的操作名称”,请阅读[此答案](http://serverfault.com/a/475117/125960) (2认同)
  • 默认的监狱名称是什么?`/etc/fail2ban/jail.conf` 对我不起作用。 (2认同)

小智 91

由于 v0.8.8 有unbanip选项(actionunban不是用于此目的)它可以由set命令触发,如果您查看选项列表,您将看到语法是。所以它将是(请记住,请检查):

fail2ban-client set ssh-iptables unbanip IPADDRESSHERE 
Run Code Online (Sandbox Code Playgroud)

更通用:

fail2ban-client set JAILNAMEHERE unbanip IPADDRESSHERE
Run Code Online (Sandbox Code Playgroud)

为我工作

  • unbanip 命令是在 0.8.8 版本中添加的。如果您运行的是 0.8.8 或更高版本,则是最佳解决方案。 (3认同)

小智 76

SSH 交互模式示例。

输入bash:

fail2ban-client -i
Run Code Online (Sandbox Code Playgroud)

然后在交互模式下输入监狱的状态:

status sshd
Run Code Online (Sandbox Code Playgroud)

你会得到:

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
Run Code Online (Sandbox Code Playgroud)

然后输入fail2ban交互模式:

set sshd unbanip 203.113.167.162
Run Code Online (Sandbox Code Playgroud)

你会得到:

203.113.167.162
Run Code Online (Sandbox Code Playgroud)

这意味着不再203.113.167.162在禁止列表中。

  • 对我来说,监狱名称是“sshd”(Ubuntu 16) (3认同)

小智 21

ukoda 的答案是错误的:

fail2ban-client不带参数调用,您会看到可能的命令列表:

get JAIL actionunban ACT             
Run Code Online (Sandbox Code Playgroud)

这将获得行动 ACT for JAIL 的 unban 命令。

查看你定义的 jail 的 action 参数,你可能有一个 iptables 动作,也许更像 sendmail、whois 或其他什么。因此,如果您的操作是 iptables,它将如下所示:

fail2ban-client get JAIL actionunban iptables
Run Code Online (Sandbox Code Playgroud)

答案将是:

iptables -D fail2ban-NAME -s IP -j DROP
Run Code Online (Sandbox Code Playgroud)

它只会向您显示您必须为取消禁令而写的内容。没有 unban 命令本身。

  • 是的,这对我有用,可以解除 SSH 监狱`iptables -D fail2ban-ssh -s &lt;IP&gt; -j DROP` 的禁令。谢谢英哥! (4认同)

kas*_*aja 11

如果您运行的是v0.10.2版本:

sudo failure2ban-client 取消禁止 YOUR_IP_ADDRESS

这是来自帮助:

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

当我很可能由于 ssh 客户端使用错误密码重复登录而被禁止时,确认在我的情况下工作。

  • 这是最新的答案 (2认同)

小智 10

如果 192.168.2.1 被禁止

sudo iptables -L
Run Code Online (Sandbox Code Playgroud)

检查它在哪个链中被禁止,例如

链 fail2ban-sasl(1 参考)

DROP all -- 192.168.2.1 任何地方

然后:

# to view the proper command for un-banning
sudo fail2ban-client get sasl actionunban
# actual command
iptables -D fail2ban-sasl -s 192.168.2.1 -j DROP
Run Code Online (Sandbox Code Playgroud)