使用layer7应用层过滤功能
生活随笔
收集整理的這篇文章主要介紹了
使用layer7应用层过滤功能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ?默認 netfilter/iptables 體系的不足,以基于網絡層的數據包過濾機制為主,同時提供少量的傳輸層、數據鏈路層的過濾功能,難以判斷數據包對應于何種應用程序(如QQ、迅雷),通過為Linux內核、iptables添加相應的補丁文件,重新編譯安裝后提供基于應用層(第7層)的擴展功能
通過獨立的 l7-protocols 協議包提供對各種應用層數據的特征識別定義,便于更新整體實現過程。 添加內核補丁,重新編譯內核,并以新內核引導系統 添加iptables補丁,重新編譯安裝iptables 安裝l7-protocols協議定義包 使用iptables命令設置應用層過濾規則 使用的軟件包列表 Linux內核源碼包:linux-2.6.28.10.tar.bz2 iptables源碼包:iptables-1.4.6.tar.bz2 layer7補丁源碼包:netfilter-layer7-v2.21.tar.gz 協議定義包:l7-protocols-2009-05-28.tar.gz --------重新編譯新內核------------- 釋放內核源碼包,并合并補丁 [root@localhost ~]# tar zxvf netfilter-layer7-v2.21.tar.gz -C /usr/src/ [root@localhost ~]# tar jxvf linux-2.6.28.10.tar.bz2 -C /usr/src/ [root@localhost ~]# cd /usr/src/linux-2.6.28.10 [root@localhost linux-2.6.28.10]# 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.10/ 目錄 安裝編譯好的內核執行程序 執行 make install 命令 內核執行程序將復制為 /boot/vmlinuz-2.6.28.10 修改grub.conf配置,重啟并以新內核進入系統 ---------重新編譯安裝iptables工具-------------- 先卸載原有的iptables軟件包 可以根據提示的依賴關系卸載相關的各軟件包 或者忽略依賴關系卸載幾個主要的軟件包即可 rpm -e iptables iptables-ipv6 iptstate --nodeps 合并補丁,并編譯安裝新的iptables工具 [root@localhost ~]# tar jxvf iptables-1.4.6.tar.bz2 -C /usr/src/ [root@localhost ~]# cd /usr/src/iptables-1.4.6/ [root@localhost iptables-1.4.6]# 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.6]# ./configure ?--prefix=/ --with-ksource=/usr/src/linux-2.6.28.10 [root@localhost iptables-1.4.6]# make [root@localhost iptables-1.4.6]# make install ---------安裝l7-protocols協議定義包 ------------- 解包后直接執行“make install”命令即可 [root@localhost ~]# tar zxvf l7-protocols-2009-05-28.tar.gz [root@localhost ~]# cd l7-protocols-2009-05-28 [root@localhost ~]l7-protocols-2009-05-28]# 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的版本相匹配 關于iptables -m state出現invalid argument的解決方法 不是內核bug也不是iptables的原因,問題出在了新內核的配置上。在2.6.20之后的內核,在netfilter的配置以前在ipv4 netfilter configuration中的相當一部分移到了core netfilter configuration中,在core netfilter configuration中配置了state的match之后,另外必須在ip: netfilter configuration中的conntract也選上,否則就會出現本文標題中的invalid argument錯誤。這個問題,困擾了我很久,最終在國外的一個maillist上找到了原因。這個問題多出現在內核升級之后,對于很多發行版本,由于把所有的feature都編譯成了模塊,所以不會出現此問題。希望可以幫到大家。轉載于:https://blog.51cto.com/zhangjianjian/645658
總結
以上是生活随笔為你收集整理的使用layer7应用层过滤功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这是外露台铺的地板是什么木?
- 下一篇: 混合动力汽车,一般是燃油加电动吗