防火墙技术作为一种重要的网络安全技术,已经广泛开设于计算机网络、计算机网络安全技术、信息安全概论等课程中。但学习防火墙技术不仅仅是学习书本上空洞的理论和抽象的安全策略,要使学生真正掌握好该技术,需要大量的实践环节加以理解、掌握和应用,提高学生的专业实践能力。如果利用专用的防火墙硬件作为实验设备,不仅具有价格昂贵、内部技术不透明的缺点,而且不能真正地让学生了解防火墙的体系结构、原理及技术,并加以灵活运用。因此本文利用Linux OS下的开放源代码软件IPtables及Squid,灵活地使用Linux主机实现各种防火墙技术,设置了若干防火墙技术实验项目,给出了实验环境的搭建。
1 包过滤防火墙实验
包过滤防火墙[1]可以在网络层或数据链路层截获数据,使用一些规则来确定是否转发或丢弃各个数据包。该文中将以Linux OS下的IPtables软件为例来说明包过滤防火墙实验设计,其实验环境搭建如图1所示。
在该环境中只设置1台Linux主机用于运行IPtables防火墙,三台Windows主机分别连接到防火墙主机的三块网卡(NIC)上,用于模拟私有网络、Internet区域和DMZ。为了满足实验的要求,在这三台Windows主机上需要安装一些必要软件如各种服务器软件并加以配置使其正确运行。在该实验环境中,设计满足如下网络安全要求的防火墙实验。
1) 允许网络接口eth1、eth2相连接的LAN1和LAN2之间进行相互通信。
2) LAN1和LAN2的任何主机可以使用internet中的任何服务(Web,E-mail,Ftp等)。
3) 来自internet的主机不能访问1023以下的LAN1和LAN2中的内部端口。
4) 拒绝从网络接口eth0直接访问防火墙本机的ICMP数据包,但是允许相应防火墙TCP请求的数据包进入。
5) 允许internet中的主机访问LAN1中的DNS服务、WEB服务、FTP服务,其它服务如telnet等禁止。
通过该实验可以使学生掌握防火墙包过滤技术, IPtables的防火墙规则编写方法、IPtables中的表和链的概念、数据包控制方法,防火墙在网络系统中的部署、安装、配置和测试方法等,为以后真正利用防火墙解决网络安全工程中的实际问题奠定坚实的基础。
2 网络地址翻译NAT实验
网络地址翻译(NAT)[2]也是一种重要的防火墙技术,它隐藏了内部的网络结构,外部攻击者无法确定内部网络的连接状态。通过设置规则,在不同的时候,内部网络向外连接使用的地址都可以不同,给外部攻击者造成了困难。同样NAT通过定义各种映射规则,可以屏蔽外部的连接请求,并可以将外部连接请求映射到不同的主机上。NAT实验环境如图2所示,可以设计如下实验。
1) 利用NAT进行IP地址伪装
将向外部网络上提供服务的服务器在物理上放置于私用网络中,假如私用网络中的一台服务器的IP地址为192.168.1.3/24,如果要对外部网络提供Web服务,就可以利用IPtables进行IP地址伪装,当外部网络中的主机对210.45.144.254进行Web请求时,该防火墙就转向私用网络中的192.168.1.3的服务器进行Web请求。可以使用下面的IPtables规则加以实现。
#IPtables -t nat -A PREROUTING -p tcp -d 210.45.144.254 —dport 80 -j DNAT —to-destination 192.168.1.3
2) 使用NAT代理访问外部服务
使私有网络中的主机通过NAT代理访问外部网络中的服务,可以使用下面的IPtables规则加以实现。
3 应用层代理服务器防火墙实验
代理服务器防火墙[3] 通过一种代理(Proxy)技术参与到一个TCP连接的全过程。从内部发出的数据包经过这样的防火墙处理后,就好像是源于防火墙外部网卡一样,从而可以达到隐藏内部网结构的作用。这种类型的防火墙被网络安全专家和媒体公认为是最安全的防火墙。它的核心技术就是代理服务器技术。
代理服务器可以用于禁止防问特定的网络服务,而允许其他服务的使用,通过防火墙服务器的通信信息,可以提供源于部分传输层,全部应用层和部分会话层的信息。另外还有识别并实施高层的协议,如http和ftp等的优点。
本实验项目拟用Squid代理服务器[4]实现高速Web代理,并且实现代理认证以及流量计费系统。图3是实现该实验项目的平台。
在以上的实验环境中,设计满足如下要求的实验:
1) 限制内网某些IP使用代理服务器,例如要使用地址范围10.10.43.1到10.10.43.254的主机允许访问Squid代理服务器可使用下面的方法定义acl。
一旦定义地址范围以后就可以用带allow动作的http_access命令把allowed_hosts指定为aacl进行下面的定义。
2) 实现代理认证,指定认证程序,并且指定代理认证的身份认证口令文件为/usr/local/squid/etc/passwd。
3) 实现Squid代理服务器访问报告生成器。Squid代理服务器访问统计系统可以利用Sarg软件加以实现,该软件可以从http://sarg.sourceforge.net/sarg.php下载sarg-2.3.1.tar.gz源代码软件包。该软件通过访问Squid的日志文件access.log实现用户访问情况统计、站点访问统计、拒绝访问统计、认证失败统计、访问流量统计、访问时间统计等各种信息统计。
4 结论
本文利用Linux OS下的IPtables、Squid以及其它开放源代码软件,灵活地使用Linux主机实现各种防火墙技术,包括使用IPtables实现包过滤防火墙、NAT代理、IP地址伪装、Squid代理服务器、代理认证、代理服务访问统计系统等,设置了若干防火墙技术实验项目,给出了实验环境的搭建。在节约实验设备硬件投资的情况下,使学生更深入地掌握防火墙原理、技术及实现,并提高学生的专业实践能力。
参考文献:
[1] 叶惠卿. 基于Linux iptables防火墙规则生成的研究与实现[D].广州:中山大学,2010.
[2] 崔建, 钱杰, 张蓓. 校园网中代理服务器和NAT设备的监控与防范[J]. 大连理工大学学报,2005,45(z1):s91-s94.
[3] 陈锦繁, 张凡, 杨文玲, 邓冠初. 基于代理的校园网计费管理系统[J]. 中山大学学报(自然科学版), 2002,41(z1):13-15.
[4] 张秀岭, 万旻, 骆建彬, 邓宪. Linux下基于Squid的多能代理系统与透明网关解决方案[J]. 微计算机应用, 2004,25(5):534-539.