我有一个iptables防火墙,默认的INPUT策略设置为DROP。我正在使用它来减慢SSH强力尝试。问题是,如果我离开最后一行,则先前的规则不会触发,并且所有SSH流量都被接受。如果我把它丢弃,来自坏IP的数据包会被丢弃,但我也无法自己连接到SSH。根据我的理解,iptables是顺序的,所以如果它没有触发任何先前的规则,它应该只到达最后一条规则。我想在最后一行说的是#34;如果您的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
答案 0 :(得分: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建议我拒绝使用密码登录并只接受密钥。