發新話題
打印

P2P軟體的剋星L7-filter

P2P軟體的剋星L7-filter

使用 l7-filter 來過濾封包內容

以往網路管理者在擋如 eDonkey、eMule、kazaa... 等 P2P 軟體或是 MSN、ICQ、Yahoo Messenger...
等即時通訊軟體時, 都是消極的阻擋該軟體所使用的通訊埠。

但是大多數的軟體都可以更改所使用的埠號, 或是直接使用網頁伺服器所使用的 80 埠。
因此阻擋的成效多半不是很好。

另外由於 iptables 是屬於 OSI 模型中的第 3 層, 因此不能阻擋特定應用程式的封包, 這也就是為什麼
網路管理者只能使用阻擋 4662 埠的方式來阻擋 eDonkey 或 eMule 了。

因為這種效果不好, 所以目前有個針對 iptables 所做的子系統, 專案名稱叫 l7-filter。
其名稱為 Layer 7 Filter 的意思, 它可以做到 OSI 第 7 層 (Application Layer) 的封包過濾。

每個網路程式所產生的封包內容都會有特定的字串, 藉由檢視這些字串可以找出想要過濾軟體的封包,
進而達到阻擋的功能。

l7-filter 是 iptables 的子系統, 一定要在 NAT 上使用。NAT 伺服器是區域網路內部連到網際網路必經的地方,
l7-filter 在此處才能達到過濾的功能。


使用 l7-filter 來過濾 P2P 或即時通訊軟體

因為 l7-filter 只是 iptables 的子系統, 僅在 iptables 的功能上作延伸, 因此封包過濾的方法
和原本的 iptables 並沒有太大的不同。

7-filter 的語法格式

l7-filter 的語法與 iptables 類似, 在使用上差不多, 其格式大致如下:


iptables -t mangle -I POSTROUTING -m layer7 --l7proto http -j DROP
          ─┬──     ───┬────  ──┬──   ───┬───
使用 mangle 表格             │     符合 Layer 7 的封包     │
                   使用 POSTROUTING 鏈            Layer 7 封包的通訊協定
      


其中比較需要注意的只有 --l7proto 參數後面所使用的 Layer 7 封包通訊協定, 它就是我們所要阻擋的封包類型。
至於如何知道該填哪些名稱, 可由我們所安裝的 l7-filter 樣式檔得知。

請檢視 /etc/l7-protocols 目錄下的 file_types、 protocols、weakpatterns、extra 及 malware 子目錄下
附檔名為 pat 的檔案, 它們就是 l7-filter 的樣式檔。

裡面有簡單的說明, 告訴您這個樣式檔可以過濾哪些類型網路軟體的封包, 以及它的過濾規則。
而 --l7proto 參數後面僅需填樣式檔的名稱即可 (不含附檔名)。

以下是筆者所檢視的 msnmessenger.pat 檔, 您只要將 --l7proto http 換成 --l7proto msnmessenger 即可阻擋 MSN。
筆者檢視 /etc/l7-protocols/protocols/msnmessenger.pat 檔的內容如下:


# MSN Messenger - Microsoft Network chat client
                     ↑由說明可知是阻擋 MSN 的樣式檔
# Pattern quality: good  Messenger
#
# Usually uses port 1863
# http://www.hypothetic.org/docs/msn/index.php
#
# This pattern has been tested and is believed to work well.  
# If it does not work for you, or you believe it could be      
#    improved, please
# post to [email protected] .  This list may be
# subscribed to at
# http://lists.sourceforge.net/lists/listinfo/l7-filter-
# developers

msnmessenger
# ver: allow versions up to 99.
# usr (in case ver didn't work):
^(ver [0-9]+ msnp[1-9][0-9]? [\x09-\0d -~]* cvr|usr md5 i [ -~]*)
                                           ↑符合的封包字串
      
過濾常見的即時通訊軟體

