在上一篇笔者介绍了Linux 异构网络共享ADSL连接方法,对于连接互联网上的系统,不管是什么情况都要明确一点:网络是不安全的。因此,虽然创建一个防火墙并不能保证系统100%安全,但却是绝对必要的。Linux提供了一个非常优秀的防火墙工具—netfilter/iptables。它完全免费、功能强大、使用灵活、可以对流入和流出的信息进行细化控制,且可以在一台低配置机器上很好地运行。本文将简单介绍使用netfilter/iptables实现防火墙架设和Internet连接共享等应用。 传统意义上的防火墙技术分为三大类,“包过滤”(Packet Filtering)、“应用代理”(Application Proxy)和“状态检测”(Stateful Inspection),无论一个防火墙的实现过程多么复杂,归根结底都是在这三种技术的基础上进行功能扩展的。 Linux内核从1.1版本开始,就已经具备包过滤功能。在2.0内核中,开始采用Ipfwadm来操作内核的包过滤规则。到2.2版本时,Linux内核采用了Ipchains来控制内核的包过滤规则。发展到2.4.x时,Ipchains被一个全新的包过滤管理工具Iptables所替代。新发布的2.6版内核也在安全方面进行了改进。
因此,无论拥有哪个版本的Linux内核,无论选择哪个版本的Linux来构建自己的企业网,都可以利用现有的系统构建出一个理想实用的防火墙。2001年Russell完成了其名为netfilter(http://www.netfilter.org)的内核框架。这些防火墙软件套件一般都比其前任有所改进,表现越来越出众。netfilter/iptables已经包含在了2.4以后的内核当中,它可以实现防火墙、NAT(网络地址翻译)和数据包的分割等功能。netfilter工作在内核内部,而iptables则是让用户定义规则集的表结构。netfilter/iptables是从ipchains和ipwadfm(IP防火墙管理)演化而来的。
典型的防火墙设置有两个网卡:一个流入,一个流出。iptables读取流入和流出数据包的报头,将它们与规则集(Ruleset)相比较,将可接受的数据包从一个网卡转发至另一个网卡,对被拒绝的数据包,可以丢弃或按照所定义的方式来处理。
通过向防火墙提供有关对来自某个源地址、到某个目的地或具有特定协议类型的信息包要做些什么的指令,规则控制信息包的过滤。通过使用iptables系统提供的特殊命令iptables建立这些规则,并将其添加到内核空间特定信息包过滤表内的链中。关于添加、去除、编辑规则的命令,一般语法如下:
现实中,为了易读,我们一般都用这种语法。大部分规则都是按这种语法写的,因此,如果看到别人写的规则,你很可能会发现用的也是这种语法。Linux 2.4内核netfilter内建了三个表,其中默认表Filter中又包括3个规则链,分别是负责外界流入网络接口的数据过滤的INPUT链、负责对网络接口输出的数据进行过滤的OUTPUT链,以及负责在网络接口之间转发数据过滤的FORWARD链。下图是信息包在防火墙的Filter表中的穿越过程。
信息包在Filter表中的穿越过程
这里介绍一个工具软件,可以帮助你在Linux的GUI图形用户界面下快速构架一个防火墙。Firestarter 是一个完全的免费软件,它可以在KDE和GNOME环境下,它提供图形界面免去了在生硬的文本环境下配置防火墙的麻烦。
最新版本Firestarter完全支持中文界面。Firestarter 的作者和开发者是芬兰人:Tomas Jounonen 和Paul Drain在http://firestarter.sourceforge.net/ 可以自由下载它的源代码你还可以使用 majix@sci.f pd@cipherfunk.org 电子邮件和他们联系。最新版本是1.03。笔者下载的是它的RPM包,为了方便这里笔者提供它的下载链接:
http://jaist.dl.sourceforge.net/sourceforge/firestarter/firestarter-1.0.3-1.i386.rpm #p#
1、系统检测
由于开发者Tomas Jounonen和Paul Drain使用C语言和 GTK +(GIMP Tool Kit,GIMP工具包是一个用于创造图形用户接口的库)开发的,所以安装前请检查系统gtk2+模块的gcc编译器版本。
# rpm –qa | grep gcc # rpm –qa | grep gtk2+ |
硬件: 中央处理器:兼容 Intel X86处理器Pentium 200 以上 ,32 兆(推荐64兆)内存,100兆硬盘空间 ,显示内存4兆。
软件: 内核版本 2.2以上 ,KDE 2.0以上或GNOME 1.2以上,X Window System XFree86 3.6.x 以上,桌面分辨率至少为640×480 ,桌面颜色至少6万5千色(16位元)。
2、安装软件
以根权限登陆Linux打开一个终端:
# rpm -ivh firestarter-1.0.3-3.i386.rpm |
3、配置软件
系统会在/usr/bin/firestarter 建立主程序,第一次运行firestarter 需要进行简单的配置:
1) 软件运行的主界面
如下图。
软件配置向导
首先点击选项子菜单,进行一些简单配置,主要包括为软件建立日志文件目录、设置防火墙启动方式、设置策略。设置结束后用鼠标点击“Run firewall wizard”启动防火墙配置向导。 #p#
2) 设置网络设备
如下图。
配置网络设备
如果使用XDSL等宽带接入的设备来说选择网卡的接口即可。如果你使用的是Cable Modem接入网络的话,那么在“IP 地址通过DHCP分配”前打钩。然后用鼠标按前进按钮。
3)设置网络连接共享
设置网络连接共享
选择可以共享互联网连接共享的设备,笔者使用的是eth0。说明:Linux网络设备名称在配置时被赋予别名,该别名由一个描述性的缩略词和一个编号组成。某种类型的第一个设备的编号为 0,其他设备依次被编号为 1、2、3,等。eth0, eth1 ... 这些是以太网卡接口。它们用于大多数的以太网卡,包括许多并行端口以太网卡。选择完成后然后用鼠标按前进按钮。#p#
4)启动防火墙
最后系统会提示你配置结束。按“保存”按钮退出向导后防火墙启动。如下图。
按“保存”按钮退出向导后防火墙启动
5)配置ICMP包过虑
如下图。
配置ICMP包过滤
ICMP全称Internet Control Message Protocol,中文名为因特网控制报文协议。它工作在OSI的网络层,向数据通讯中的源主机报告错误。ICMP可以实现故障隔离和故障恢复。我们平时最常用的ICMP应用就是通常被称为Ping的操作。如果你选择容许ICMP包过滤,这里简单介绍一下各选项的作用,见下表。
ICMP协议内容简介
表1 |
有严重危害的ICMP类型
除Ping以外,其他类型的ICMP也可以用于扫描网络。ICMP的时间戳(Timestamp,类型13) 会产生一个时间戳应答(Timestamp Reply,类型14),但是只有在Unix系统中才出现这种情况,微软的IP堆栈中没有此项功能。因此,根据对时间戳请求的应答,不仅可以知道目的系统的主机是激活的,而且还能知道目的主机是否采用了微软的操作系统。
一些安全意识强的组织往往会在防火墙配置中全面过滤入站的ICMP消息,这种情况下ICMP 探测就会失效;然而,大多数网络配置都不会对ICMP 消息进行全面过滤,这是因为网络管理员经常要使用ICMP 消息来解决网络的一些故障。ICMP其实很简单。其初衷是使IP网络平滑地工作。对于那些对安全性要求不高的网络,或者不需要防止端口扫描的网络,可以不考虑有关ICMP的问题。然而,对于安全性至关重要的网络,则只能让尽可能少的ICMP类型通过防火墙。在你认为需要的ICMP协议的选项打钩后用鼠标选择“接受”。下图是 Firestarter 防火墙工作界面。
Firestarter 防火墙工作界面
#p#
6)定制安全策略
您可以随时根据网络情况定制Firestarter的安全策略,如下图。
定制Firestarter的安全策略
通过定制安全策略可以决定那些服务可以使用。哪些用户可以使用这些服务。一般来说我们不要启动Linux中所有服务,应当只启动你必须的服务,有些服务比如:Finger(查询帐号) 、Telnet、NFS都是相对不安全的,我们可以用一些安全的程序代替它们,例如:可以使用SSH代替Telnet。对于一些你必须启动的服务应尽量升级到最新版本。
7)应用技巧让防火墙自动启动
如果希望Firestarter服务器每次启动都能自动运行,可以用ntsysv设置。以root权限运行命令:
# ntsysv |
打开如下图所示的窗口,在Firestarter服务选项加上*(用空格键),然后重新启动系统,这样系统会启动Firestarter服务。
启动Firestarter服务器自动加载
总 结:
首先肯定的说Firestarter防火墙是一款非常优秀的基于GUI图形用户界面下的,完全免费的自由软件,它为小型Linux网络提供了良好的安全服务。它的使用简单但功能强大:Firestarter运行时只占用很少的系统资源,它为Linux平台提供了快捷有效的安全防护功能。并且在系统出现异常情况的时候能及时的向管理员通知及相关信息、以帮助系统管理员及时的对系统作出相应的处理和反应。
Fire starter防火墙在程序运行后在系统桌面的任务条菜单处,易于迅速的启动和关闭网络中指定的计算机。Firestarter的安装十分容易,有安装向导引导,即使是Linux软件不熟悉的用户也能通过向导轻松完成防火墙的安装和设置。
另外,Firestarter的README文件里面的往释非常清楚,方便了用户的修改和重新定义某些参数。就像Firestarter的开发者Tomas Jounonen所说的它是一个“All-in-one”的Linux防火墙。总的来说,Flrestarter防火墙适用于单机工作站、SOHO服务器的系统平台的安全防护,它能胜任在Linux下一般的系统安全任务。
【编辑推荐】