我需要在我的服务器上确保每分钟最大的新ssh连接数不超过5个。
sudo /sbin/iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 5 -j REJECT
以上IPtables规则对我有用,但一分钟后就不允许新连接。
任何指针如何实现这一目标?
答案 0 :(得分:6)
# SSH Anti-Bruteforce
# Next create a limiting rule. I limit to 3 hits in 60 seconds for ssh with this
/sbin/iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
/sbin/iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ssh-whitelist
/sbin/iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 --rttl --name SSH -j LOG --log-level info --log-prefix "Anti SSH-Bruteforce: "
/sbin/iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 --rttl --name SSH -j DROP
答案 1 :(得分:1)
像这样的bash脚本应该可以解决这个问题:
#!/bin/bash
# Window of time in seconds
SECS=100
# Max connections per IP
MAXCONN=10
/sbin/iptables -A INPUT -p tcp --syn --dport 22 -m state --state NEW -m recent --set
/sbin/iptables -A INPUT -p tcp --syn --dport 22 -m state --state NEW -m recent --update --seconds ${SECS} --hitcount ${MAXCONN} -j DROP
这是用于阻止暴力SSH攻击的常见规则集的迭代。第一条规则确保将连接的IP地址添加到监视列表。第二个规则告诉iptables检查监视列表以及是否超过了hitcount以丢弃流量。
这是你想要的吗?不确定您是否正在寻找所有IP的最大连接数为5或者总数为5,这不一定是个好主意。