使用layer7應用層過濾功能

--------使用layer7應用層過濾功能---------------
默認 netfilter/iptables 體系的不足
以基於網絡層的數據包過濾機制爲主,同時提供少量的傳輸層、數據鏈路層的過濾功能
難以判斷數據包對應於何種應用程序(如QQ、MSN)
netfilter-layer7 補丁包的作用
由“L7-filter”項目提供
通過爲Linux內核、iptables添加相應的補丁文件,重新編譯安裝後提供基於應用層(第7層)的擴展功能
通過獨立的 l7-protocols 協議包提供對各種應用層數據的特徵識別定義,便於更新
整體實現過程
添加內核補丁,重新編譯內核,並以新內核引導系統
添加iptables補丁,重新編譯安裝iptables
安裝l7-protocols協議定義包
使用iptables命令設置應用層過濾規則
使用的軟件包列表
Linux內核源碼包:linux-2.6.28.8.tar.bz2
iptables源碼包:iptables-1.4.2.tar.bz2
layer7補丁源碼包:netfilter-layer7-v2.21.tar.gz
協議定義包:l7-protocols-2009-05-10.tar.gz
--------重新編譯新內核-------------
釋放內核源碼包,併合並補丁
[root@localhost ~]# tar zxvf netfilter-layer7-v2.21.tar.gz -C /usr/src/
[root@localhost ~]# tar jxvf linux-2.6.28.8.tar.bz2 -C /usr/src/
[root@localhost ~]# cd /usr/src/linux-2.6.28.8
[root@localhost linux-2.6.28.8]# patch -p1 < ../netfilter-layer7-v2.21/kernel-2.6.25-2.6.28-layer7-2.21.patch
---------配置內核編譯參數------------

複製當前系統使用的內核配置文件,以此作爲基礎
當前系統的內核配置文件:/boot/config-2.6.18-8.el5
源碼目錄的默認配置文件名:.config
進入源碼目錄,執行“make menuconfig”命令
在配置界面中的操作
方向鍵 ?、?、?、? 用於定位功能項、菜單項
菜單項 <Select>、<Exit>、<Help>
空格鍵用於選擇配置類型
對不同功能的配置選擇
[   ]:空選時表示不需要在新內核中使用該功能
[ M ]:表示將此項功能編譯爲模塊,以便在需要時加載  Module
[ * ]:將此項功能直接編入新內核,作爲新內核的一部分需要配置哪些內核編譯參數
Code Netfilter Configuration 網絡過濾代碼配置
將“Netfilter connection tracking support”編爲模塊
將以下應用層過濾支持的功能也編譯爲模塊:
    "layer7" match support、"string" match support
    "time" match support、"connlimit" match support"
其他功能模塊根據實際需要酌情添加
“iprange” address range match support
“state” match support、"mac" address match support
IP: Netfilter Configuration IP包過濾功能配置
 將“IPv4 connection tracking support (require for NAT)”功能編爲模塊
將“Full NAT”部分的“MASQUERADE target support”、“REDIRECT target support”等功能也編譯爲模塊
編譯內核的模塊文件、執行程序
執行 make 命令即可
安裝編譯好的模塊文件
執行 make modules_install 命令
模塊文件將安裝到 /lib/modules/2.6.28.8/ 目錄
安裝編譯好的內核執行程序
執行 make install 命令
內核執行程序將複製爲 /boot/vmlinuz-2.6.28.8
修改grub.conf配置,重啓並以新內核進入系統
---------重新編譯安裝iptables工具--------------
先卸載原有的iptables軟件包
可以根據提示的依賴關係卸載相關的各軟件包
或者忽略依賴關係卸載幾個主要的軟件包即可
rpm -e iptables iptables-ipv6 iptstate --nodeps
合併補丁,並編譯安裝新的iptables工具
[root@localhost ~]# tar jxvf iptables-1.4.2.tar.bz2 -C /usr/src/
[root@localhost ~]# cd /usr/src/iptables-1.4.2/
[root@localhost iptables-1.4.2]# cp /usr/src/netfilter-layer7-v2.21/iptables-1.4.1.1-for-kernel-2.6.20forward/libxt_layer7.*  extensions/
[root@localhost iptables-1.4.2]# ./configure  --prefix=/  --with-ksource=/usr/src/linux-2.6.28.8
[root@localhost iptables-1.4.2]# make
[root@localhost iptables-1.4.2]# make install
---------安裝l7-protocols協議定義包 -------------
解包後直接執行“make install”命令即可
[root@localhost ~]# tar zxvf l7-protocols-2009-05-10.tar.gz
[root@localhost ~]# cd l7-protocols-2009-05-10
[root@localhost l7-protocols-2009-05-10]# make install
----------設置使用應用層過濾規則-----------
layer7應用層協議匹配
匹配格式:-m layer7 --l7proto 協議名
協議定義文件位於:/etc/l7-protocols/protocols
支持以下常見應用層協議的過濾
 qq:騰訊公司QQ程序的通訊協議
 msnmessenger:微軟公司MSN程序的通訊協議
 msn-filetransfer:MSN程序的文件傳輸協議
 bittorrent:BT下載類軟件使用的通訊協議
 xunlei:迅雷下載工具使用的通訊協議
 edonkey:電驢下載工具使用的通訊協議
其他各種應用層協議:ftp、http、dns、imap、pop3……
------------規則示例:過濾使用qq協議的轉發數據包-------
 iptables -A FORWARD -m layer7 --l7proto qq -j DROP
時間匹配
匹配格式:-m time --timestart 起始時間 --timestop 結束時間 --wekdays 每週的哪些天
時間以24小時製表示,例如 18:00
每週的哪些天以對應的英文縮寫表示,例如週一至週日分別爲 Mon、Tue、Wed、Thu、Fri、Sat、Sun
併發連接數匹配
匹配格式:-m connlimit --connlimit-above 上限數
字符串匹配
匹配格式:-m string --string “字串” --algo 算法
算法指的是用於比對數據包中字符串的特定方法,可以爲 bm 或 kmp ,其中任一種均可
--------實驗案例:Layer7應用層過濾策略---------------
需求描述
重新編譯Linux內核,添加l7-filter應用層過濾補丁
重新編譯iptables,添加l7-filter應用層過濾補丁
設置過濾規則,禁止使用QQ、MSN等聊天工具
設置過濾規則,禁止使用BT、電驢等下載工具
實現思路
重新編譯內核
重新編譯iptables
使用新的iptables程序設置應用層過濾策略
注意事項
注意選擇的layer7補丁文件要與內核、iptables的版本相匹配
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章