ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Linux下利用l7filter封杀迅雷、QQ、MSN

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

原创 Linux操作系统 作者:junnylove 时间:2009-06-22 13:53:50 0 删除 编辑

  

Linux下利用l7filter封杀迅雷、QQMSN

 

 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.
为内核及iptablesl7filter补丁
    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  --->

    选中如下两行:

    "layer7" match support

    [*]  Layer 7 debugging output

    如下图所示:

 

    然后保存退出内核配置模式。

    # make dep             @@@链接程序代码和函数库

    # make bzImage         @@@开始编译系统内核,此步大约需要25分钟

    # make modules         @@@开始编译外挂模块,此步大约需要1个小时

    # make modules_install   @@@安装编译完成的模块

    # make install           @@@将刚才编译完成的内核安装到系统里面

    编译内核完成后,用新内核启动,然后进入系统

    看一下当前系统内核:

    # uname -r

    2.6.27

    1.3 安装iptables

    下面给iptablesl7filter补丁,并编译、安装:

    # tar jxvf iptables-1.4.1.1.tar.bz2

    # cd iptables-1.4.1.1

    # ln -s /home/l7filter/linux-2.6.27 /usr/src/linux

    #cp netfilter-layer7-v2.21/iptables-1.4.1.1-for-kernel-2.6.20forward/libxt_layer7.* iptables-1.4.1.1/extensions/

    # ./configure --with-ksource=/usr/src/linux/

    #make

    #make install

    查看一下iptables的版本信息:

    # iptables -v

    iptables v1.4.1.1: no command specified

    Try `iptables -h' or 'iptables --help' for more information.

    好了,现在我们已经完成了内核和iptablesl7filter的支持工作,下面开始设置。

    1.4安装l7-filter协议文件:
    # tar zxvf l7-protocols-2008-12-18.tar.gz

    # cd l7-protocols-2008-12-18

    # make install    @@@进行安装,只是拷贝了一些文件到/etc目录

    mkdir -p /etc/l7-protocols

    cp -R * /etc/l7-protocols

    2.利用l7filter来封禁迅雷、qqmsn….
   
首先我们查看一下l7filter支持的封禁列表:

    # ls /etc/l7-protocols/protocols/

    100bao.pat                gkrellm.pat               ncp.pat             ssdp.pat

    aim.pat                   gnucleuslan.pat           netbios.pat         ssh.pat

    aimwebcontent.pat         gnutella.pat              nntp.pat            ssl.pat

    applejuice.pat            goboogy.pat               ntp.pat             stun.pat

    ares.pat                  gopher.pat                openft.pat          subspace.pat

    armagetron.pat            guildwars.pat             pcanywhere.pat      subversion.pat

    battlefield1942.pat       h323.pat                  poco.pat            teamfortress2.pat

    battlefield2142.pat       halflife2-deathmatch.pat  pop3.pat            teamspeak.pat

    battlefield2.pat          hddtemp.pat               pplive.pat          telnet.pat

    bgp.pat                   hotline.pat               qq.pat              tesla.pat

    biff.pat                  http.pat                  quake1.pat          tftp.pat

    bittorrent.pat            http-rtsp.pat             quake-halflife.pat  thecircle.pat

    chikka.pat                ident.pat                 radmin.pat          tor.pat

    cimd.pat                  imap.pat                  rdp.pat             tsp.pat

    ciscovpn.pat              imesh.pat                 replaytv-ivs.pat    unknown.pat

    citrix.pat                ipp.pat                   rlogin.pat          unset.pat

    counterstrike-source.pat  irc.pat                   rtp.pat             uucp.pat

    cvs.pat                   jabber.pat                rtsp.pat            validcertssl.pat

    dayofdefeat-source.pat    kugoo.pat                 shoutcast.pat       ventrilo.pat

    dhcp.pat                  live365.pat               sip.pat             vnc.pat

    directconnect.pat         liveforspeed.pat          skypeout.pat        whois.pat

    dns.pat                   lpd.pat                   skypetoskype.pat    worldofwarcraft.pat

    doom3.pat                 mohaa.pat                 smb.pat             x11.pat

    edonkey.pat               msn-filetransfer.pat      smtp.pat            xboxlive.pat

    fasttrack.pat             msnmessenger.pat          snmp.pat            xunlei.pat

    finger.pat                mute.pat                  socks.pat           yahoo.pat

    freenet.pat               napster.pat               soribada.pat        zmaap.pat

    ftp.pat                   nbns.pat                  soulseek.pat

 

    我们可以看到,l7filter支持的封禁协议相当丰富,并且支持都很好。

 

    # iptables -t mangle -I POSTROUTING -m layer7 --l7proto msnmessenger -j DROP

    # iptables -t mangle -I POSTROUTING -m layer7 --l7proto qq -j DROP

    # iptables -t mangle -I POSTROUTING -m layer7 --l7proto xunlei -j DROP

    #iptables -t mangle -I PREROUTING -m layer7 --l7proto edonkey -j DROP

    #iptables -t mangle -I PREROUTING -m layer7 --l7proto bittorrent -j DROP

    上面命令将msnqq、迅雷、电驴、BT进行了封禁。

 

    其中红色部分就在我们用命令# ls /etc/l7-protocols/protocols/所看到的列表中。

 

    启动IP转发,使客户端可以通过pppoe服务器访问外网

    # echo 1 > /proc/sys/net/ipv4/ip_forward

    # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE -s 0/0

 

    下面我们进行测试l7filter服务器作为企业网络的网关,这里IP192.168.1.251):

   

    查看当前封禁情况:

    # iptables -t mangle -L POSTROUTING -v

    Chain POSTROUTING (policy ACCEPT 386 packets, 41321 bytes)

     pkts bytes target     prot opt in     out     source               destination

        0     0 DROP       all  --  any    any     anywhere             anywhere            LAYER7 l7proto aim

        0     0 DROP       all  --  any    any     anywhere             anywhere            LAYER7 l7proto bittorrent

        0     0 DROP       all  --  any    any     anywhere             anywhere            LAYER7 l7proto edonkey

        0     0 DROP       all  --  any    any     anywhere             anywhere            LAYER7 l7proto xunlei

        0     0 DROP       all  --  any    any     anywhere             anywhere            LAYER7 l7proto qq

        0     0 DROP       all  --  any    any     anywhere             anywhere            LAYER7 l7proto msnmessenger

    Qqmsn的连接失败信息:

    系统log信息

 

    L7filter的处理图示:

   

    <!--[if !vml]-->


    <!--[endif]-->

    其它的封禁情形不再一一演示,l7filter是个功能相当强大的七层网管,值得深入研究。

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8404772/viewspace-607138/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-06-22

  • 博文量
    36
  • 访问量
    88105