在ssh的iptables中有问题

我阻止了与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,它可以完全实现你想要的。