文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>centos5打iptables-p2p补丁及layer7扩展

centos5打iptables-p2p补丁及layer7扩展

时间:2009-03-27  来源:zyf76123

centos5打iptables-p2p补丁及layer7扩展
一、    准备工作 根据内核版本的相关性我还是选择了linux-2.6.18.8这个内核的版本。   1、下载相关程序 下载 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 下载layer7扩展(第一个为layer7协议,第二个为layer7内核与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、解压相关程序 tar zxvf linux-2.6.24.tar.gz -C /usr/src/ cp patch-2.6.24.gz /usr/src/ tar jxvf iptables-1.4.1.tar.bz2 -C /usr/src/ tar jxvf patch-o-matic-ng-20081008.tar.bz2 -C /usr/src/ tar zxvf l7-protocols-2008-10-04.tar -C /usr/src/ tar zxvf netfilter-layer7-v2.20.tar.gz -C /usr/src   3、定义相关符号链接 ln –s /usr/src/linux-2.6.18.8  /usr/src/linux ln –s /usr/src/iptables-1.3.8  /usr/src/iptables   二、     内核打补丁 1、修改内核源代码相关参数
  1、设置fd_set支持的最大数量
  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
  设置最大打开文件数量(TCP连接数量)
  #define INR_OPEN 1024 ---> 65536
  #define NR_FILE 8192 ---> 65536
  3、修改vi /usr/src/linux/include/net/tcp.h
  a、设置TIMEOUT的时间为1秒
  #define TCP_TIMEWAIT_LEN (60*HZ) 60 ---> 1*HZ
  b、设置在backlog队列里的半连接的重试次数,每次都会花相应的时间,本质上也是减少重试时间
  #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、内核打补丁 cd /usr/src/linux gunzip ../patch-2.6.26.6.gz |patch -p1   4、内核打layer7补丁 cd /usr/src/linux
patch –p1 </usr/src/netfilter-layer7-v2.20/for_older_kernels/kernel-2.6.22-2.6.24-layer7-2.18.patch
    三、安装netfilter扩展 1、安装netfilter扩展 cd /usr/src/patch-o-matic-ng-20081008 首先下载相关的扩展 ./runme –download 定义环境变量 export KERNEL_DIR=/usr/src/linux export IPTABLES_DIR=/usr/src/iptables   安装iptables netfilter的扩展项(我安装了以下项目) ./runme ipp2p ./runme time ./runme connlimit ./runme u32 ./runme geoip   四、配置内核选项 cd /usr/src/linux make menuconfig networking    networking options       network packet filtering (replaces ipchains) IP:Netfilter Configuration <M>   Layer 7 match support (EXPERIMENTAL)    [*]     Layer 7 debugging output   <M> IPP2P match support  <M> TIME match support  <M> Connections/IP limit match support   <M> U32 match support  <M> geoip match support 把 Layer 7 match 、ipp2p、time、 Connections/IP 、u32选上     去除Selinux相关  Security options     NSA SELinux Support 选项 去除 同时保存 退出 vi /etc/sysconfig/selinux     SELINUX=disabled   五、开始编译并安装 make make modules_install make install   2.6的kernel的编译把make bzImage make modules等步骤都在make一步都搞定,以前还要cp 内核和System.map,修改Grub.conf的步骤,统统make install搞定了。   六、设置grub.conf 设置default=0的相关项  主要是将我们配置好的新的内核启动的设置为缺省启动    重新启动计算机   七、安装新版本iptables以及layer7协议 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协议文件:
cd /usr/src/l7-protocols-2007-11-22
make install   同时要注意layer7屏蔽的信息会在终端画面显示,可以通过改变以下参数来关闭终端的显示:  vi /etc/sysconfig/syslog KLOGD_OPTIONS="-x -c 3"   修改好以后要重置syslogd服务 killall -HUP syslogd   3、以下为关于layer7如何屏蔽信息的相关知识 l7-filter 的語法與 iptables 類似, 在使用上差不多, 其格式大致如下:
iptables -t mangle -I POSTROUTING -m layer7 --l7proto http -j DROP
          ─┬──     ───┬────  ──┬──   ───┬───
使用 mangle 表格             │     符合 Layer 7 的封包     │
                   使用 POSTROUTING 鏈            Layer 7 封包的通訊協定
  其中比較需要注意的只有 --l7proto 參數後面所使用的 Layer 7 封包通訊協定, 它就是我們所要阻擋的封包類型。至於如何知道該填哪些名稱, 可由我們所安裝的 l7-filter 樣式檔得知。請檢視 /etc/l7-protocols 目錄下的 file_types、 protocols、weakpatterns、extra 及 malware 子目錄下附檔名為 pat 的檔案, 它們就是 l7-filter 的樣式檔。裡面有簡單的說明, 告訴您這個樣式檔可以過濾哪些類型網路軟體的封包, 以及它的過濾規則。而 --l7proto 參數後面僅需填樣式檔的名稱即可 (不含附檔名)。   過濾常見的即時通訊軟體

常見的即時通訊軟體有 MSN Messenger、Yahoo Messenger 和 ICQ, 若要擋下這些軟體, 所需要用到的 l7-filter 樣式檔有 /etc/l7-protocols/protocols/ 目錄下的 msnmessenger.pat、yahoo.pat 與 aim.pat。其中因為 ICQ 已經賣給 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
設定好後, 可如下檢視:

# 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
              ↑阻擋常見的即時通訊軟體 
此後,只要使用者開啟即時通訊軟體時, 就會發現無法連上網路:
過濾常見的 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 通訊協定的軟體, 如 ABC、Bitcomet ...等。fasttrack.pat 可以阻擋 kazaa。edonkey.pat 可以阻擋所有使用 eDonkey 通訊協定的軟體, 如 eDonkey 與 eMule... 等。

設定方式如下:
# iptables -t mangle -I POSTROUTING -m layer7  --l7proto bittorrent -j DROP ←阻擋 bittorrent 通訊協定
# 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 軟體使用時會發生連線錯誤,日後也不能使用了。

l7-filter 還可以過濾很多的封包, 比方說可以限制傳輸 jpg 或 gif 格式的圖檔。當然還有其他更多的功能, 您可以自行閱讀 /etc/l7-protocols/ 目錄下的 l7-filter 樣式檔的說明以取得相關資訊

察看目前使用的模块
 # lsmod
 
八、测试 uname -r 显示内核版本 iptables -V 显示iptables版本 ulimit -a 显示最大打开文件等参数 top 选择1 看多cpu支持情况   参考以下文档: http://www.chinaunix.net/jh/4/619047.html http://fanqiang.chinaunix.net/program/other/2005-10-20/3738.shtml http://cha.homeip.net/blog/archives/2005/12/l7filter.html http://www.router.net.cn/Article/11322.html
相关阅读 更多 +
排行榜 更多 +
房间毁灭模拟器最新版

房间毁灭模拟器最新版

休闲益智 下载
街头追逐者最新版

街头追逐者最新版

休闲益智 下载
弓箭手2内置作弊菜单

弓箭手2内置作弊菜单

休闲益智 下载