问题描述
我似乎找不到一个快速命令来查看服务器上所有被禁止的 IP。或者有我可以编辑的文件吗?
我猜fail2ban是输入所有要禁止的IP的那个。我在哪里调整它的设置?
我似乎只能在禁用 ufw 的情况下才能远程登录到我的服务器。我似乎无法找到如何解除自己的禁令。我什至不知道为什么我首先被禁止。是否有某种日志可以查看所有尝试?
最佳思路
简洁版本:
列出所有当前阻止的 ip:
fail2ban-client status | grep "Jail list:" | sed "s/ //g" | awk '{split($2,a,",");for(i in a) system("fail2ban-client status " a[i])}' | grep "Status\|IP list"
解封ip:
fail2ban-client set postfix-mail unbanip 111.222.333.444
长版:
如果您正在寻找 “official” 方式来做到这一点,fail2ban https://www.fail2ban.org/wiki/index.php/Commands 有一个命令行客户端:
~ # fail2ban-client status
Status
|- Number of jail: 8
`- Jail list: roundcube, sshd, sogo, postfix-sasl, postfix-mail, dovecot, ssh, sshd-ddos
然后你可以运行
~ # fail2ban-client status roundcube
Status for the jail: roundcube
|- filter
| |- File list: /var/log/mail.log
| |- Currently failed: 0
| `- Total failed: 12
`- action
|- Currently banned: 1
| `- IP list: 111.222.333.444
`- Total banned: 1
或者你可以使用我的命令,它遍历所有现有的监狱:
fail2ban-client status | grep "Jail list:" | sed "s/ //g" | awk '{split($2,a,",");for(i in a) system("fail2ban-client status " a[i])}' | grep "Status\|IP list"
输出:
Status for the jail: roundcube
| `- IP list:
Status for the jail: sshd
| `- IP list:
Status for the jail: sogo
| `- IP list:
Status for the jail: postfix-sasl
| `- IP list:
Status for the jail: postfix-mail
| `- IP list:
Status for the jail: dovecot
| `- IP list:
Status for the jail: ssh
| `- IP list:
Status for the jail: sshd-ddos
| `- IP list:
次佳思路
sudo iptables -L INPUT -v -n | less
这告诉 iptables 列出 INPUT 链中的所有规则,提供详细的数字输出。我们正在减少管道,以便我们一次得到一页。
第三种思路
通过/var/log/fail2ban.log
可以看到之前所有被禁止的IP
sudo zgrep 'Ban' /var/log/fail2ban.log*
不过有些禁令是暂时的,所以我不知道如何最好地取消这些禁令(我的 fail2ban 日志是空的,这使得这更难测试!)。您可以使用 awk
命令进入一个大型会计计划,但它变得非常乏味。
无论如何,如果您正在寻找被禁止的原因,这就是您想要的方式。
另一种方法是查看 IP 表并查看正在删除的内容。同样,这有一些问题,因为它显示了被覆盖的默认路由,但我阻止了源为 0.0.0.0/0 的规则,这似乎使它保持足够干净以供实际使用:
sudo iptables -L -n | awk '$1=="DROP" && $4!="0.0.0.0/0"'
这并不能解释为什么会发生禁令。