如何用fail2ban显示所有禁止的ip?


36

当我运行此命令时,fail2ban-client status sshd我得到了:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 1
|  |- Total failed:     81
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 2
   |- Total banned:     8
   `- Banned IP list:   218.65.30.61 116.31.116.7

它仅在禁止IP列表中显示两个IP,而不是像Total Banned所说的那样显示8。

当我这样做时,tail -f /var/log/auth.log我得到了:

Mar 29 11:08:40 DBSERVER sshd[29163]: error: maximum authentication attempts exceeded for root from 218.65.30.61 port 50935 ssh2 [preauth]
Mar 29 11:08:40 DBSERVER sshd[29163]: Disconnecting: Too many authentication failures [preauth]
Mar 29 11:08:40 DBSERVER sshd[29163]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.65.30.61  user=root
Mar 29 11:08:40 DBSERVER sshd[29163]: PAM service(sshd) ignoring max retries; 6 > 3
Mar 29 11:08:44 DBSERVER sshd[29165]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.65.30.61  user=root
Mar 29 11:08:46 DBSERVER sshd[29165]: Failed password for root from 218.65.30.61 port 11857 ssh2
Mar 29 11:09:01 DBSERVER CRON[29172]: pam_unix(cron:session): session opened for user root by (uid=0)
Mar 29 11:09:01 DBSERVER CRON[29172]: pam_unix(cron:session): session closed for user root
Mar 29 11:10:01 DBSERVER CRON[29226]: pam_unix(cron:session): session opened for user root by (uid=0)
Mar 29 11:10:02 DBSERVER CRON[29226]: pam_unix(cron:session): session closed for user root
Mar 29 11:10:18 DBSERVER sshd[29238]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=113.122.43.185  user=root
Mar 29 11:10:20 DBSERVER sshd[29238]: Failed password for root from 113.122.43.185 port 46017 ssh2
Mar 29 11:10:33 DBSERVER sshd[29238]: message repeated 5 times: [ Failed password for root from 113.122.43.185 port 46017 ssh2]
Mar 29 11:10:33 DBSERVER sshd[29238]: error: maximum authentication attempts exceeded for root from 113.122.43.185 port 46017 ssh2 [preauth]
Mar 29 11:10:33 DBSERVER sshd[29238]: Disconnecting: Too many authentication failures [preauth]
Mar 29 11:10:33 DBSERVER sshd[29238]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=113.122.43.185  user=root
Mar 29 11:10:33 DBSERVER sshd[29238]: PAM service(sshd) ignoring max retries; 6 > 3
Mar 29 11:11:36 DBSERVER sshd[29245]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:11:38 DBSERVER sshd[29245]: Failed password for root from 116.31.116.7 port 24892 ssh2
Mar 29 11:11:43 DBSERVER sshd[29245]: message repeated 2 times: [ Failed password for root from 116.31.116.7 port 24892 ssh2]
Mar 29 11:11:43 DBSERVER sshd[29245]: Received disconnect from 116.31.116.7 port 24892:11:  [preauth]
Mar 29 11:11:43 DBSERVER sshd[29245]: Disconnected from 116.31.116.7 port 24892 [preauth]
Mar 29 11:11:43 DBSERVER sshd[29245]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:12:39 DBSERVER sshd[29247]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:12:41 DBSERVER sshd[29247]: Failed password for root from 116.31.116.7 port 26739 ssh2
Mar 29 11:12:45 DBSERVER sshd[29247]: message repeated 2 times: [ Failed password for root from 116.31.116.7 port 26739 ssh2]
Mar 29 11:12:45 DBSERVER sshd[29247]: Received disconnect from 116.31.116.7 port 26739:11:  [preauth]
Mar 29 11:12:45 DBSERVER sshd[29247]: Disconnected from 116.31.116.7 port 26739 [preauth]
Mar 29 11:12:45 DBSERVER sshd[29247]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:13:41 DBSERVER sshd[29249]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:13:43 DBSERVER sshd[29249]: Failed password for root from 116.31.116.7 port 27040 ssh2

禁止IP仍在尝试。

但是,当我检查时,sudo iptables -L INPUT -v -n我得到了:

Chain INPUT (policy ACCEPT 228 packets, 18000 bytes)
 pkts bytes target     prot opt in     out     source               destination
 6050  435K f2b-sshd   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22

我在这里做错了什么?

如何显示所有禁止的IP列表?

提前致谢。


“总数”是指曾经禁止的总数,而不是当前禁止的总数。您将在日志中找到以前禁止的地址的唯一位置(如果保留的话)。
停止Harming Monica '18

在jail.local或jail.conf中,您似乎有一个小bantime。让它200m甚至更高,然后做sudo service fail2ban restart,然后fail2ban-client status sshd
阿伦国王

Answers:


19

请记住,fail2ban禁止IP本质上是暂时的。

查看被阻止IP的完整列表的最佳方法是检查日志文件:

sudo zgrep 'Ban:' /var/log/fail2ban.log*

以下命令还可以为您提供干净的输入规则列表:

sudo iptables -L INPUT -v -n | less

3
我的日志文件中没有冒号(因此需要调整grep)。不过,请留为评论而不是编辑,因为我不知道这是否是最近的更改。

请记住,列出iptables规则仅在iptables是您的禁止操作的情况下才有效。有时情况并非如此。
吉拉德·马亚尼

@kwah对我来说也一样,日志文件中没有冒号。可能是最近的输出更改或错字。
David Mordigal

删除搜索词“禁令”之后的“:”,因为不再将“:”写入日志文件。因此,您可以使用上述命令再次查看被阻止的IP。
Mario Neubauer

9

要查看完整的iptables行:

sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0"'

要仅查看IP地址:

sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0" {print $4}'

您可以根据情况通过“ DROP”更改“ REJECT”。


6

类似于上面包含kwaa的注释的NA AE,它列出了所有IP:

sudo zgrep 'Ban' /var/log/fail2ban.log*

但是该输出有很多行。这统计了所有已记录的禁止(也可能是未禁止)ip的行数:

sudo zgrep 'Ban' /var/log/fail2ban.log* | wc -l

上面命令的输出(具有行数)应与fail2ban的状态输出中的“已禁止总数”计数匹配:

fail2ban-client status sshd

已在Ubuntu 18.04.1 LTS中测试。

我从'wc -l'行的输出:

7244

从fail2ban的状态,验证相同的7244号:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 7
|  |- Total failed: 49457
|  `- File list:    /var/log/auth.log
`- Actions
   |- Currently banned: 9
   |- Total banned: 7244
   `- Banned IP list:   [...]

