2

我需要确保在我的服务器上每分钟的最大新 ssh 连接数不超过 5 个。

sudo /sbin/iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 5 -j REJECT

以上 IPtables 规则对我有用,但一分钟后不允许新连接。

任何指针如何实现这一目标?

4

2 回答 2

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
于 2013-09-04T15:06:39.740 回答
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 检查监视列表,如果超过命中计数以 DROP 流量。

这是你想要的吗?不确定您是否正在寻找每个 IP 的最大连接数为 5 或所有 IP 的总连接数为 5,这不一定是一个好主意。

于 2013-09-04T14:31:48.830 回答