Centos5下安裝iptables以及l(fā)ayer7協(xié)議
Centos5打iptables-p2p補丁和layer7擴展。
一、 準(zhǔn)備工作
根據(jù)內(nèi)核版本的相關(guān)性我還是選擇了linux-2.6.18.8這個內(nèi)核的版本。
1、下載相關(guān)程序
下載 kernel源碼和源碼patch
http://www.kernel.org/pub/linux/kernel/v2.6/
下載iptables源碼
ftp://ftp.netfilter.org/pub/iptables/
下載netfiter擴展
ftp://ftp.netfiter.org/pub/patch-omatic-ng/snapshot
http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/
下載layer7擴展(第一個為layer7協(xié)議,第二個為layer7內(nèi)核與iptables的補丁)
wget http://downloads.sourceforge.net/l7-filter/l7-protocols-2007-11-22.tar.gz
wget http://downloads.sourceforge.net/l7-filter/netfilter-layer7-v2.16.1.tar.gz
2、解壓相關(guān)程序
tar zxvf linux-2.6.18.8.tar.gz -C /usr/src/
tar jxvf iptables-1.3.8.tar.bz2 -C /usr/src/
tar jxvf patch-o-matic-ng-20071120.tar.bz2 -C /usr/src/
tar zxvf l7-protocols-2007-11-22.tar.gz
tar zxvf netfilter-layer7-v2.16.1.tar.gz
3、定義相關(guān)符號鏈接
ln -s /usr/src/linux-2.6.18.8 /usr/src/linux
ln -s /usr/src/iptables-1.3.8 /usr/src/iptables
#p#
二、 內(nèi)核打補丁
1、修改內(nèi)核源代碼相關(guān)參數(shù)
1、設(shè)置fd_set支持的最大數(shù)量
a、修改vi /usr/include/bits/typesizes.h
#define __FD_SETSIZE 1024 ---> 65536
b、修改vi /usr/src/linux/include/linux/posix_types.h
#define __FD_SETSIZE 1024 ---> 65536
2、修改vi /usr/src/linux/include/linux/fs.h
設(shè)置最大打開文件數(shù)量(TCP連接數(shù)量)
#define INR_OPEN 1024 ---> 65536
#define NR_FILE 8192 ---> 65536
3、修改vi /usr/src/linux/include/net/tcp.h
a、設(shè)置TIMEOUT的時間為1秒
#define TCP_TIMEWAIT_LEN (60*HZ) 60 ---> 1*HZ
b、設(shè)置在backlog隊列里的半連接的重試次數(shù),每次都會花相應(yīng)的時間,本質(zhì)上也是減少重試時間
#define TCP_SYNACK_RETRIES 5 ---> 3
2、讀取原有的配置
首先做一個配置上的保存
cp /boot/config-2.6.18-8.el5 /usr/src/linux/.config
cd /usr/src/linux/
make menuconfig
選擇 Load an Alternate Configuration File
選擇 .config
保存 退出
3、內(nèi)核打補丁
cd /usr/src/linux
gunzip ../patch-2.6.18.8.gz |patch -p1
4、內(nèi)核打layer7補丁
cd /usr/src/linux
patch –p1
#p#
三、安裝netfilter擴展
1、安裝netfilter擴展
cd /usr/src/patch-o-matic-ng-20071120
首先下載相關(guān)的擴展
./runme –download
定義環(huán)境變量
export KERNEL_DIR=/usr/src/linux
export IPTABLES_DIR=/usr/src/iptables
安裝iptables netfilter的擴展項(我安裝了以下項目)
./runme ipp2p
./runme time
./runme connlimit
./runme u32
./runme geoip
#p#
四、配置內(nèi)核選項
cd /usr/src/linux
make menuconfig
networking
networking options
network packet filtering (replaces ipchains)
IP:Netfilter Configuration
[*] Layer 7 debugging output
把 Layer 7 match 、ipp2p、time、 Connections/IP 、u32選上
去除Selinux相關(guān)
Security options
NSA SELinux Support 選項 去除
同時保存 退出
vi /etc/sysconfig/selinux
SELINUX=disabled
#p#
五、開始編譯并安裝
make
make modules_install
make install
2.6的kernel的編譯把make bzImage make modules等步驟都在make一步都搞定,以前還要cp 內(nèi)核和System.map,修改Grub.conf的步驟,統(tǒng)統(tǒng)make install搞定了。
六、設(shè)置grub.conf
設(shè)置default=0的相關(guān)項 主要是將我們配置好的新的內(nèi)核啟動的設(shè)置為缺省啟動
重新啟動計算機
#p#
七、安裝新版本iptables以及l(fā)ayer7協(xié)議
1、cd /usr/src/iptables
export KERNEL_DIR=/usr/src/linux
export IPTABLES_DIR=/usr/src/iptables
patch -p1 < ../netfilter-layer7-v2.16.1/iptables-1.3-for-kernel-pre2.6.20-layer7-2.16.1.patch
chmod +x ./extensions/.layer7-test
make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man
make install BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man
2、安裝l7-filter協(xié)議文件:
cd /usr/src/l7-protocols-2007-11-22
make install
同時要注意layer7屏蔽的信息會在終端畫面顯示,可以通過改變以下參數(shù)來關(guān)閉終端的顯示:
vi /etc/sysconfig/syslog
KLOGD_OPTIONS="-x -c 3"
修改好以后要重置syslogd服務(wù)
killall -HUP syslogd
3、以下為關(guān)于layer7如何屏蔽信息的相關(guān)知識
l7-filter 的語法與 iptables 類似, 在使用上差不多, 其格式大致如下:
iptables -t mangle -I POSTROUTING -m layer7 --l7proto http -j DROP
─┬── ───┬──── ──┬── ───┬───
使用 mangle 表格 │ 符合 Layer 7 的封包 │
使用 POSTROUTING 鏈 Layer 7 封包的通訊協(xié)定
其中比較需要注意的只有 --l7proto 參數(shù)後面所使用的 Layer 7 封包通訊協(xié)定, 它就是我們所要阻擋的封包類型。至於如何知道該填哪些名稱, 可由我們所安裝的 l7-filter 樣式檔得知。請檢視 /etc/l7-protocols 目錄下的 file_types、 protocols、weakpatterns、extra 及 malware 子目錄下附檔名為 pat 的檔案, 它們就是 l7-filter 的樣式檔。裡面有簡單的說明, 告訴您這個樣式檔可以過濾哪些類型網(wǎng)路軟體的封包, 以及它的過濾規(guī)則。而 --l7proto 參數(shù)後面僅需填樣式檔的名稱即可 (不含附檔名)。
過濾常見的即時通訊軟體
常見的即時通訊軟體有 MSN Messenger、Yahoo Messenger 和 ICQ, 若要擋下這些軟體, 所需要用到的 l7-filter 樣式檔有 /etc/l7-protocols/protocols/ 目錄下的 msnmessenger.pat、yahoo.pat 與 aim.pat。其中因為 ICQ 已經(jīng)賣給 AOL (American online), 所以亦叫 AIM (AOL instant messenger)。
知道要使用哪些 l7-filter 樣式檔之後, iptables 的寫法如下:
# iptables -t mangle -I POSTROUTING -m layer7 --l7proto msnmessenger -j DROP
↑阻擋 MSN Messenger
# iptables -t mangle -I POSTROUTING -m layer7 --l7proto yahoo -j DROP
↑阻擋 Yahoo Messenger
# iptables -t mangle -I POSTROUTING -m layer7 --l7proto aim -j DROP
↑阻擋 ICQ
設(shè)定好後, 可如下檢視:
# 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
↑阻擋常見的即時通訊軟體
此後,只要使用者開啟即時通訊軟體時, 就會發(fā)現(xiàn)無法連上網(wǎng)路:
過濾常見的 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 通訊協(xié)定的軟體, 如 ABC、Bitcomet ...等。fasttrack.pat 可以阻擋 kazaa。edonkey.pat 可以阻擋所有使用 eDonkey 通訊協(xié)定的軟體, 如 eDonkey 與 eMule... 等。
設(shè)定方式如下:
# iptables -t mangle -I POSTROUTING -m layer7 --l7proto bittorrent -j DROP ←阻擋 bittorrent 通訊協(xié)定
# iptables -t mangle -I POSTROUTING -m layer7 --l7proto fasttrack -j DROP ←阻擋 kazaa
# iptables -t mangle -I POSTROUTING -m layer7 --l7proto edonkey -j DROP ←阻擋 eDonkey
檢視 mangle 表格的 POSTROUTING 鏈:
# 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 軟體使用時會發(fā)生連線錯誤,日後也不能使用了。
l7-filter 還可以過濾很多的封包, 比方說可以限制傳輸 jpg 或 gif 格式的圖檔。當(dāng)然還有其他更多的功能, 您可以自行閱讀 /etc/l7-protocols/ 目錄下的 l7-filter 樣式檔的說明以取得相關(guān)資訊
察看目前使用的模塊
# lsmod
八、測試
uname -r 顯示內(nèi)核版本
iptables -V 顯示iptables版本
ulimit -a 顯示最大打開文件等參數(shù)
top 選擇1 看多cpu支持情況
通過長篇文章的介紹,我們知道了Centos5下安裝iptables以及l(fā)ayer7協(xié)議,希望對大家有所幫助!
【編輯推薦】