CentOS 5.2(X86_64)  Layer 7 封包過濾實作

(注意! 本文僅供參考 , 如與其他版本不符,請自行斟酌) 
下載檔案需手動編譯新版本的核心並加入 layer7 封包過濾選項的話,需要俱備以下套件:
 
    * linux kernel source
    * iptables source
    * l7-filter patch
    * l7-filter protocols
 
在本例中,將重新編譯的版本如下:
 
    * kernel:linux-2.6.28.1.tar.gz
    * iptables:iptables-1.4.2.tar
    * l7-filter patch:netfilter-layer7-v2.21.tar.gz          (修補kernel與iptables)
    * l7-filter protocols:l7-protocols-2009-05-28.tar.gz
(layer7所支援的定義檔)
 
 


更新Kernel  , 並 patch kernel 支援layer7 封包過濾選項
# cd /usr/src
# tar zxvf  linux-2.6.28.1.tar.gz
# tar zxvf  netfilter-layer7-v2.21.tar.gz
# tar xvf  iptables-1.4.2.tar
# tar zxvf l7-protocols-2009-05-28.tar.gz
 
Patch kernel
# cd /usr/src/netfilter-layer7-v2.21
# cp  kernel-2.6.25-2.6.28-layer7-2.21.patch  ../linx-2.6.28.1
# cd  /usr/src/linux-2.6.28.1
# patch -p1  <  kernel-2.6.25-2.6.28-layer7-2.21.patch
 
patching file net/netfilter/Kconfig
patching file net/netfilter/Makefile
patching file net/netfilter/xt_layer7.c
patching file net/netfilter/regexp/regexp.c
patching file net/netfilter/regexp/regexp.h
patching file net/netfilter/regexp/regmagic.h
patching file net/netfilter/regexp/regsub.c
patching file net/netfilter/nf_conntrack_core.c
patching file net/netfilter/nf_conntrack_standalone.c
patching file include/net/netfilter/nf_conntrack.h
patching file include/linux/netfilter/xt_layer7.h
 
開始make kernel
# cd /usr/src/linux-2.6.28.1
# vi  Makefile
 
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 28
EXTRAVERSION = .1   ==> 改成 EXTRAVERSION =-L7filter
 
# cp /boot/config-2.6.18-92.el5  .config    (使用CentOS 5.2所附的設定檔)
# make menuconfig
  
(打開核心選項)                         
-*- Networking support  --->
      Networking options  --->
        [*] Network packet filtering framework (Netfilter)  --->
         [*]   Network packet filtering debugging
      [*]   Advanced netfilter configuration (NEW)
              Core Netfilter Configuration  --->
              <*> Netfilter connection tracking support
                             <M>   "layer7" match support                                 
                             [*]     Layer 7 debugging output
                        IP: Netfilter Configuration  --->
  
以上相關的選項都選擇 , 比較保險
 

##### make kernel 步驟一 #########
# make all
# make modules_install
# depmod -a
# mkinitrd  /boot/initrd-2.6.28-L7filter.img   2.6.28-L7filter
# cp System.map  /boot/Sytem.map-2.6.28-L7filter
# cp  /usr/src/linux-2.6.28.1/arch/x86_64/boot/bzImage     /boot/vmlinuz-2.6.28-L7filter
 
### 如步驟一有問題 ,可試此步驟二  ####
#make
#make modules
#make modules_install
#make install
#cd /boot
#mkinitrd -o initrd-2.6.28-L7filter.img   2.6.25-L7filter
#cp  /usr/src/linux-2.6.28.1/arch/x86_64/boot/bzImage   /boot/vmlinuz-2.6.28-L7filter
 

修改GRUB開機,加入新的Kernel開機選項
# vi /etc/grub.conf
 
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.28-L7filter)
       root (hd0,0)
       kernel /vmlinuz-2.6.28-L7filter ro root=LABEL=/ rhgb quiet
       initrd /initrd-2.6.28-L7filter.img
title CentOS (2.6.18-92.el5)
       root (hd0,0)
       kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet
       initrd /initrd-2.6.18-92.el5.img
   
# sync
# reboot 
# uname -a  
(查看核心版本)
 
  Linux centos5-2.example.com 2.6.28-L7filter  ....
 
更新與修補iptables
iptables 1.4.1.1 (含) 之後版本的 layer 7 模組已經不需要使用 patch 方式來修改,
只要把修正檔複製到 extensions 資料夾即可。
# cd  /usr/src/netfilter-layer7-v2.21/iptables-1.4.1.1-for-kernel-2.6.20forward
# cp  libxt_layer7.*     ../../iptables-1.4.2/extensions/
# cd  /usr/src/iptables-1.4.2
# ./configure  --with-ksource=/usr/src/linux-2.6.28.1
# make
# make install
 
安裝通訊定義檔 l7-protocols-2009-05-28.tar.gz
# cd /usr/src/l7-protocols-2009-05-28
# make install
 
(以下為執行結果不用打)
mkdir -p /etc/l7-protocols
cp -R * /etc/l7-protocols
 

重新開機
# sync
# reboot
# iptables -V 
(檢查iptables版本)
 
iptables v1.4.2
 
將新的iptables 1.4.2 取代 1.3.5 的版本
# cd /sbin
# mv /sbin/iptables  /sbin/iptables.1.3.5
# mv /sbin/iptables-restore  /sbin/iptables-restore.1.3.5
# mv /sin/iptables-save  /sbin/iptables-save.1.3.5
# ln -s  /usr/local/sbin/iptables  iptables
# ln -s  /usr/local/sbin/iptables-restore  iptables-restore
# ln -s  /usr/local/sbin/iptables-save   iptables-save
 
測試 iptables l7filter 語法
# iptables -m layer7 --help
 
阻擋MSN
# iptables -t mangle -I POSTROUTING -m layer7  --l7proto msnmessenger -j DROP  

 

    全站熱搜

    devin167 發表在 痞客邦 留言(3) 人氣()