iptables的规则ssh登录限制

iptables -N TELNET_LIMIT


-m state –state NEW ,这个是TCP包的状态,匹配TCP包状态为NEW,类似状态还有ESTABLISHED等


iptables -P INPUT ACCEPT
iptables -A SSH_LIMIT -s 10.7.100.146 -j RETURN


iptables -F SSH_LIMIT
iptables -A SSH_LIMIT -m state --state NEW -m recent --set --name SSH
#iptables -A SSH_LIMIT -m state --state NEW -m recent --update --seconds 60 --hitcount 2 --name SSH
iptables -A SSH_LIMIT -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 2 --name SSH -j DROP


iptables -I INPUT -p tcp --dport 22 -m state --state NEW -j SSH_LIMIT


iptables -N ICMP_LIMIT
iptables -I INPUT -j ICMP_LIMIT
iptables -F ICMP_LIMIT
iptables -A ICMP_LIMIT -p icmp -m recent --name PINGPOOL --update --seconds 30 --hitcount 5 -j DROP
iptables -A ICMP_LIMIT -p icmp -m recent --name PINGPOOL --set -j ACCEPT


iptables命令如下可以达到效果,以下命令好像要装个iptables的recent扩展模块。
设定时间内限制SSH的连接次数,超过次数之后直接丢弃该包。一次连接的允许的密码错误尝试次数在另外的SSH SERVER设置文件里。
这种做法的风险是如果入侵者知道白名单的IP的话那就完了,如果源IP可以伪装的话。


实现的效果:
白名单的IP享有无限制的连接次数,非白名单的IP在设定时间内有限制SSH的连接次数,超过次数则无法连接。


以下命令都已自测过。
简单版:
iptables -P INPUT ACCEPT #设置策略为ACCEPT
iptables -N SSH_LIMIT #新建chain
iptables -A INPUT -p tcp --dport 22:23  -m state --state NEW -j SSH_LIMIT #匹配tcp端口为目的端口为22的包并且state为NEW的包
###以上内容开机后运行一次,不能重复###
iptables -F SSH_LIMIT #清除链SSH_LIMIT中的所有内容
#iptables -A SSH_LIMIT -s 10.7.100.147 -j RETURN #白名单的源IP地址,这样的规则可以增加多条如下


iptables -A SSH_LIMIT -m recent --name SSHPOOL --rcheck --seconds 80 --hitcount 2 -j DROP #非白名单的成员从第一次连接开始300秒内可以尝试连接最多2次
iptables -A SSH_LIMIT -m recent --name SSHPOOL --set -j ACCEPT


复杂版(增加用来防止SSH的某些攻击的功能,详细见参考资料网页):
iptables -P INPUT ACCEPT
iptables -N SSH_LIMIT
iptables -I INPUT -p tcp --dport 22 -j SSH_LIMIT
iptables -F SSH_LIMIT
iptables -A SSH_LIMIT -p tcp --tcp-flags ALL SYN -m state --state NEW -j LOG --log-prefix "[SSH Login]:" --log-level debug
iptables -A SSH_LIMIT -s 10.7.100.147 -j RETURN
iptables -A SSH_LIMIT -p tcp --tcp-flags ALL SYN -m state --state NEW -m recent --name SSHPOOL --rcheck --seconds 60 --hitcount 2 -j DROP
iptables -A SSH_LIMIT -p tcp --tcp-flags ALL SYN -m state --state NEW -m recent --name SSHPOOL --set -j ACCEPT
iptables -A SSH_LIMIT -p tcp --tcp-flags ALL ACK -m state --state ESTABLISHED -j ACCEPT
iptables -A SSH_LIMIT -p tcp --tcp-flags ALL ACK,PSH -m state --state ESTABLISHED -j ACCEPT
iptables -A SSH_LIMIT -p tcp --tcp-flags ALL ACK,FIN -m state --state ESTABLISHED -j ACCEPT
iptables -A SSH_LIMIT -p tcp --tcp-flags ALL RST -m state --state ESTABLISHED -j ACCEPT
iptables -A SSH_LIMIT -p tcp --tcp-flags ALL ACK,RST -m state --state ESTABLISHED -j ACCEPT
iptables -A SSH_LIMIT -p tcp --tcp-flags ALL ACK,URG -m state --state ESTABLISHED -j ACCEPT
iptables -A SSH_LIMIT -j DROP


iptables -N ICMP_LIMIT
iptables -I INPUT -p icmp -j ICMP_LIMIT
iptables -F ICMP_LIMIT
iptables -A ICMP_LIMIT -p icmp --icmp-type echo-request -i eth0.2 -j DROP
iptables -A ICMP_LIMIT -p icmp --icmp-type echo-request -i pppoe-wan_1 -j DROP






参考资料:
http://www.cnblogs.com/hiloves/archive/2011/07/19/2109899.html
http://www.cnblogs.com/hiloves/archive/2010/07/24/1784396.html
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值