常見的即時通訊軟體有 MSN Messenger、Yahoo Messenger 和 ICQ, 若要擋下這些軟體,
所需要用到的 l7-filter 樣式檔有 /etc/l7-protocols/protocols/ 目錄下的 msnmessenger.pat、yahoo.pat 與 aim.pat。
其中因為 ICQ 已經賣給 AOL (American online), 所以亦叫 AIM (AOL instant messenger)。

知道要使用哪些 l7-filter 樣式檔之後, iptables 的寫法如下:


[root@free ~]# iptables -t mangle -I POSTROUTING -m layer7
         --l7proto msnmessenger -j DROP
       ↑阻擋 MSN Messenger
[root@free ~]# iptables -t mangle -I POSTROUTING -m layer7
         --l7proto yahoo -j DROP
        ↑阻擋 Yahoo Messenger
[root@free ~]# iptables -t mangle -I POSTROUTING -m layer7
         --l7proto aim -j DROP
              ↑阻擋 ICQ
      


設定好後, 可如下檢視:


[root@free ~]# iptables -t mangle -L POSTROUTING
         ↑檢視 mangle 表格的 POSTROUTING 鏈
Chain POSTROUTING (policy ACCEPT)
target prot opt source    destination
DROP   all  --  anywhere  anywhere LAYER7 l7proto aim         
DROP   all  --  anywhere  anywhere LAYER7 l7proto yahoo      
DROP   all  --  anywhere  anywhere LAYER7 l7proto msnmessenger
              ↑阻擋常見的即時通訊軟體
      


此後,只要使用者開啟即時通訊軟體時, 就會發現無法連上網路:

過濾常見的 P2P 軟體

常見的 P2P 軟體有 eMule、eDonkey、Kazaa 與 Bittorrent...等, 要擋這些軟體需要用到的 l7-filter 樣式檔有
/etc/l7-protocols/protocols 目錄下的 bittorrent.pat 與 fasttrack.pat 和 /etc/l7-protocols/weakpatterns 目錄下的
edonkey.pat 檔。

其中 bittorrent.pat 可以阻擋所有使用 bittorrent 通訊協定的軟體, 如 ABC、Bitcomet ...等。
fasttrack.pat 可以阻擋 kazaa。edonkey.pat 可以阻擋所有使用 eDonkey 通訊協定的軟體, 如 eDonkey 與 eMule... 等。

設定方式如下:

[root@free ~]# iptables -t mangle -I POSTROUTING -m layer7
    --l7proto bittorrent -j DROP ←阻擋 bittorrent 通訊協定
[root@free ~]# iptables -t mangle -I POSTROUTING -m layer7
       --l7proto fasttrack -j DROP  ←阻擋 kazaa
[root@free ~]# iptables -t mangle -I POSTROUTING -m layer7
       --l7proto edonkey -j DROP    ←阻擋 eDonkey
      
檢視 mangle 表格的 POSTROUTING 鏈:

[root@free ~]# iptables -t mangle -L POSTROUTING
Chain POSTROUTING (policy ACCEPT)
target prot opt source    destination
DROP   all  --  anywhere  anywhere  LAYER7 l7proto edonkey
DROP   all  --  anywhere  anywhere  LAYER7 l7proto fasttrack
DROP   all  --  anywhere  anywhere  LAYER7 l7proto bittorrent
DROP   all  --  anywhere  anywhere  LAYER7 l7proto aim
DROP   all  --  anywhere  anywhere  LAYER7 l7proto yahoo
DROP   all  --  anywhere  anywhere  LAYER7 l7proto msnmessenger
                                
這樣 P2P 軟體使用時會發生連線錯誤,日後也不能使用了。

l7-filter 還可以過濾很多的封包, 比方說可以限制傳輸 jpg 或 gif 格式的圖檔。

當然還有其他更多的功能, 您可以自行閱讀 /etc/l7-protocols/ 目錄下的 l7-filter 樣式檔的說明
以取得相關資訊。

TOP

發新話題