Chinaunix首页 | 论坛 | 博客
  • 博客访问: 164668
  • 博文数量: 37
  • 博客积分: 2218
  • 博客等级: 大尉
  • 技术积分: 315
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-04 23:35
文章分类

全部博文(37)

文章存档

2012年(1)

2011年(5)

2010年(31)

分类: LINUX

2010-03-12 13:07:49

    您是不是总为你公司的员工在上班时间QQ,MSN,在线PPLIVE而发愁呢,那么您就装上L7-filter吧,它支持很多种协议:p2p,kugoo,msn,pplive,qq,xunlei.这些都是可以被他控制的。它还可以基于内容进行过滤,功能是不是很强悍啊?
    由于实验环境的问题,就先介绍一下L7-filter基于内容过滤的实验。
 
 
采用七层过滤的iptables防火墙
首先准备一下实验环境,准备三台虚拟机,一台做内网主机,一台做做防火墙,一台做外网服务器。
内网主机  ip地址为192.168.100.2
外网服务器ip地址为192.168.1.2 (提供WWW服务和FTP服务)
防火墙的  内网网卡ip192.168.100.1
          外网网卡ip192.168.1.1
测试一下,先让整个网络可以正常通信
在内网客户机上
#ping 192.168.1.2
 
 
 
因为我们要实现七层过滤,这样就牵涉到编译内核了,要求把我们的的内核版本是在2.42.6之间的,所以准备一下,开始编译内核吧。
linux-2.6.28.10.tar.gz  (内核)
netfilter-layer7-v2.22.tar.gz   l7包)
iptables-1.4.4.tar.bz2  (防火墙)
l7-protocols-2009-05-28.tar.gz
好了,开始
#tar  zvxf linux-2.6.28.10.tar.gz  -C /usr/src
#tar  zvxf netfilter-layer7-v2.22.tar.gz  -C /usr/src
#ln  -s /usr/srclinux-2.6.28.10/    /usr/src/linux  (创建链接)
#cd  /usr/src/linux/
#patch   -p1 <   ../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch
(其中-p1中的1表示忽略第一层路径(给我们的内核打上补丁)
#cp  /boot/config-2.6.18-164.el5   /usr/src/linux/.config
如果没有编译工具,请先安装一下
#system-config-packages  (在Development中除了JaveRuby不选以外,其余的都选就行了)
 
 
 
 
 
 
 
 
 
安装开发工具的时间可能有点长。
然后就可以编译我们的内核了
#make  menuconfig
 
 
添加一下几个模块
Networking support Networking Options Network packet filtering framework Core Netfilter Configuration 添加一下模块
  Netfilter connection tracking support
  “layer7” match support
  “string” match support
  “time”  match support
  “iprange”  match support
  “connlimit”  match support
  “state”  match support
  “conntrack”  connection  match support
  “mac”  address  match support
   "multiport" Multiple port match support
Networking support Networking Options Network packet filtering framework IP: Netfilter Configuration下添加
IPv4 connection tracking support (required for NAT)
   Full NAT
     MASQUERADE target support                                                                                        NETMAP target support                                                                                    REDIRECT target support
   FTP protocol support
选完需要添加的模块后,保存推出。
接着执行一下操作:
#make  (编译内核)
#make  modules_install (编译模块)
#make  install (安装内核和模块)
然后编辑/boot/grub/grub.conf文件,让我们新编的2.6.28.10内核设为开机默认启动内核
 
 
然后重启你的系统
#shutdown –h  now
内核已经编译好了,现在开始升级我们的防火墙
#uanme –r 先检查一下我们的内核版本,确定一下
 
 
#cp /etc/rc.d/init.d/iptables  ~/iptables (复制一份iptables的配置文件)
#service   iptables  save (如果不想丢失以前配置的防火墙的规则的话就保存一下)
#cp  /etc/sysconfig/iptables   ./iptables_rules (复制我们的规则)
#rpm  -e  iptables-ipv6  iptables  ipstate  --nodeps (卸载iptables
#tar jxvf iptables-1.4.4.tar.bz2  -C  /usr/src
#cd  /usr/src/iptables-1.4.4
#cp  ../netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.*   ./extensions/
#make
#make  install
#tar zxvf  l7-protocols-2009-05-28.tar.gz
#cd  l7-protocols-2009-05-28
#make  install
为了可以让我们使用service这个命令来启动iptables,需要加一个链接
#ln   /usr/sbin/iptables   /sbin/
#mv  ~/iptables  /etc/rc.d/init.d/  (将iptables脚本文件重新移过来)
#mv  ~/iptables_rules  /etc/sysconfig/iptables (移动我们的规则)
#cd  /etc/sysconfig
#mv iptables-config-rpmsave iptables-config(移动iptables配置文件)
#service  iptables  start (测试一下iptables能否启动起来)
 
先关闭防火墙,用内网用户访问外网,先测试一下
#service iptables stop
 
 
 
 
现在确定了,内网用户可以随便访问外网WWWFTP服务了。
好了,开始配置我们的iptables,来控制我们的内网用户访问外网。
让我们感受一下iptables的强大哈!
为了测试我们的iptables可以做基于内容的过滤,我们现在WWW上修改网页内容,也在FTP上添加一个文件。
#vim  /var/www/html/index.html
在上面添加一些内容 !!sex!!
 
 
 
#vim  /var/ftp/pub/test.txt
 
 
好了,开始配置防火墙规则:
先设置默认规则,我们是边界防火墙,所以过滤FORWARD这个链
#iptables –P FORWARD DROP设置FORWARD的默认规则为DROP
#iptables –L –n   查看规则
 
 
 
 
 
现在,内网就不能访问外网了,为了让内网访问外网服务,我们添加一下规则
#iptables  –A FORWARD     -p  tcp   - -dport 80   –j  ACCEPT
#iptables  –A  FORWARD    -p  tcp  - -sport 80   -j   ACCEPT
(以上两条协议让内网用户可以访问外网WWW服务)
#iptables  –A FORWARD     -p  tcp  - -dport 21  –j  ACCEPT
#iptables  –A  FORWARD   -p  tcp   - -sport 21   -j   ACCEPT
#iptables –A FORWARD  -m state  --state  ESTABLISHED,RELATED  -j  ACCEPT
(以上三条规则让内网用户可以访问FTP服务)
 
 
 
这样就可以限制内网用户只能使用WWWFTP服务了,但是为了管理的更加严格,需要限制内网用户浏览一些网页和下载一些文件,然而这样的管理也就是我们的七层过滤防火墙的好处之所在,基于内容的过滤。
要在这些规则前插入一条规则:
首先要查一下规则,看加到那个位置(因为防火墙的规则是从上到下逐个匹配的,如果把这个规则加在最后,就没意义了,因为防火墙已经找到匹配项了,就不会查看这条规则了)
#iptables  -L  - -line-numbers  -n
#iptables -I FORWARD 1 –m string - -string “sex”- -algo bm –j DROP 
 
 
现在在客户机上测试一下啊!
 
 
 
(看到了吗?现在内网用户不能访问还有“sex”字符的网页了,发现一个细节没,同样是打不开网页,但是两次返回的信息是不一样的,上次的出现是Making connection,因为上次FORWARD链是DROP,全都禁止,所以本地客户访问的请求根本就发不出去,而这次,请求是可以发出去了,但是服务器在相应它的时候,返回的网页中还有“sex”字符,防火墙不让过,所以还是本地用户访问不了网页。)
在看一下内网用户访问FTP服务;
当你下载fstab文件的时候,很快就下载下来了。当你下载含有特殊字符“sex”test.txt时,就会卡在那里,下载不了。
如果您按ctrl+z直接推出FTPtest.txt文件虽然下载下来了,但是个空文件。
 
 
这样就能实现简单的绿色上网了,当然这只是些简单限制。
如果您限制公司员工的上网时间,如深夜01000600,这时候公司都没人了,当然您不希望公司还有人在上网吧,只要在iptables再插入一条规则
#iptables -I  FORWARD 1 –m time      - -timestart 01:00               - -timestop 06:00  -j  DROP
 
当然,我们这里用到的规则只是一些皮毛,甚至连皮毛都不算,我们的l7-filter iptables的功能强大的多。它可以限制很多协议。也可以限制很多软件上网,如限制公司内部人员上QQ,听kugoo,PPlive等。相信内容可以参考一下网站:,上面有详细介绍。
 
 
 
 
 
 
 
 
 
 
 
 
 
阅读(2192) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~