2014-02-17 89 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模塊,在手冊頁所描述被關閉。

希望這會有所幫助。