基于Linux的IPv6复合防火墙的设计
图2 ip6tables内置的过滤链表
应用服务代理
包过滤防火墙只考查数据包的少数几个参数,对高层的应用服务不能识别。为了能过滤服务连接,通过代理服务器使允许代理的服务通过防火墙,阻塞没有代理的服务。因此,使用代理服务的好处就是可以过滤协议,在应用层级建立起安全机制。应用代理后网络通信过程如图3所示。
图3 应用代理后网络通信过程
Squid是Linux下一个高性能的代理缓存服务器,支持FTP、gopher和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。可从www.squid-cache.org获取该软件的源代码安装包squid-2.5.STABLE.tar.gz,解压缩包:
#tarxvfzsquid-2.5.STABLE2.tar.gz
然后,进入相应目录对源代码进行配置和编译:
#cdsquid-2.5.STABLE2
#./configure--prefix=/var/squid
--sysconfdir=/etc
--enable-arp-acl
--enable-linux-netfilter
--enable-pthreads
--enable-err-language="Simplify_Chinese"
--enable-storeio=ufs,null
--enable-default-err-language="Simplify_Chinese"
最后执行#make;makeinstall将源代码编译为可执行文件完成安装。为了使squid支持IPv6,从devel.squid-cache.org/projects.html#squid3-ipv6下载squid3-ipv6.patch补丁并安装。接下来在/etc/squid.conf中对squid的运行进行配置。
下面是一个在配置文件中有关IPv6部分的简单例子:
#IPv6的访问控制列表
aclallsrc::/0
aclsitelocalsrcfec0:/16
aclipv4::ffff:0:0/96
#对列表所做的处理
http_accessdenyipv4
http_accessallowsitelocal
http_accessdenyall
IPv6复合型防火墙的设计
把分组过滤系统ip6tables和应用代理squid结合使用,由分组过滤控制通信的底层,代理服务器用于过滤应用层的服务,这样就能从网络层到应用层进行全方位的安全处理。比如若要对http协议进行控制,则用ip6tables把对Web端口80的请求转发到squid端口,由squid对这个应用层协议进行控制,而用户浏览器仍然认为它访问的是对方的80端口。如下面这条命令:
#ip6tables-tnat-APREROUTING-ieth0-s3ffe:ffff:200:: 1/128-ptcp--dport80-jREDIRECT--to-ports3128(eth0为防火墙主机输入接口,3128是squid监听HTTP客户连接请求的缺省端口)。系统的工作流程如图4所示。当一个数据包进入防火墙后,首先由ip6tables的nat表中PREROUTING链的规则来判断这个数据包的高层协议(如HTTP、FTP等)是否应受控制,若应受控制,则将其定向到squid端口,由squid代理进程进行处理,如上命令所示。之后,进行路由判断,若是防火墙本地包,则要由INPUT链处理,若是外地包,则要由FORWARD链来处理,最后经过POSTROUTING链的snat处理把数据包转发出防火墙,形成透明代理。如下命令所示:
图4 IPv6复合型防火墙系统的工作流程
ip6tables-APOSTROUTING-tnat-sIPv6(s1)-oeth1-jSNAT--to-sourceIPv6(s)。其中IPv6(s1)指数据包的源IPv6地址,eth1为防火墙主机输出接口,IPv6(s)指防火墙主机的出口地址。
若数据包来自防火墙主机本身,经过PREROUTING链规则处理,判断是否应进行squid代理,若是,则进行squid处理,之后经过OUTPUT链规则处理,再判断路由,最后由POSTROUTING链的snat处理把数据包转发出防火墙。
结论
由squid限定内外网络之间的服务连接,使它们都通过squid的介入和转换,再由防火墙本身提交请求和应答,这样就使内外网络的计算机不会直接进行会话,结合ip6tables的包过滤控制底层通信,从而能建立起一种从网络层到应用层坚固的IPv6防火墙系统。ip6tables和squid都可以免费获得,因此无论从安全性还是从经济性来说,这都是一种非常好的IPv6防火墙解决方案。
- Linux 防火墙配置基础篇(04-14)
- 基于S3C2440的嵌入式IPv6防火墙设计(09-02)
- 基于NetFPGA的支持远程可重配置的多功能硬件防火墙(06-04)
- 工业控制系统信息安全的探讨与实现(12-20)
- 教你用APF和BFD来加强Linux的防火墙(09-12)
- 用Linux系统防火墙功能抵御网络攻击(09-12)