无线组网 频道

教教你用Linux 防火墙保护你的ADSL连接

    【IT168 专稿】在上一篇笔者介绍了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建立这些规则,并将其添加到内核空间特定信息包过滤表内的链中。关于添加、去除、编辑规则的命令,一般语法如下:

    iptables [-t table] command [match] [target]

  现实中,为了易读,我们一般都用这种语法。大部分规则都是按这种语法写的,因此,如果看到别人写的规则,你很可能会发现用的也是这种语法。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 

 

    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”启动防火墙配置向导。

 

    2) 设置网络设备

    如下图。

配置网络设备

    如果使用XDSL等宽带接入的设备来说选择网卡的接口即可。如果你使用的是Cable Modem接入网络的话,那么在“IP 地址通过DHCP分配”前打钩。然后用鼠标按前进按钮。

    3)设置网络连接共享

设置网络连接共享

    选择可以共享互联网连接共享的设备,笔者使用的是eth0。说明:Linux网络设备名称在配置时被赋予别名,该别名由一个描述性的缩略词和一个编号组成。某种类型的第一个设备的编号为 0,其他设备依次被编号为 1、2、3,等。eth0, eth1 ... 这些是以太网卡接口。它们用于大多数的以太网卡,包括许多并行端口以太网卡。选择完成后然后用鼠标按前进按钮。

 

    4)启动防火墙

    最后系统会提示你配置结束。按“保存”按钮退出向导后防火墙启动。如下图。

按“保存”按钮退出向导后防火墙启动

    5)配置ICMP包过虑

    如下图。

配置ICMP包过滤

    ICMP全称Internet Control Message Protocol,中文名为因特网控制报文协议。它工作在OSI的网络层,向数据通讯中的源主机报告错误。ICMP可以实现故障隔离和故障恢复。我们平时最常用的ICMP应用就是通常被称为Ping的操作。如果你选择容许ICMP包过滤,这里简单介绍一下各选项的作用,见下表。

    ICMP协议内容简介

类型
名称
作用
0
回波应答(Echo Reply)
用于探测和DoS
3
不能到达目的地(Destination unreachable)
提高性能,用于探测
4
源结束(Source Quench)
提高性能
5
重定向(Redirect)
提高本地性能,本地DoS
8
回波(Echo)
用于探测和DoS
9
路由器公告(Router dvertisement)
仅用于本地
10
路由器选择(Router Selection)
仅用于本地
11
超时(Time Exceeded)
用于路由跟踪和探测
12
参数问题(Parameter Problem)
报告数据包包头错误,用于探测
13
时间戳(Timestamp)
用于探测
14
时间戳应答(Timestamp Reply)
可用于探测
15
信息请求(Information Request)
废弃
16
信息应答(Information Reply)
废弃
17
地址掩码请求(Address Mask Request)
用于本地探测
18
地址掩码应答(Address Mask Reply)
仅用于探测路由器的应答
30
路由跟踪(Traceroute)
可以替代路由跟踪命令

    有严重危害的ICMP类型

    除Ping以外,其他类型的ICMP也可以用于扫描网络。ICMP的时间戳(Timestamp,类型13) 会产生一个时间戳应答(Timestamp Reply,类型14),但是只有在Unix系统中才出现这种情况,微软的IP堆栈中没有此项功能。因此,根据对时间戳请求的应答,不仅可以知道目的系统的主机是激活的,而且还能知道目的主机是否采用了微软的操作系统。

    一些安全意识强的组织往往会在防火墙配置中全面过滤入站的ICMP消息,这种情况下ICMP 探测就会失效;然而,大多数网络配置都不会对ICMP 消息进行全面过滤,这是因为网络管理员经常要使用ICMP 消息来解决网络的一些故障。ICMP其实很简单。其初衷是使IP网络平滑地工作。对于那些对安全性要求不高的网络,或者不需要防止端口扫描的网络,可以不考虑有关ICMP的问题。然而,对于安全性至关重要的网络,则只能让尽可能少的ICMP类型通过防火墙。在你认为需要的ICMP协议的选项打钩后用鼠标选择“接受”。下图是 Firestarter 防火墙工作界面。

Firestarter 防火墙工作界面

 

    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下一般的系统安全任务。 

0
相关文章