朱吉乐江苏省兴化市教师进修学校 江苏 225700
随着网络的不断发展,对网络安全的要求越来越高,利用防火墙对网络进行安全保护也显得尤为重要。一般情况下单位部门的内部网络都是在一个防火墙保护的情况下运行,以下从几个方面谈谈利用Linux建立廉价防火墙。
防火墙作为实际存在的物理设备,它可通过监测、限制、更改跨越防火墙的数据流,尽可能地对外部屏蔽网络内部的信息、结构和运行状况,以此来实现网络的安全保护。在逻辑上,防火墙是一个分离器,一个限制器,也是一个分析器,有效地监控了内部网和 Internet之间的任何活动,从而保证了内部网络的安全。一般防火墙需要对原有网络进行调整配置,而透明防火墙则不需要进行修改,所谓透明是对用户的透明,即用户意识不到防火墙的存在,透明防火墙从用户与Internet之间加入或者移除,用户的网络设置不要修改,都能正常使用,既增加了网络的安全性,又降低了用户管理的复杂程度。
透明代理和传统代理一样,可以比包过滤更深层次地检查数据信息,比如FTP包的port命令等。同时它也是一个非常快的代理,从物理上分离了连接,这可以提供更复杂的协议需要,这样的通信是包过滤所无法完成的。同透明防火墙呼应,透明代理也不需要进行任何设置,用户意识不到代理的存在,便可完成内外网络的通讯。当内部用户需要使用透明代理访问外部资源时,代理服务器会建立透明的通道,让用户直接与外界通信,这样极大地方便了用户的使用。而一般使用代理服务器时,每个用户需要在客户端程序中指明要使用代理,自行设置Proxy参数(如在浏览器中有专门的设置来指明HTTP或FTP等的代理)。而透明代理服务,用户不需要任何设置就可以使用代理服务器,简化了网络的设置过程。
网络各种应用的发展,尤其大容量数据传送服务,大大地影响了网络的应用,甚至引起整个网络堵塞,严重影响了网络应用。随着防火墙技术的发展,这个问题迎刃而解。防火墙不单单能保护网络,同时也能控制管理网络应用。通过设置安全策略,可以通过时间、流量、Ip地址、端口、服务等方面对网络应用进行管理。例如:可以设定在5:00下班了,允许通过p2p软件下载,而上班时间到了又自动禁止p2p软件的下载。从而根据各个网络自身特点,制定合适的安全访问策略,能大大提高网络资源的应用效率。
防火墙需要一台带有双网卡的普通电脑,安装较新版本的Linux,准备编译好Iptables防火墙软件和squid代理软件。设置双网卡同一 Ip地址(直接修改“/etc/sysconfig/networkscript/ifcfg-eth”和“/etc/sysconfig/network-script/ifcfg-eth1”),相同的子网掩码,其中出口网卡需要设置网关,运行service network restart使修改生效。设置简单路由,一般isp提供8个公共网地址,这里用a.b.c.0/8表示。在“/etc/rc.d/rc.local”文件中追加以下几行:
ip router add a.b.c.0/8 dev eth1;内网网卡处理所有分配的地址
ip router add a.b.c.1 dev eth0;外网网卡处理网关地址
ip router del a.b.c.0/8 dev eth0;外网网卡不处理内网地址
/sbin/sysctl -w net.ipv4.conf.all.fowarding=1;启用网络包转发
/sbin/sysctl –w net.ipv4.conf.eth0.proxy_arp=1;外网启用arp代理
sbin/sysctl –w net.ipv4.conf.eth1.proxy_arp=1;内网启用arp代理
每次重启后会自动执行上面几个命令。这样透明路由就已经配置成功,可以作用了。
所谓策略就是数据包通行的规则,设定什么数据包是可以通过的,什么是不可以通过的,在内网和外网之间起到过滤的作用,策略可以防止外网直接攻击内网计算机,从而保护了内网计算机,也可以更好的控制、管理上网的规则以及时间、地域、流量等,充分提高网络使用的效率。
Linux自带的 Iptables策略配置工具就可以胜任这项工作,可以安装一个较新版本的Iptables(不推荐最新版本),要充分发挥防火墙功能的话,还需要增加 Iptables过滤模块,常用的有以下功能模块:string(字符串匹配,可以用做内容过滤),comment(备注匹配),iprang(ip范围匹配),time(时间匹配),ipp2p(点对点匹配),connlimit(同时连接个数匹配),Nth(第 n个包匹配),geoip(根据国家地区匹配),ipp2p(点对点匹配),quota(配额匹配),等等还有很多。看看下面简单几个例子:
把含有“影院”的数据包丢弃:
Iptables -I FORWARD -d 192.168.3.0/24 -m string --string"影院" -j DROP
只允许每个ip同时5个80端口转发,超过的丢弃:
Iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit--connlimit-above 5 -j DROP
IP地址在192.168.1.5-192.168.1.124之间的可以通过:
Iptables -A FORWARD -m iprange --src-range 192.168.1.5-192.168.1.124 -j ACCEPT
封杀BT类P2P软件:
Iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP
Iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP
Iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP
封端口:
Iptables -A INPUT –p tcp –port 20 –j DROP
策略的设置多种多样,默认丢弃所有的包,结合各自的应用需求,可以通过组合规则和模块定制出适合自己应用的策略,安全适用才是最好的,详细的策略学习可以参考Iptables Howto,网上还有一些视频教程。
squid是linux下非常著名的代理服务软件,主要功能是屏蔽内网机器,代理上网,控制内网上网规则等,在实际应用中可以结合 Iptables实现透明代理。Squid的代理端口是3128,所以首先要开启内网 3128 端口:“Iptables –A INPUT –I eth1 –p tcp –dport 3128 –j ACCEPT”;要实现透明代理就要把对80端口的所有请求动作自动的转交给3128端口即Squid去处理:“Iptables –A FORWARD –s a.b.c.0/24 –I eth1 –p tcp–dport 80 –j REDIRECT –TO-port 3128”,这样客户端就不需要手工设置代理选项,由Iptables转发自动完成,REDIRECT是一个模块,在使用之前要确保此模块要加载,也可以手工加载“insmod ipt_REDIRECT”。
FTP是网络中一个重要的应用,有时要访问FTP服务,有时也要提供FTP服务,在实际应用中FTP有两种模式,一种是主动模式:客户端从一个任意高端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。另一种是被动模式:开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
由于高端口是随机产生的,而在Iptables防火墙策略中高端口是不放行的,从安全角度考虑也不能放行所有的高端口。解决方法是指定一个高端口比如1025,这样就要解决怎么把一个随机的高端固定为一个端口,在Ftp客户端软件中可以通过设置Passive模式端口的范围中实现(1025-1025)。
去掉显示器、键盘、鼠标等外设,安装“HAP_SecureCRT”等终端仿真器,利用远程客户端管理,一个功能强大的防火墙就成功了。
[1][EB/OL].http://www.squid-cache.org.
[2][EB/OL].http://www.iptables.net.cn.
[3]倪继利.Linux安全体系分析与编程[M].北京:电子工业出版社.2007.
[4]施怡.使用iptables构建Linux防火墙[J].福建电脑.2004.
[5]张秀岭,万旻,骆建彬,邓宪.Linux下基于 Squid的多能代理系统与透明网关解决方案[J].微计算机应用.2004.
[6]李洋,汪虎松.Red Hat Linux 9系统与网络管理教程[M].北京:电子工业出版社.2006.
[7]梁子森,李晓军,王志刚.基于Linux的Iptables共享上网及防火墙配置[J].计算机与现代化.2008.
[8]Michael Rash.陈健译.Linux防火墙[M].北京:人民邮电出版社.2009.