宋光慧 郭建康
摘 要:在Linux操作系统中,利用IPTABLES服务实现了防火墙、NAT功能,并将端口转发规则和Web应用服务相结合,实现了用户Web认证功能,保证了内网计算机的安全。经过测试,系统能够高效稳定地运行,实现了设计目标。
关键词:防火墙 网络地址转换 端口转发 访问日志
中图分类号:TP393.08 文献标识码:B 文章编号:1673-8454(2009)03-0056-03
一、引言
随着Internet的迅速发展,宽带网络的接入日益增多,Internet用户的数量也迅速膨胀。尤其对于高校中的网络接入数量也快速增加,学校中网络管理人员面临着IP地址缺乏、用户访问认证、二级单位上网管理以及内部网络安全等一系列问题。特别是公安部门要求对上网用户进行身份认证和上网记录保存的问题,对网管人员提出了严格的要求。Linux操作系统的稳定安全和网络性能优异等特色,使其成为广大网管人员解决上述问题的首选。
IPTABLES是在Linux操作系统下基于2.4内核版本之后集成的网络安全工具,该工具实现了多种网络安全功能,如:数据包过滤、状态保持、NAT(Network Address Translation,网络地址翻译),以及抗攻击等等。利用该工具可以在较低配置下的传统PC机上实现安全稳定、功能强大的防火墙+NAT系统,因此它被企业和高校广泛采用,成为一种比较成熟的技术。然而随着对网络安全性要求的日益提高,用户认证功能越来越受到重视,基于IPTABLES提供的上述功能却不能满足这一需求。
Squid是Linux平台下最为流行的代理服务器,是解决用户上网认证的有效方法。但是Squid也存在着一些缺陷,如:命中率和效率相对低下;支持的协议类型有限;需要在客户端计算机对浏览器或其他网络软件进行设置;某些服务对代理访问有限制等等,使其应用受到很大局限。透明代理是NAT(IPTABLES)和代理(Squid)的完美结合,此种工作方式不需要在客户端浏览器或其他网络工具上进行任何设置,用户感觉不到代理服务器的存在。然而由于Squid不支持在透明代理模式下启用身份认证功能,所以它仍然不能解决用户认证问题,且Squid自身的性能依然存在缺陷。
二、系统应用模块
为了解决上述问题,依据透明代理的实现思路,即利用IPTABLES将发往80端口的数据包转发到Squid服务器的3128端口,将上网认证工作交给Squid处理的方法。该方法实现了基于IPTABLES的Web认证系统,它既发挥了IPTABLES服务NAT性能上的优势,又实现了用户上网认证功能。
该系统主要应用了IPTABLES服务的防火墙功能、NAT功能、端口转发功能,并利用Ulogd工具实现了IPTABLES的日志记录功能。同时在Linux系统中部署了Tomcat服务器,用于实现用户认证和IPTABLES规则修改功能。
利用IPTABLES规则实现防火墙具有很高的灵活性和稳定性,在本系统中防火墙安全政策定义为正面列表,即将INPUT、OUTPUT、FORWARD等规则设置为DROP来禁止所有的数据包通过,然后再分别设置规则来允许合法的数据包通过,这样系统的安全性就被提高。NAT功能将每个内网计算机节点的地址转换成一个外网IP地址,使之能够访问外网的资源,采用该方式能有效地解决二级单位的上网问题。端口转发功能也就是重定向,当IPTABLES服务接收到一个数据包后,不是转发这个包,而是将其重定向到系统上的某一个应用程序,最常见的应用就是和Squid配合使用,使其成为透明代理。Ulogd工具将IPTABLES的访问日志记录到Mysql数据库中,便于对数据进行分析和操作,同时也满足了公安部对上网日志保存的要求,在本系统中依据数据库中的日志记录来判断计算机的上网状态。Tomcat容器是一款优秀的Web服务器,它可与Java语言程序相结合,用来实现用户认证和对Linux系统sh脚本命令的操作,从而实现对IPTABLES规则的动态设置。
三、系统功能及实现方法
1.网络环境
网络环境如图1所示,是典型的三层网络结构。
接入层为Cisco2950设备,负责接入客户端计算机,并划分VLAN;汇聚层为Cisco 3550设备,负责实现各个VLAN之间的互联互通,并接入核心层设备Cisco3750。Linux服务器安装双网卡作为网关,负责内网与外网的连接。在本系统中内网设为192网段,外网设为10网段,Linux服务器内网网卡IP地址设为192.168.1.254(eth0),外网网卡IP地址设为10.80.1.100(eth1)。为了实现在内网网段中的客户端计算机能够访问外网,需在核心层交换机Cisco3750上设置一条路由信息:ip route 0.0.0.0/0 192.168.1.254,将所有访问外网的数据包都转发到Linux服务器上,然后再通过NAT方式上网。
2.系统实现
该系统在Enterprise Linux AS4.0环境下实现,流程如图2所示。
(1)利用IPTABLES实现NAT和防火墙功能:防火墙功能是通过在IPTABLES中配置包的过滤规则来实现;
NAT功能用如下命令实现:
IPTABLES -t nat -A PREROUTING -d 10.80.1.100 -s! 192.168.1.254 -j DNAT --to 192.168.1.254
IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to 10.80.1.100
通过上述配置,内网的计算机(192网段)已经可以通过Linux服务器的NAT功能实现对外网(10网段)的访问,系统在此基础之上实现用户的Web身份认证。
(2)数据端口转发:与透明代理的实现方法类似,利用IPTABLES的端口转发功能,将所有访问80端口的数据包(也可以设置其他端口进行更精细地控制)转向本机Tomcat的8080端口,实现用户认证。
IPTABLES -t nat -A PREROUTING-s 192.168.1.111/32 -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
上述命令实现将IP地址为192.168.1.111的计算机发往外网80端口的请求全部转发到8080端口。通过使用该命令将要控制的客户端计算机IP添加入IPTABLES的规则中,从而实现对该计算机上网控制。
(3)搭建Web用户认证平台:在Linux服务器上用Tomcat实现Web认证平台,设置监听端口为8080,并用JSP语言实现用户认证页面,所有访问外网的请求都被强制转到该页面,进行身份验证,判断用户信息是否合法。
(4)认证功能的实现:在用户认证页面,获取用户信息和客户端计算机的IP地址,如果用户信息合法,由Tomcat容器调用Javabean实现对IPTABLES规则的操作,在Java程序中认证函数和IPTABLES规则修改函数要采用异步方式实现,这样可以减少用户并发认证时的数据混乱问题,提高系统的稳定性。该功能利用Runtime.getRuntime.exec("cmd")函数运行Linux的sh脚本来实现,将用户验证页面获取的IP地址作为参数传入到Javabean中,并将如下命令行(认证通过,取消该计算机的端口转发规则,使其可以正常上网)写入sh脚本。
IPTABLES -t nat -D PREROUTING-s 192.168.1.111/32 -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
用Runtime.getRuntime.exec("chmod a+x sh脚本")提升该脚本文件为可执行权限;之后用Runtime.getRuntime.exec("sh脚本")函数运行该脚本文件,修改IPTABLES规则从而取消掉对该计算机端口转发的限制,通过NAT实现上网功能。
(5)上网日志的记录:通过对Ulogd工具的配置可以将IPTABLES的访问日志记录到Mysql数据库中,在IPTABLES中添加如下规则:
IPTABELS-A INPUT-p tcp --dport 80-j ULOG或者IPTABELS-A FORWARD-j ULOG可以记录通过IPTABLES的访问数据包。
(6)分析访问日志重新认证:通过对Mysql数据库日志表中ip_saddr(IP源地址)字段的分析确定每台计算机是否在持续上网,可以设定一个时间间隔,如果超过该间隔,该IP地址的计算机没有网络访问数据包,便将该IP地址再加入到IPTABLES的转发规则当中,要求用户重新认证。在上述方法的实现中要尽量降低服务器的负担,可在日志表中使用插入触发器,对新插入的日志记录提取其源地址,同时更新计算机IP信息表中对应IP地址的访问时间;在Tomcat设定定时器函数,每隔一定时间间隔轮询该计算机IP信息表,对访问时间与当前时间差值大于限定值的计算机要求重新认证。
(7)通过上述过程实现了基于IPTABLES的Web用户身份验证功能。
四、系统性能与优化
目前该系统认证的IPTABLES服务,Tomcat容器和Mysql数据库都放在同一台Linux服务器上,客户端计算机数量是800台左右,上网用户的并发访问量为100台左右,系统运行稳定。
为了进一步提高系统的性能,可将Web认证服务器与数据库服务器放在另一台Linux服务器上以提高系统效率;同时通过进一步对IPTABELS日志字段信息进行分析可以提高用户上网与重新认证时间计算的精确度,从而在Web认证的基础之上实现计费功能。
五、结束语
基于IPTABLES的Web认证系统解决了用户上网认证、上网记录保存、IP地址资源匮乏和高校内二级单位上网管理不便等问题;同时该系统基于Linux操作系统,对硬件设备的要求不高,网管人员可以自行搭建,非常适合在高校和企业内推广使用。
参考文献:
[1]林慧琛,刘殊.Red Hat Linux服务器配置与应用[M].北京:人民邮电出版社,2007.
[2]索贝尔著.Linux命令、编辑器与Shell编程[M].北京:清华大学出版社,2007.
[3]鸟哥.鸟哥的Linux私房菜——服务器架设篇[M].北京:科学出版社,2005.
[4]刘中兵.精通Tomcat——Java Web应用开发、框架分析与组件配置、系统集成与案例实战[M].北京:清华大学出版社,2007.
[5]刘斌.精通Java Web整合开发: JSP+AJAX+Struts+Hibernate [M].北京:电子工业出版社,2007.