天天看點

Netfilter 比對方式和處理方法

1 MAC 位址比對

由xt_mac.ko子產品提供的功能

iptables -A INPUT -p tcp --dport 3306 -m mac --mac-source 00:02:03:04:1F:13 -j ACCEPT

2 Multiport的比對

(1)介紹:Multiport 功能由xt_multiport.ko 子產品提供的功能 由于比對的是端口是以需要和-p結合使用

(2)提供的比對參數:

    * --dports            比對目的

   * --sports              比對源位址

   * --ports                比對目的和源

(3)示例:

iptables -A INPUT -p tcp --syn -m state --state NEW -m multiport --dports 21,22,443,80 -j ACCEPT

3資料包MARK值比對

(1)由xt_MARK.ko提供

(2)參數:

 * --mark       比對标記

(3)示例:

iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 80

iptables -A FORWARD -p all -m mark --mark 80 -j DROP

4Owner比對

(1) Owner的比對方式由ipt_owner.ko子產品提供,隻适合OUTPUT 與POSTROUTING

(2) 參數:

* --uid-owner userid|username 比對資料包由那個使用者産生的

* --gid-owner groupid|groupname 比對資料包由那個使用者組産生的

(3) 執行個體:

Iptables -A OUTPUT -p tcp -m owner --uid-owner jack --dport 80 -j ACCEPT

5 位址範圍比對

(1) 由ipt_iprange.ko提供

(2) 參數:

* --src-range          比對來源位址範圍

* --dst-range          比對目的位址範圍

(3) 執行個體:

iptables -A INPUT -m iprange --src-range 192.168.110.1-192.168.110.20 -j DROP

6 TTL 值比對

(1)由ipt_ttl.ko 子產品提供

(2)參數:

* --ttl-eq number 比對ttl值等于number

* --ttl-lt number 小于

* --ttl-gt number 大于

(3)執行個體:

Iptables -A INPUT -m ttl --ttl-eq 64 -j REJECT

7 資料包狀态比對

(1) 由xt_state.ko 子產品提供state 比對 連結狀态有4種:ESTABLISHED、NEW、RELATED、及INVALID 四種

INVALID:不屬于前三種的資料包狀态。

(2) 參數:

--state NEW|ESTABLEISHED|RELATED|INVALID

(3) 執行個體:

Iptables -A INPUT -p all -m state --state NEW,ESTABLEISHED,RELATED -j ACCEPT

8 AH及ESP 協定的SPI 值比對

(1) 由ipt_ah.ko 和xt_esp.ko 子產品提供

(2) 參數:

--ahspi       AH 標頭内的spi 值

--espspi     ESP 標頭的spi值

(3) 執行個體:

Iptables -A FORWARD -p ah -m ah --ahspi 300 -j ACCEPT

9 pkttype 比對

(1) tcp/ip 網絡環境中資料包傳輸有三種:Unicast 資料包發送對象特定 Broadcast 資料包傳送的對象為廣播位址 Multicast 資料包傳送對象為多點傳播位址。該比對方式由xt_pkttype.ko提供

(2) 參數:

--pkt-type unicast|broadcast|multicast

(3) 執行個體:

Iptables -A FORWARD -i eth0 -p icmp -m pkttype --pkt-type broadcast -j DROP

10 MTU 值比對

(1) MTU=IP標頭 +ICMP/TCP 標頭+DATA,MSS=ICMP/TCP 標頭+DATA

(2) 參數:

* [!]--length number 比對MTU 值為number byte 資料包

* [!]--length :number 小于number byte資料包

* [!]--length number1:number2 兩者之間的資料包

(3) 執行個體:

iptables -A FORWARD -p icmp -m length --length 92 -j ACCEPT

11 limit 特定資料包重複率比對

(1)由xt_limit.ko 提供

(2)參數:

--limit packets/m(minutes)|s(second)|h(hour)|d 限制機關時間包個數 包速率

--limit-burst number 機關時間内包的數量 預設為5

(3) 執行個體:

Iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 6/m --limit-burst 10 -j ACCEPT

如果每分鐘進入的ICMP包的數量小于等于10是被允許的 如果進入的資料包數量大于10就限制每分鐘隻能進來6個

12 recent 特定資料包重複率

(1) recent提供一個‘先驗證’,‘後處理’的特殊機制可以設計出多樣化的比對方式,像同一使用者在某段時間内對伺服器隻能發起多少次ssh服務請求,以及防止各種端口掃描,recent的比對方式由xt_recent.ko提供

(2) 參數:

Netfilter 比對方式和處理方法

(3) 執行個體:

iptables -A INPUT -p icmp --icmp-type 8 -m recent --name icmp_db --rcheck --second 60 --hitcount 6 -j DROP

Iptables -A INPUT -p icmp --icmp-type 8 -m recent --set --name icmp_db

Icmp_db 資料庫會存放在/proc/net/xt_recent/ 目錄中, 上述規則含義是 資料庫中如果在60秒中含有6條以上的記錄資料包就會被丢棄 否則就會将資訊記錄到icmp_db資料庫中

13 使用String 子產品比對資料包内所承載的資料内容

