我正在尝试为端口443上的流量实施IPTables规则。我想允许新连接,直到它们达到速率限制,然后丢弃它们并记录丢弃的数据包(我将稍后为记录添加速率限制) 。但是,根据我的规则,每个NEW连接都会调用我的日志记录规则。除非已达到速率限制,否则我不想创建日志条目。
无论我搜索谷歌的数量多少,我似乎无法弄清楚这个非常基本的问题。我相信我理解,ACCEPT规则将阻止任何后续规则被调用。但是在ACCEPT规则之前或之后放置我的日志记录规则没有任何区别 - 连接仍然被记录。
对于INPUT链,iptables -L -v -n如下:
Chain INPUT (policy DROP 2 packets, 88 bytes) pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 state NEW limit: avg 50/min burst 10
0 0 LOG tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 state NEW LOG flags 7 level 7 prefix "IPTables-50/m-Dropped: "
9 612 ACCEPT all -- eth1 * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
答案 0 :(得分:0)
您可以使用-m limit
模块来实现此目的。
iptables -t filter -A INPUT -p tcp -i eth1 --dport 443 -m limit --limit 10/min -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -p tcp -i eth1 --dport 443 -m state --state NEW,RELATED,ESTABLISHED -j LOG --log-prefix "IPTables-443-Dropped: " --log-level 4
iptables -t filter -A INPUT -p tcp -i eth1 --dport 443 -m state --state NEW,RELATED,ESTABLISHED -j DROP
我刚尝试使用ICMP数据包,我不知道你是否真的想使用这种方法:这是一个速率。
也许您最好使用-m connlimit
模块,在联机帮助页中描述为:
允许您限制每个客户端IP地址(或客户端地址块)与服务器的并行连接数。
希望这有帮助。