我似乎找不到一个快捷命令来查看服务器上所有被禁止的 IP。或者是否有我可以编辑的文件?
我猜 fail2ban 是输入所有要禁止的 IP 的那个。我在哪里调整它的设置?
我似乎只有在禁用 ufw 的情况下才能远程登录我的服务器。我似乎找不到如何解除对自己的禁令。我甚至不知道我为什么被禁止。是否有某种日志可以查看所有尝试?
答案1
简洁版本:
列出所有当前被阻止的 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
长版本:
如果你正在寻找“官方”的方式来做到这一点,有一个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:
答案2
sudo iptables -L INPUT -v -n | less
这告诉 iptables 列出 INPUT 链中的所有规则,提供详细的数字输出。我们通过 less 进行管道传输,以便每次获取一页。
答案3
您可以通过以下方式查看之前被禁止的所有 IP/var/log/fail2ban.log
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"'
但这并不能解释为什么会发生禁令。