iptables SSH 暴力破解保护

iptables SSH brute force protection

我有一个 iptables 防火墙,默认的 INPUT 策略设置为 DROP。我用它来减缓 SSH 暴力破解尝试。问题是,如果我保留最后一行,则不会触发之前的规则,并且会接受所有 SSH 流量。如果我忽略它,来自错误 IP 的数据包会被丢弃,但我自己也无法连接到 SSH。据我了解,iptables 是顺序的,因此如果它没有触发任何先前的规则,它应该只到达最后一条规则。我在最后一行想说的是“如果您的 IP 不在 SSH_BRUTEFORCE 列表中,请继续。我做错了什么?

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

iptables -N SSHSCAN

iptables -A INPUT -i ens3 -p tcp -m tcp --dport 22 -m state --state NEW -j SSHSCAN

iptables -A SSHSCAN -m recent --set --name SSH_BRUTEFORCE --rsource
iptables -A SSHSCAN -m recent --update --seconds 360 --hitcount 10 --name SSH_BRUTEFORCE --rsource -j LOG --log-prefix "Anti SSH-Bruteforce: " --log-level 2
iptables -A SSHSCAN -m recent --update --seconds 360 --hitcount 10 --name SSH_BRUTEFORCE --rsource -j DROP
iptables -A SSHSCAN -m recent --rcheck --name SSH_BRUTEFORCE -j ACCEPT

您可以从限速开始,例如:

/usr/sbin/iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set /usr/sbin/iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

如果你想记录掉落,那么

/sbin/iptables -N LOGDROP

/sbin/iptables -A LOGDROP -j LOG

/sbin/iptables -A LOGDROP -j DROP

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j LOGDROP

来源在这里https://www.rackaid.com/blog/how-to-block-ssh-brute-force-attacks/

此外,我建议将默认端口移动到其他端口,就像@larsks 建议的那样,我会拒绝使用密码登录,只接受密钥。