是否有可能以这种方式创建iptable逻辑?
如果你发布了一些准备好使用配置的文章,我会很高兴的。现在,我试图使连接限制50 50conn/1秒,但我看到了上千个连接。
发布于 2019-08-21 09:12:15
我假设有限制(你在第2和第3段提到过)。应用于允许的到ssh/http/https的连接。
此外,我假设您希望对源IP应用限制,而不管对目标端口的限制(也就是说,如果我的IP由于SSH尝试而被禁止,那么HTTP/HTTPS流量也将被禁止)。
在这种情况下,你需要:
# flush all rules
iptables -F
# delete all user-defined chains
iptables -X
# set default policies
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# allow packets from already estabilished connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
# limit connection to SSH to 1 per IP
iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 1 --connlimit-mask 32 -j REJECT --reject-with tcp-reset
# dtto for http
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 1 --connlimit-mask 32 -j REJECT --reject-with tcp-reset
# dtto for https
iptables -A INPUT -p tcp --syn --dport 443 -m connlimit --connlimit-above 1 --connlimit-mask 32 -j REJECT --reject-with tcp-reset
# create new chain called "my-limited-chain"
iptables -N my-limited-chain
# set limits (allow 50 connections, erase failed attempts at a speed 50 attempts per hour), accept satisfactory traffic
iptables -A my-limited-chain -m limit --limit 50/hour --limit-burst 50 -j ACCEPT
# drop traffic over the limits
iptables -A my-limited-chain -j DROP
# redirect new SSH/HTTP/HTTPS connections to my-limited-chain
iptables -A INPUT -p tcp --dport 22,80,443 -m state --state NEW -j my-limited-chain注意:
--connlimit-mask,因为在IPv6中,有些机器可以有一个IPv6地址(--connlimit-mask 128),而一些机器甚至可以(而且应该)有多达2^64 IPv6地址(--connlimit-mask 64)。https://serverfault.com/questions/980089
复制相似问题