2016-08-22 76 views
0

我有一个iptables防火墙,默认的INPUT策略设置为DROP。我正在使用它来减缓SSH暴力破解的尝试。问题是,如果我留下最后一行,则以前的规则不会触发,并且所有SSH通信都会被接受。如果我放弃它,来自不良IP的数据包将被丢弃,但我也无法自己连接到SSH。据我了解,iptables是连续的,所以如果它没有触发任何以前的规则,它只应该达到最后的规则。我试图在最后一行说的是“如果你的IP是不是SSH_BRUTEFORCE名单上,通过去什么我做错了iptables SSH蛮力保护

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 
+0

不是为了阻止你从目前的努力,但fail2ban也可能是值得引用的。 – castis

+0

你也可以看看csf,它很容易安装和配置。 https://download.configserver.com/csf/install.txt – sebastienvg

+0

如果您可以简单地配置您的ssh守护程序来禁止密码验证,那么您将主要解决该问题。 – larsks

回答

0

你可以开始限速例子。?

/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建议我会否认与密码登录只接受密钥。