作者 主題: 轉貼 - Netfilter的高級使用  (閱讀 8658 次)

0 會員 與 1 訪客 正在閱讀本文。

protech

  • 活潑的大學生
  • ***
  • 文章數: 322
  • 性別: 男
    • 檢視個人資料
轉貼 - Netfilter的高級使用
« 於: 2002-06-03 21:13 »
santa
santa2001@263.net

netfilter有一些功能在標準發行的linux內核裏面沒有包括,例如基於時間的控制、dropped-table、反埠掃描等等。
這些功能大部分將來會慢慢加入到linux內核中,但目前都沒有經過仔細測試,所以要慎重使用。
要使用這些功能, 請先下載最新的iptables源碼。解壓後,執行
make pending-patches KERNEL_DIR=<>看看你的內核是不是太老了,
然後make patch-o-matic,按照提示選擇想要安裝的新功能。

下面是我覺得有用的一些功能:

1. ah-esp 增加兩個擴展,允許匹配ipsec包中ah或esp包頭中的一段SPI(security parameters index)。

2. ct-netlink 使用戶空間程式可以通過netlink獲得連接跟蹤的狀態,並可經由用戶空間改變連接狀態。這個補丁與其他大多數補丁衝突。

3. dropped-table 加了一個drop表,被drop的包遍曆這個表。和其他大部分補丁衝突。

4. ftos 擴展的tos,可以設置tos爲0x0到0xff之間的任何值,用於簡單的Qos。

5. iplimit 限制每客戶到主機或網路的並發連接數。例如:
iptables -p tcp --syn --dport 23 -m iplimit --iplimit-above 2 -j REJECT
(每客戶最多兩個telnet連接),等效於iptables -p tcp --syn --dport 23 -m iplimit ! --iplimit-above 2 -j ACCEPT
限制到每個c類網路最多16個http連接
iptables -p tcp --syn --dport 80 -m iplimit --iplimit-above 16 \
--iplimit-mask 24 -j REJECT

6. ipv4options 匹配ip操作,使用該功能可以過濾掉源路由、記錄路由、時間戳等ip操作。iptables -m ipv4options –help可以得到詳細的幫助。例如iptables -A input -m ipv4options --rr -j DROP 過濾掉記錄路由的包,iptables -A input -m ipv4options --ts -j DROP 過濾掉帶時間戳操作的ip包。

7. irc-conntrack-nat 對irc的DCC(Direct Client-to-Client)協定的支援。

8. length 允許以指定值或指定範圍匹配包長度。例如POD這樣的大包可以直接drop。最小包長爲0,最大的是0xffff。

9. mport 對multiport功能的增強。可以對單個埠和一段連續埠混合指定。看來是很好,不過我測試的時候這個功能不能用(2.4.6 & 2.4.9內核)。

