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

网络 通信技术
Linux提供了一个非常优秀的防火墙工具—netfilter/iptables。它完全免费、功能强大、使用灵活、可以对流入和流出的信息进行细化控制,且可以在一台低配置机器上很好地运行。本文将简单介绍使用netfilter/iptables实现防火墙架设和Internet连接共享等应用。

在上一篇笔者介绍了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下一般的系统安全任务。 

【编辑推荐】

  1. 利用Linux内置防火墙提高网络的访问控制
  2. Linux操作系统上ADSL拨号上网的方法详解
责任编辑:许凤丽 来源: IT168
相关推荐

2022-07-24 14:49:17

NetfilterLinux防火墙

2009-12-02 18:54:28

2009-12-21 14:44:06

2009-12-25 13:36:41

2010-09-13 17:24:11

2009-12-02 18:34:29

Linux关闭防火墙命

2010-01-07 14:24:54

Linux防火墙

2019-07-13 15:31:10

Linux防火墙

2011-03-17 16:00:57

2009-09-28 10:06:09

Linux防火墙Linux规则

2020-04-07 13:20:52

Linux防火墙ufw

2009-02-22 09:30:24

2011-03-15 16:35:27

2009-08-28 18:12:26

防火墙规则测试

2022-01-06 07:59:05

Linux 防火墙进程

2012-05-11 14:39:07

2010-09-14 13:08:52

2010-03-05 09:36:04

linux系统防火墙

2012-06-26 15:49:05

2011-03-15 15:47:26

LinuxIptables防火墙
点赞
收藏

51CTO技术栈公众号