我安装了一台全新的 Ubuntu 机器。然后我更改了 ssh 端口,不再是 22,而是 22111:
然后我安装了fail2ban:
apt-get install fail2ban -y
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
service fail2ban restart
iptables -L
然后我尝试从 ip 192.168.1.22 进行 SSH 登录。几次错误登录后,fail2ban 将以下行添加到 iptables。
-A fail2ban-ssh -s 192.168.1.22/32 -j REJECT --reject-with icmp-port-unreachable
之后,我尝试使用正确的凭据再次登录,并且可以毫无问题地从 IP 192.168.1.22 登录
iptables 规则仍然存在。
我需要额外的配置吗?
答案1
正如评论中提到的,您需要将文件port
中的值更改jail.local
为 ssh 正在监听的自定义端口号。
[ssh]
enabled = true
port = 22111 # custom port here
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
这是因为,该端口号用于创建 INPUT 链的 iptables 规则,如下所示,来自您的帖子:
-N fail2ban-ssh -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
查看的值--dports 22
,这意味着将首先匹配那些发往端口 22 的数据包,因此,当您尝试登录另一个端口时,它不会匹配,因此不会采用针对该特定 IP 的以下规则:
-A fail2ban-ssh -s 192.168.1.22/32 -j REJECT --reject-with icmp-port-unreachable
更改端口并重新启动 fail2ban,然后再次检查 iptables 规则,您将看到它已更改,然后事情应该按预期工作。