Linux下利用l7filter封杀迅雷、QQ、MSN


    CentOS 5.2-----------------------------------------------------最稳定的Linux服务器

    Linux-2.6.19.tar.gz ------------------------------------------2.6.19内核

    iptables-1.4.1.1.tar.gz--------------------------------------iptables主程序

    netfilter-layer7-v2.21.tar.gz------------------------------l7filter主程序

    l7-protocols-2008-12-18.tar.gz--------------------------l7filter的封禁protocol脚本


    与l7filter有关的网站:

    http://l7-filter.sourceforge.net/protocols

    http://sourceforge.net/projects/l7-filter/

    http://protocolinfo.org/wiki/Main_Page


    注意查看netfilter-layer7-v2.21.tar.gz中的README文件,以便确定内核版本。

    iptables-1.4-for-kernel-2.6.20forward-layer7-[l7-filter version].patch

    forward表示支持内核版本为2.6.20或更新的版本。

    iptables-1.3-for-kernel-pre2.6.20-layer7-[l7-filter version].patch

    pre表示支持内核版本为2.6.20之前的内核老版本,包括2.4


    我们选择

    内核补丁为:kernel-2.6.25-2.6.28-layer7-2.21.patch

    Iptables的补丁为:iptables-1.4.1.1-for-kernel-2.6.20forward

    内核版本选择为:linux-2.6.27

    Iptables选择为:iptables-1.4.1.1.tar


    1. 为内核及iptables打l7filter补丁
    1.1安装gcc
    安装CentOS5.2时采用自定义软件,然后选中“based”并取消其它全部选定,进行基本安装。安装完成进入系统,首先安装GCC。

    # rpm -ivhU kernel-headers-2.6.18-92.el5.i386.rpm

    # rpm -ivhU glibc-headers-2.5-24.i386.rpm

    # rpm -ivhU glibc-devel-2.5-24.i386.rpm

    # rpm -ivhU libgomp-4.1.2-42.el5.i386.rpm

    # rpm -ivhU cpp-4.1.2-42.el5.i386.rpm

    # rpm -ivhU gcc-4.1.2-42.el5.i386.rpm

    查看一下GCC版本:

    # gcc -v

    gcc version 4.1.2 20071124 (Red Hat 4.1.2-42)

    再查看当前内核版本:

    # uname -r

    2.6.19-default

    还需要安装如下RPM包,这个包是在#make menuconfig 时必需的,否则报错:

    # rpm -ivhU ncurses-devel-5.5-24.20060715.i386.rpm

    1.2 给内核打补丁
    先将l7filter解压:

    # tar zxvf netfilter-layer7-v2.21.tar.gz

    再给内核打l7filter补丁:

    # tar zxvf linux-2.6.27.tar.gz

    # cd linux-2.6.27

    # patch -p1 < ../netfilter-layer7-v2.21/kernel-2.6.25-2.6.28-layer7-2.21.patch

    还需要修改如下文件,否则编译时出错:

    # vi scripts/kconfig/mconf.c

    将static struct menu *current_menu;这一行注释掉,

    并添加struct menu *current_menu;如下:

    //static struct menu *current_menu;

    struct menu *current_menu;

    把以前的配置文件拷贝到当前内核目录,以继承原有配置:

    # cp /boot/config-2.6.18-92.el5 ./.config

    # make mrproper   @@@删除不必要的文件和目录,初次编译内核不需要

    # make clean       @@@删除不必要的模块和文件

    # make menuconfig  @@@基于文本选单的配置界面,字符终端下推荐使用

    选择相应的配置时,有三种选择,它们分别代表的含义如下:
        Y--将该功能编译进内核
        N--不将该功能编译进内核
        M--将该功能编译成可以在需要时动态插入到内核中的模块

    Networking support --->Networking options--->Network packet filtering framework (Netfilter) --->Core Netfilter Configuration  --->

    选中如下两行:

    <M>"layer7" match support

    [*]  Layer 7 debugging output

    如下图所示:

 

  • 1
  • 2
  • 3
  • 4
  • 下一页

相关内容