1. 程式人生 > >iptables限制某個埠的連線數

iptables限制某個埠的連線數

iptables限制某個ip或者某組ip的連線數

測試規則如下:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEP
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 --connlimit-mask 0 -j DROP
-A INPUT -s 192.168.10.0/24 -j ACCEPT
-A OUTPUT -d 192.168.10.0/24 -j ACCEPT

-A INPUT -p icmp -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
-A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
-A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

-A INPUT -j DROP
-A OUTPUT -j DROP
COMMIT

主要用到的模組connlimit 

-A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 --connlimit-mask 0 -j DROP  #輸入的目標埠是22,也就是訪問本機22埠的流量,如果連線數大於3,則DROP流量,connlimit-above

這個是連線數的統計,如果大於3就滿足條件,connlimit-mask這個是定義那組主機,此處跟的一個數值是網路位,子網掩碼,也就是connlimit-mask 0 這個ip組的連線數大於connlimit-above 3則DROP

-A INPUT -s 192.168.10.0/24 -j ACCEPT #允許這個段的輸入流量

-A OUTPUT -d 192.168.10.0/24 -j ACCEPT #允許這個段的輸出流量

總體描述為流量過濾埠和連線數以及網路位,如果滿足第一條,則拒絕,流量不再匹配下邊的規則,如果不匹配,則第二條規則會允許流量,第一條中掩嗎為0,就表示所有的ip,也就是說不管什麼ip,只要連線此伺服器的22埠超過3個,則DROP。

如果吧--connlimit-mask 0 這個去掉,那麼connlimit-mask值預設會是32,也就是說,某個ip連結此伺服器超過3個,則drop,如果又4臺機器,每臺機器連一個,那麼它不會drop!

也就是說connlimit-above 3這個的數量所限制的區域是由--connlimit-mask 0而定!

##################

筆者原創

作者:JOHN

轉載請註明出處