10. netlink 用戶空間可以經由netlink接收包。一個可用的用戶空間程式fwmon (http://firestorm.geek-ware.co.uk)。這個補丁基本類似ipchains的-o操作。

11. netmap 爲nat表增加了一個NETMAP目標。提供一對一的網路映射支援。它可以在PREROUTING鏈中改變流入包的目標位址,在POSTROUTING鏈中改變輸出包的源地址。使用範例如下:
iptables -t nat -A PREROUTING -d 1.2.3.0/24 -j NETMAP --to 5.6.7.0/24
iptables -t nat -A POSTROUTING -s 5.6.7.0/24 -j NETMAP --to 1.2.3.0/24

12. nth 提供對第n個包的匹配。

13. pkttype 按類匹配包。例如broadcast、multicast等。使用範例如下:
iptables -A INPUT -m pkttype --pkt-type broadcast -j LOG。

14. pool 提供一種方法,用點陣圖中的每一位代表一個地址,使用時需要一個用戶空間程式ippool。

15. psd 埠掃描察覺,設計思想來自於Solar Designer的scanlogd。支援如下選項:
a. --psd-weight-threshold
同一主機到不同目標埠發出多少包之後匹配
b. --psd-delay-threshold
同一主機到不同目標埠的連接間隔多少時間之內匹配
c. --psd-lo-ports-weight
訪問多少個特權目標埠後匹配
d. --psd-hi-ports-weight
訪問多少個非特權埠後匹配。

16. realm 使用前要求設置Qos配置裏的CONFIG_NET_CLS_ROUTE4,允許在iptables裏使用realm key,可以依照匹配的路由表項分類輸出包。

17. record-rpc 增加兩個模組ip_conntrack_rpc_udp和ip_conntrack_rpc_tcp,分別記錄tcp和udp的portmap請求,增加record-rpc模組,可以鑒別一個rpc連接是一個到portmap的映射請求還是一個portmap映射後的連接。用這種方法可以方便的實現rpc過濾。

18. SAME 類似於標準的SNAT,不過爲用戶端的每個連接提供相同的ip位址。同時提供—nodst選項,選擇源ip的時候不會使用這個選項後的ip位址。與dropped-table不相容。

19. snmp-nat 這個模組實現snmp負載的ALC(應用層閘道),結合nat,它允許網路管理系統存取多個私有網路,即使他們的ip地址衝突也沒有關係。他通過改變snmp負載中的ip位址來匹配ip層的nat映射。這是SNMP-ALG的基本形式,在rfc2962中有詳細的描述。

20. string 允許匹配含有特定字串的包。可以做個簡單的ids。

21. tcp-MSS 增加tcp-MSS目標。允許調整tcp syn包裏的MSS域,用於控制連接包的最大長度。

一些防火牆或主機會很不適當的過濾掉type 3、code 4(需要分片)的icmp包。表現出來的現象如下:
a. 瀏覽網頁時,什麽也沒有收到連接就挂起了。
b. 小郵件能收到,大郵件收不到。
c. ssh工作的很好,但scp在握手成功後就挂起了。
Tcp-MSS目標就是用來解決此類問題的。目前發行的linux的內核從2.4.7開始已經包含了這個補丁。

22. tcp-window-tracking 這個補丁是依據Guido van Rooij [1]寫的論文'Real Stateful TCP Packet Filtering in IP Filter'實現的tcp連接跟蹤記錄,可以對已經建立的tcp連接進行連接跟蹤。增加了Window scaling支援。
[1] http://www.iae.nl/users/guido/papers/tcp_filtering.ps.gz

23. time 增加對時間的匹配,可以指定某條規則在什麽時間觸發,在什麽時間無效。iptables -m time –help可以得到詳細的幫助。這個補丁增加了如下參數:
a.--timestart HH:MM
何時觸發
b.--timestop HH:MM
何時無效
c.--days Tue,Mon...
一周中的某幾天有效
例如-m time --timestart 8:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri就是說每周的周一到周五從8:00到18:00這條規則有效。
需要注意的是這個補丁目前還不能處理時區,使用時只能使用UTC時間。

24. TTL 增加一個TTL目標。可以使用戶用指定值遞增或遞減ttl值。

25. ulog 增加一個ULOG目標。跳到這個目標的包使用netlink multicast sockets送到用戶空間守護進程。不像LOG目標,後者只能通過syslog來察看。Libipulog目錄下是接收ulog資訊的庫文件。用戶空間守護進程的一個實現ulogd可以從http://www.gnumonks.org/projects/ulogd 得到。
因爲條件所限,以上所寫的大多沒有經過測試,錯漏之處,歡迎指正。


發佈時間:2001年08月24日09時

天線

  • 榮譽博士
  • 憂鬱的高中生
  • ***
  • 文章數: 155
    • 檢視個人資料
轉貼 - Netfilter的高級使用
« 回覆 #1 於: 2002-06-03 23:16 »
使用make patch-o-matic的方式來更新patch會把`developer-only' patches
也編入,這些開發性patch很不穩定,

建議使用make most-of-pom來更新patch,這樣可以避免掉developer-only' patches

還有更新patch時最好,每個patch都測試,也就是下  " t " 指令,沒問題再加入更新