(1) string 是由xt_string.ko 子產品提供的比對功能,string 可以在’網絡層’的位置直接比對資料包所承載的資料内容,隻比對單個資料包

(2) 參數:

Netfilter 比對方式和處理方法

(3) 執行個體:

Iptables -A FORWARD -i eth0 -o eth1 -p tcp -d 124.76.54.1 --dport 80 -m string --algo bm --string “system32” -j DROP

14 使用connlimit子產品限制連接配接的最大數量

(1) connlimit 機制由xt_connlimit.ko 子產品提供,以/proc/net/nf_conntract檔案中的資料為依據來限制IP/網段 同時對目标主機或服務所能建立的最大連接配接數(考慮NAT使用問題)

(2) 參數:

Netfilter 比對方式和處理方法

(3) 執行個體:

Iptables -A FORWARD -i eth0 -o eth1 -p tcp --syn -d 123.54.11.1 --dport 80 -m connlimit --connlimit-above 30 --connlimit-mask 32 -j DROP

15 使用connbytes子產品限制每個連接配接所能傳輸的資料量

(1)connbytes機制由xt_connbytes.ko 子產品提供用來限制單一連接配接中所能傳輸的資料量上限

(2)參數:

Netfilter 比對方式和處理方法

3 執行個體:

限制使用者通過http協定下載下傳20M以上的資料

Iptables -A FORWARD -p tcp -d 123.123.11.34 --dport 80 -m connbytes --connbytes-dir reply --connbytes-mode bytes --connbytes 20971520: -j DROP

16 使用qutoa 子產品限制資料傳輸量的上限

(1) 使用qutoa 子產品可以限制使用者每個小時或者每天所能傳輸的資料總量

(2) 參數

(3) 執行個體:限制每一個IP使用http 通信協定隻能下載下傳500MB的資料量

Iptables -A FORWARD -i eth0 -o eth1 -p tcp --sport 80 -m quota --quota 524288000 -j ACCEPT 

Iptables -A FORWARD -i eth0 -o eth1 -p tcp --sport 80 -j ACCEPT

注意 限制的IP位址 一旦積累到設定的量之後 這筆記錄會永久儲存到防火牆規則中 直到被清除為止,是以我們要定期重新整理防火牆規則

17 使用time子產品設定規則生效時間

(1) time 機制由xt_time.ko 提供用來設定規則的生效時間

(2) 參數:

Netfilter 比對方式和處理方法

3 執行個體:限制公司内伺服器群 可以被通路的時間是周一 至周五早上九點到晚上九點

Iptables -A FORWARD -o eth1 -d 145.123.11.65 -m time --weekdays Mon,Tue,Wed,Thu,Fri --timestart 09:00 --timestop 21:00 -j ACCEPT

Iptables -A FORWARD -o eth1 -d 145.123.11.65 -j DROP

18 使用connmark 子產品來比對mark 值

(1) connmark機制由xt_connmark.ko 子產品提供 需與CONNMARK處理方法結合使用CONNMARK 處理方法就是為您不MARK的不足CONNMARK 是對一整條連接配接來設定mark 值 也就是說 隻要連接配接中的某個資料包被标記mark,那麼氣候該連結雙向的所有資料包都會自動設定這個mark值

(2) 參數

(3) 執行個體:

Iptables -A INPUT -m connmark --mark 1 -j DROP

19使用conntract 子產品比對資料包狀态

(1)conntrack 子產品可以視為state子產品的加強版 使用方法與state子產品如出一轍

(2)參數:

Netfilter 比對方式和處理方法

(3)執行個體:

隻允許192.168.1.0/24 網段的通路FTP服務

Modprobe nf_conntrack_ftp

Iptables -A INPUT -m conntrack --cstate ESTABLISHED,RELATED -j ACCEPT

Iptables -A INPUT -m conntrack --ctproto tcp --ctorigsrc 192.168.1.0/24 --ctorigdstport 21 --ctstate NEW -j ACCEPT 

Iptables -A INPUT -p tcp --dprot 21 -j DROP

20 使用statistic 子產品進行比率比對

(1) statistic 機制由xt_statistic.ko子產品提供其功能是在必要的時候以随機或者規律的方式丢棄掉部分資料包

(2) 參數:

Netfilter 比對方式和處理方法

(3) 執行個體:

随機丢棄50%送到本機的icmp包

Iptables -A INPUT -p icmp -m statistic --mode random --probability 0.5 -j DROP

21使用hashlimit 子產品進行重複率比對

(1) hashlimit 的功能與limit 子產品功能雷同但功能更強大 某些方面可以視為recent的初級版,主要功能是限制特定行為的重複率

(2)參數:

Netfilter 比對方式和處理方法

(3)執行個體:

Netfilter 比對方式和處理方法
Netfilter 比對方式和處理方法
Netfilter 比對方式和處理方法

22多功能比對子產品u32

(1) netfilter 新增的擴充子產品 u32 允許我們檢查資料包内各標頭的任意資料

(2) 參數

(3) 執行個體:

使用u32比對資料包是否為TCP包(我們可以在/etc/protocol 中找到傳輸協定對應的ID,tcp:6 udp:7)

Iptables -A INPUT -m u32 --u32 ‘6&0xFF=6’ -j DROP

繼續閱讀