1. 程式人生 > >Linux防火墻iptables(三)

Linux防火墻iptables(三)

登錄 發現 實驗 置配 才有 設置 是我 簽名 all

Linux防火墻iptables(三)
我們前面兩篇已經把iptables介紹的比較充分了,今天來說一個iptables對layer 7的實踐。我們說過iptables/netfilter工作在內核空間是不支持應用層協議的,但是諸如QQ、MSN、迅雷等應用我們是無法在傳輸層或者網絡層完全封閉它們的,因為它們非常狡猾發現自己的端口被封掉之後會用其它打開的端口進行傳輸數據,所以只有在7層中封閉它們才行。所以有人就針對這種情況對iptables/netfilter進行了二次開發,寫了一些補丁,我們打上這些補丁可以使iptables支持7層協議。
因為iptables-l7的作者在09年之後就沒有在更新過這個補丁,所以它所依賴的內核版本和iptables程序包都比較老,所以我們需要自己編譯內核,自己編譯iptables才能使用。
我們需要用到以下幾個包:

安裝編譯環境:

創建編譯所需用戶、解壓內核文件:

向內核打layer 7的補丁:

配置並編譯內核:

為了節省時間,我們用系統自帶的config文件做模板在其基礎上進行修改

選擇網絡功能:

選擇網絡選項:

選擇netfilter模塊:

選擇netfilter核心配置:

添加支持layer7層模塊:

關閉RedHat內核模塊校驗:

保存退出:

因為紅帽為了防止其它人更改其內核模塊進行二次發行,所以添加了模塊簽名機制,我們的模塊沒有紅帽的簽名,所以需要關閉這個功能才能編譯成功。

#yum install screen -y
#screen
#make –j 4
#make modules_install

#make install
查看新內核是否安裝成功:

使用新內核啟動:

編譯前的準備工作:

編譯安裝:

設置配套的腳本和配置文件:

安裝layer7的補丁:

開啟連接追蹤功能:

構建實驗拓撲:
NAT Server:192.168.1.0/24, 192.168.23.0/24
Client:192.168.23.0/24

創建NAT條目:

可以看到Client的確是通過NAT Server上網的:

現在QQ也可以登錄:

設置layer7層條目拒絕QQ:

已經登錄失敗了:

匹配到的layer7的規則:

還是能夠上網:

匹配到的NAT規則:

拒絕QQ連接的原理:

OK,我們的實驗成功啦。可以有效的防止QQ登錄,但是還可以上網。雖然我們可以完成這樣甚至限制更多的7層服務的功能,但是我是不贊成公司使用的,因為只有自由開放的公司才有活力,靠權利去禁止某些東西歸根結底治標不治本。如有錯誤敬請指出。

技術分享圖片

Linux防火墻iptables(三)