2014-02-17 63 views
1

我想实现IPTables规则的端口443上的流量。我想允许新的连接,直到他们达到速率限制,然后放下它们并记录丢弃的数据包(我将添加速率限制到稍后记录)。但是,根据我的规则,我的日志记录规则被每个NEW连接调用。除非已达到费率限制,否则我不想创建日志条目。IPTables规则顺序

无论我搜索的是多少谷歌搜索,我似乎无法弄清楚这个非常基本的问题。我认为我明白,接受规则将停止任何后续的规则被调用。但是,在接受规则之前或之后放置我的日志记录规则没有任何区别 - 连接仍会记录。

的iptables -L -v -n是INPUT链如下:

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

你会使用的-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

  • 第一行接受分组,直到它们达到10每分钟的速率。
  • 第二行将匹配并记录超过每分钟10个的数据包。
  • 第三行将匹配并丢弃与第二条规则相同的数据包。

我刚刚用ICMP数据包试过了,我不知道你是否真的想用这种方法:这是一个速率。

允许您并行连接的数目限制到每个客户端的IP地址(或客户端地址块)的服务器: 也许你最好通过使用-m connlimit模块,在手册页所描述被关闭。

希望这会有所帮助。