|
| FC4下升級(jí)內(nèi)核到2.6.15.4及給netfilter打補(bǔ)丁
1.編輯環(huán)境
VMware workstation 5.5.1 (我是自定義的,硬盤是IDE) Fedora Core release 4 Kernel 2.6.11-1.1369_FC4
2.安裝FC4系統(tǒng)
安裝時(shí)選擇自定義安裝,軟件包只選擇development tools這個(gè)選項(xiàng),開始安裝系統(tǒng)...
3.下載需要的原碼包
cd /usr/src
(下載內(nèi)核源代碼) wget -c http://www.kernel.org/pub/linux/ ... ux-2.6.15.4.tar.bz2
(下載netfilter源代碼) wget -c http://ftp.netfilter.org/pub/iptables/iptables-1.3.5.tar.bz2
(下載netfilter補(bǔ)丁)
wget -c http://ftp.netfilter.org/pub/pat ... ng-20060209.tar.bz2
(下載ipp2p源代碼,patch-o-ma自帶的是0.7.2的,0.8.1_rc1可以支持更多的協(xié)議)
wget -c http://www.ipp2p.org/downloads/ipp2p-0.8.1_rc1.tar.gz
(下載netfilter-layer7源代碼) wget -c http://keihanna.dl.sourceforge.n ... -layer7-v2.1.tar.gz
(下載netfilter-layer7協(xié)議) wget -c http://belnet.dl.sourceforge.net ... s-2006-01-22.tar.gz
(下載geoip根據(jù)地理位置匹配用的2個(gè)文件,我們也把它下載下來(lái),如果你不用,可以不下) wget -c http://people.netfilter.org/peej ... 0050410/geoipdb.bin wget -c http://people.netfilter.org/peej ... 0050410/geoipdb.idx
4.解壓代碼包和建立geoip目錄
cd /usr/src tar -jxvf linux-2.6.15.4.tar.bz2 tar -jxvf iptables-1.3.5.tar.bz2 tar -jxvf patch-o-matic-ng-20060209.tar.bz2 tar -zxvf netfilter-layer7-v2.1.tar.gz tar -zxvf l7-protocols-2006-01-22.tar.gz mkdir /var/geoip cp geoipdb.bin /var/geoip cp geoipdb.idx
5.給kernel和iptables打補(bǔ)丁
cd /usr/src ln -s /usr/src/linux-2.6.15.4 linux cd /usr/src/linux make mrproper cp /boot/config-2.6.11-1.1369_FC4 ./.config make menuconfig (什么都不做,保存退出,其實(shí)可以不做這一步,但是為了保證.cofnig文件的存在,我們還是要做下)
cd /usr/src/patch-o-matic-ng-20060209
KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/usr/src/iptables-1.3.5 ./runme string (string 2.6.15.4已經(jīng)包含這個(gè)補(bǔ)丁,不用在打了,打你也打不上的patch里沒有) KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/usr/src/iptables-1.3.5 ./runme comment (comment 2.6.15.4已經(jīng)包含這個(gè)補(bǔ)丁) KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/usr/src/iptables-1.3.5 ./runme connlimit (2.6.15.4已經(jīng)包含這個(gè)補(bǔ)丁) KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/usr/src/iptables-1.3.5 ./runme iprange (2.6.15.4已經(jīng)包含這個(gè)補(bǔ)丁)
KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/usr/src/iptables-1.3.5 ./runme geoip KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/usr/src/iptables-1.3.5 ./runme nth KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/usr/src/iptables-1.3.5 ./runme ipp2p KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/usr/src/iptables-1.3.5 ./runme quota KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/usr/src/iptables-1.3.5 ./runme time cd /usr/src/linux patch -tp1 < /usr/src/netfilter-layer7-v2.1/kernel-2.6.13-2.6.15-layer7-2.1.patch cd /usr/src/iptables-1.3.5 patch -tp1 < /usr/src/netfilter-layer7-v2.1/iptables-layer7-2.1.patch chmod +x /usr/src/iptables-1.3.5/extensions/.layer7-test 6.選擇內(nèi)核模塊
cd /usr/src make menuconfig
(代碼成熟度選項(xiàng)) Code maturity level options --->Prompt for development and/or incomplete code/drivers Select only drivers expected to compile cleanly
(網(wǎng)絡(luò)選項(xiàng),選擇你用的模塊,用空格鍵切換,選擇成M,不知道的用默認(rèn)就可以.) Networking ->Networking support Networking options ->Network packet filtering (replaces ipchains) ->Network packet filtering (replaces ipchains) ---> IP: Netfilter Configuration --->
(設(shè)備驅(qū)動(dòng)程序) Device Drivers ---> SCSI device support ---> SCSI low-level drivers ---> <*> BusLogic SCSI support Omit FlashPoint support Device Drivers ---> Network device support ---> Ethernet (10 or 100Mbit) --->EISA, VLB, PCI and on board controllers---> <*> AMD PCnet32 PCI support <M> AMD 8111 (new PCI lance) support
(文件系統(tǒng)) File systems ---> <*> Second extended fs support Ext2 extended attributes Ext2 POSIX Access Control Lists Ext2 Security Labels Ext2 execute in place support <*> Ext3 journalling file system support Ext3 extended attributes Ext3 POSIX Access Control Lists Ext3 Security Labels JBD (ext3) debugging support
!!!保存退出!!!
7.開始編輯內(nèi)核
cd /usr/src/linux make make modules_install install
現(xiàn)在你可以去喝杯咖啡看看電視,抽根煙了.呵呵....時(shí)間很長(zhǎng)啊!!! 如果你是高手,可以把內(nèi)核在做的小點(diǎn),把不該要的都kill掉,該選的都選上.爭(zhēng)取做到功能最全,內(nèi)核最小的境界,哈哈.....
內(nèi)核編輯完成 vi /boot/grub/grub.conf 把選項(xiàng) default=1 改成 default=0 把新內(nèi)核作為默認(rèn)啟動(dòng)項(xiàng) 從新啟動(dòng)系統(tǒng)shutdonw -r now 或者reboot 啟動(dòng)后選擇新的內(nèi)核2.6.15.4,老的內(nèi)核2.6.11還保留著,這樣你可以在新內(nèi)核不能啟動(dòng)時(shí),在去老內(nèi)核下從新編輯
8.升級(jí)iptables
cd /usr/src/iptables-1.3.5 export KERNEL_DIR=/usr/src/linux export IPTABLES_DIR=/usr/src/iptables-1.3.5 make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install
9.安裝layer7的協(xié)議支持
cd /usr/src/l7-protocols-2006-01-22 make install
10.更新ipp2p模塊,使他支持更多的協(xié)議
cd /usr/src/ipp2p-0.8.1_rc1
修改Makefile文件,應(yīng)該在第36行 vi Makefile 把 IPTABLES_SRC = /usr/src/iptables-1.2.9 改為 IPTABLES_SRC = /usr/src/iptables-1.3.5
make cp /usr/src/ipp2p-0.8.1_rc1/libipt_ipp2p.so /lib/iptables depmod -a
11.現(xiàn)在開始測(cè)試
11.1顯示內(nèi)核版本
uname -r 顯示如下: 2.6.15.4
11.2顯示iptables版本 iptables -V 顯示如下: iptables v1.3.5
11.3 字符串匹配,可以用做內(nèi)容過(guò)濾
iptables -A FORWARD -m string --algo kmp --string "www.qq.com" -j DROP iptables -I FORWARD -d 192.168.3.0/24 -m string --string "寬頻影院" --algo kmp -j DROP
11.4 Peer-to-Perr 過(guò)濾,封殺BT類P2P軟件
iptables -A INPUT -m ipp2p --ipp2p -j DROP iptables -A FORWARD -m ipp2p --edk --dc --kazaa --gnu --bit --apple --winmx --soul --ares -j DROP
11.5 時(shí)間匹配
iptables -A FORWARD -m time --timestart 08:00 --timestop 17:00 -j DROP
11.6 備注匹配,可以支持最多256個(gè)字符
iptables -I FORWARD -s 192.168.0.100 -p tcp --dport 80 -j DROP -m comment --comment "the bad guy can not online"
11.7 同時(shí)連接個(gè)數(shù)限制匹配 iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 -j DROP iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 -j DROP
11.8 ip范圍匹配
iptables -A FORWARD -m iprange --src-range 192.168.0.10-192.168.0.100 -j ACCEPT iptables -A FORWARD -m iprange --dst-range 192.168.1.5-192.168.1.124 -j ACCEPT
11.11 每隔N個(gè)匹配
iptables -t mangle -A PREROUTING -m nth --every 10 -j DROP
11.12 layer7應(yīng)用,可以到這里http://l7-filter.sourceforge.net看layer7的具體用法,l7-protocols里面的協(xié)議我只使用了幾個(gè)
iptables -A FORWARD -m layer7 --l7proto qq -j ACCEPT iptables -I FORWARD -m layer7 --l7proto msn-filetransfer -j DROP iptables -I FORWARD -m layer7 --l7proto socks -j ACCEPT 11.13 根據(jù)地理位置匹配
iptables -A INPUT -p tcp --dport 80 -m geoip --src-cc JP,US -j DROP iptables -A FORWARD -p tcp --dport 21 -m geoip --src-cc KR -j DROP
11.14 quota(配額匹配)
iptables -I FORWARD -s 192.168.0.100 -p tcp --dport 80 -m quota --quota 750 -j DROP
11.15 網(wǎng)絡(luò)地址翻譯
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
11.16 給數(shù)據(jù)包打標(biāo)記和TC流量控制工具相結(jié)合
iptables -A PREROUTING -t mangle -p tcp -j CONNMARK --restore-mark iptables -A PREROUTING -t mangle -p tcp -m mark ! --mark 0 -j ACCEPT iptables -A PREROUTING -t mangle -p tcp -m ipp2p --ipp2p -j MARK --set-mark 1 iptables -A PREROUTING -t mangle -p tcp -m mark --mark 1 -j CONNMARK --save-mark tc filter add dev eth0 parent 1:0 protocol ip prio 4 handle 1 fw classid 1:11 tc filter add dev eth1 parent 2:0 protocol ip prio 4 handle 1 fw classid 2:11
12.完成基本測(cè)試
終于寫完了,好累啊,現(xiàn)在已經(jīng)是凌晨5:00點(diǎn)了,如果時(shí)間夠的話我會(huì)多做些測(cè)試的,明天還要上班.沒辦法啊!!! 其實(shí)還有很多要測(cè)試的地方,希望看到這篇文檔而且對(duì)這個(gè)敢興趣的朋友可以測(cè)試下!!! |
|