我阻止了与iptables的所有连接,只允许回送:
iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
接下来,我想只允许SSH连接,我也想logging每个尝试访问端口22的IP地址使用最近module.then我想看看是否该IP地址试图连接2次或更多次最后60秒,如果不是,则接受数据包:
iptables -A INPUT -p tcp --dport 22 -m recent --set --name ssh --rsource iptables -A INPUT -p tcp --dport 22 -m recent ! --rcheck --seconds 60 --hitcount 2 -- name ssh --rsource -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --sport 22 -j ACCEPT iptables -A INPUT -j DROP iptables -A OUTPUT -j DROP
可能没有写的问题,所以有人可以告诉我这是我的问题
你的意思是…
iptables -N BADGUY iptables -t filter -I BADGUY -m recent --set --name badguys iptables -A INPUT -i $OUTS -p tcp --syn --dport ssh -m recent --name ssh --set iptables -A INPUT -i $OUTS -p tcp --syn --dport ssh -m recent --name ssh --rcheck --seconds 300 --hitcount 6 -j BADGUY iptables -A INPUT -i $OUTS -p tcp --syn --dport ssh -m recent --name ssh --rcheck --seconds 30 --hitcount 2 -j DROP
?
你也可以看看fail2ban,它可以完全实现你想要的。