4

仅供参考:

  • “被禁止的总数”是该监狱被禁止的IP总数(并且可能未被禁止)。
  • “当前被禁止”是该监狱当前被禁止的唯一IP(并且IP列表确认了这一点)。

希望能有所帮助。


4

如果您想查看带有其超时的禁用IP列表(超时到期,它们将从禁用池中删除),您可以使用:

ipset list

2

这将显示iptables的Chain fail2ban-ssh部分中当前禁止的内容(REJECT)。

sudo iptables -L fail2ban-ssh -v -n

2

要添加更多通用答案:

请注意,iptables可能不是正确的答案,也可能根本无法为您提供相关信息(对于原始海报而言)。它取决于您在DEFAULT或特定监狱定义中使用的banaction = [action]的值。

我有许多运行Linux的小型ARM供电盒,但内核没有可用的所有相关iptables模块,因此iptables在这种情况下将无法工作。

* BSD可能根本没有iptables,而是改用pf之类的东西。

在我的ARM机器上,我使用路由进行阻止。它为禁止的IP添加了无效路由,因此返回数据包无法传递,并且IP本质上被阻止。效果很好。在这种情况下,您可以使用以下方法检查被禁止的IP:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
# normal routing entries
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
# banned IPs (no gateway, no iface)
223.96.95.85    -               255.255.255.255 !H    0      -        0 -

您有很多禁止的选择。因此,有许多选项可以检查禁令列表。使用哪一个取决于您的平台和偏好。在/etc/fail2ban/action.d/中有许多预配置的配置文件可供选择。

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.