示例:限制每个 IP / 主机的 SSH 连接数

示例:限制每个 IP / 主机的 SSH 连接数

我有一个开放的端口40002,我想限制该端口在同一时间只能被一个ip地址(不是特定的地址)连接,如果已经有一个ip地址连接到该端口,其他ip将无法连接。

是否可以通过 Iptables 或脚本来配置它?我的系统是 Ubuntu 14.04,谢谢。

答案1

您可以通过配置 iptables 来实现。

/sbin/iptables -A INPUT -p tcp --syn --dport $port -m connlimit --connlimit-above N -j REJECT --reject-with tcp-reset
# save the changes see iptables-save man page, the following is redhat and friends specific command
service iptables save

示例:限制每个 IP / 主机的 SSH 连接数

/sbin/iptables  -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
# save the changes see iptables-save man page, the following is redhat and friends specific command
service iptables save

测试:

#!/bin/bash
ip="202.1.2.3"
port="80"
for i in {1..100}
 do
 # do nothing just connect and exit
echo "exit" | nc ${ip} ${port};
done

OK:要限制最大 n 个连接,这里有一个使用 ip 限制模块的示例:

iptables -A INPUT -p tcp --syn -dport 40002 -m iplimit --iplimit-above 3 -J REJECT

如果有 3 个 IP 连接,这将拒绝连接。如果我误解了你的问题,请见谅 ;)

相关内容