精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● FreeBSD>>网络书籍>>《FreeBSD使用大全》>>FreeBSD连载(80):构建防火墙

主题:FreeBSD连载(80):构建防火墙
发信人: Hopper()
整理人: hahalee(2000-02-28 20:04:03), 站内信件
http://www.sina.com.cn 2000年1月21日 13:06 王波

构建防火墙
  防火墙的主要目标是控制内部网络和外部Internet之间的连接,有限制的允
许内部网络中的计算机访问Internet 上的服务,但限制外部网络访问内部计算机
。为了实现这个目的,至少需要一个具有两个(或更多)网络界面的计算机,它
的一个网络界面连接外部网络,另一个网络界面连接内部网络。然而如何实现限
制网络访问的方法却有所不同,主要就可以分为基于IP数据包过滤的防火墙和基
于代理的防火墙。ipfw/natd和ipfilter都是基于包过滤和网络地址转换的软件工
具,而代理服务器通常通过代理服务器软件来实现。

  FreeBSD下用于防火墙的最重要的代理软件是fwtk,它提供了多种代理服务器
和统一的认证方式。FreeBSD 上也能运行其他的代理服务器,然而那些代理服务
器主要用于代理单个协议,不能单独用于构建全面功能的防火墙系统,而fwtk则
提供了多种代理服务器,为构建一个完整的防火墙系统提供了基础。然而fwtk不
是一个设置完好的防火墙系统,而只是一组构建防火墙的组件。因此要使用fwtk
来设定防火墙,仍然是一个复杂的任务。虽然在FreeBSD 下可以使用Ports Coll
ection很方便的编译安装fwtk,但问题的关键是针对具体的服务进行设置。

  fwtk能在多种Unix系统上运行,很多资料和书籍都已经介绍了其使用和设置
方法,这里就不再介绍fwtk 的使用和设置。这里主要介绍基于包过滤和NAT的防
火墙系统。


选择防火墙的类型

  早期的包过滤防火墙只是建立在路由器的基础上,只支持有限的过滤规则,
并且不能保持网络连接状态。更关键的问题是,基于路由器的防火墙不能隐藏内
部网络的拓扑结构,这样入侵者就比较容易利用包括IP欺骗在内的方式对内部计
算机进行攻击。然而,网络地址转换技术可以改变这种情况,使用ipfw/natd或i
pfilter可以建立更安全、更高性能的防火墙系统。

  由于NAT改变了内部计算机的IP地址,因此这种方式也可以称作网络层代理。
而其他直接支持应用程序的代理服务器,如squid,fwtk等,被称为应用层代理,
应用层代理的好处是可以定义更复杂的访问控制形式,例如针对用户进行认证等
,并能提供较详细的日志记录。然而应用层代理的缺点是不方便用户使用,需要
对客户端软件进行其他设置,并且不一定会具有所有种类的应用程序的代理程序


  代理型防火墙的另一个问题是,无法向外部提供网络服务。这也可以算一个
优点,因为向外提供网络服务就必然降低网络安全性,然而实际上网络使用者也
希望通过自己的网络向外发布信息,而不只是简单的浏览Internet。当然在提供
服务的同时也要保证发布信息服务器的安全,因此希望将其放入防火墙内部。对
于需要发布信息的要求,NAT通过映射端口(或地址)就能满足要求,但代理服务
器不能。

  然而,也能设计这样一种代理服务器,它接收Internet上任意(或受限)主
机的访问,而将代理这些访问请求访问内部的服务器,这种代理服务器称为反向
代理服务器。

  在不同类型的防火墙之间进行选择主要依赖于不同的需要,一般的情况下,
内部网络的使用希望防御外部网络上的入侵者,但又希望能够最大可能的使用各
种网络应用程序来访问Internet,而同时也希望系统配置比较简单,这样直接利
用FreeBSD提供的ipfw/natd或ipfilter均能满足这种要求,网络地址转换类型的
防火墙配置简洁、性能更高,并且对应用程序的支持相当强。

  有些网络内部计算机的使用比较混乱,因此希望针对用户进行认证控制,此
后才允许用户能访问Internet,并还希望能限制用户使用访问Internet的应用种
类,进行更复杂的日志记录,这些情况下就应该选用应用层代理服务器fwtk。极
端的情况下,只打算对内部用户提供有限种类的Internet服务,那么设置一个专
用的应用代理服务器也就满足要求了,例如设置squid代理WWW访问。

  然而,在FreeBSD上构建防火墙系统是通过系统提供的各种组件进行组合得到
的,采取多种组件进行组合,就能构建更复杂的系统。可以根据不同需要,同时
利用包过滤、网络地址转换及各种不同应用层代理等多种形式,设置不同复杂程
度的防火墙系统,这就是FreeBSD系统的优势。但在这些情况下,由于FreeBSD提
供的这些组件并不是单一软件,而是相互独立的多个软件,因此要设置一个完整
的防火墙系统,还需要使用者进行复杂的设置。或者还需要管理员使用一些简单
的脚本程序以辅助分析系统日志,发送警报,甚至对网络状态进行实时监控,通
过迅速改变防火墙设置来保护内部网络系统。

  通过分析防火墙的日志记录,甚至监控通过防火墙的数据流模式,就可以寻
找发生过或正在进行的系统入侵行为(通常可能是服务阻塞、暴力攻击甚至更复
杂的特定攻击模式),进而反馈回防火墙系统,以重新调整设置,增强系统安全
性。


防火墙的拓扑结构

  当构建防火墙系统时,首先就要考虑网络的拓扑结构,这将对防火墙的设置
产生影响。简单的网络可能只需要一台防火墙设备,而复杂的网络会需要更多的
网络设备,包括多个防火墙系统。以下给出了最常使用的几种使用防火墙的网络
拓扑,基本上这些拓扑将适合大多数的情况,可以使用这些拓扑来作为建立自己
内部网络的参考。



  最简单的情况为使用具备两个网络界面的一个防火墙来分隔内部与外部网络
。这种形式简单易行,适合大部分只需要访问Internet,而不需要对外发布信息
的网络。一旦要向外发布信息,那么所提供的服务就会降低网络的安全性,造成
相应的安全问题。



  为了避免在向外提供服务的服务器被侵入之后,影响内部网络的安全性,就
需要将对外提供服务的服务器和只访问外部网络的客户计算机分隔到不同的网络
上。可以采用上面的方式,防火墙使用三个网络界面,分别用于外部网络、内部
网络和提供服务的服务器。



  使用单个防火墙的网络,网络安全被一台防火墙的安全所限制,更复杂的情
况是同时使用多个防火墙系统。例如使用两个防火墙,第一层防火墙与第二层防
火墙之间可以放置允许外部访问的服务器,这个区域被称为停火区,即使入侵者
进入这个区域,还需要近一步攻击内部防火墙才能接触内部网络。

  如果这两个防火墙使用不同的技术,如外部防火墙为网络地址转换方式,而
内部防火墙为代理服务器方式,这样即使入侵者侵入一个防火墙,但另一个防火
墙使用的是完全不同的技术,就给入侵者带来更大的阻碍,提高整个网络的安全
性。

  利用这些工具,网络可以设置的非常安全。事实上当前大部分安全问题仍然
来源于人的因素,如管理不善造成的口令泄露等。这就使得正常的安全措施无法
正常应用,而带来不可避免的安全问题。


PicoBSD

  软件方式的防火墙系统的一大问题就是由于系统本身能够安装丰富的软件,
因此常常同时被用作其他用途,当用作其他用途时就有可能对本身的安全性造成
影响。而硬件防火墙使用专有操作系统,只用作网络服务,这保证了它不会受到
其他方面的影响。对于用作防火墙的计算机,通常应该专用而不要兼作其他用途
。因为防火墙的安全性非常重要,内部网络安全要依赖防火墙的安全来保障,一
旦防火墙被入侵,网络安全也就无法保证了。

  通常安装的FreeBSD系统都具备硬盘,当具备硬盘的FreeBSD用做防火墙系统
时,一方面免不了想提供多种复杂的服务,这样系统可能会具备潜在的安全漏洞
,另一方面入侵者入侵这个系统之后,可以在系统硬盘上隐藏入侵程序以进一步
入侵网络内部。因此对于用作防火墙的FreeBSD系统,最好直接修改系统的rc文件
,屏蔽所有的网络服务。另一种方法是可以尝试使用软盘上的FreeBSD系统,这样
计算机本身不具备硬盘,可以从管理上杜绝它用作其他使用的机会,同时也节约
了资源。此时FreeBSD系统可以不使用硬盘、显示器、键盘,通过串口进行设置,
这样的系统可以安装在网络设备的机架上,专门用作防火墙提供安全服务。

  PicoBSD就是这样的一个小型FreeBSD系统,能够安装在一张软盘上。PicoBS
D提供了四个不同的版本:dial、isp、net和router,dial为拨号访问Internet的
版本,isp为接受拨号访问的版本,net和router是用于网关和路由器的版本,它
们都能够在386处理器和10M内存下运行(dial版本仅仅需要8MB内存)。虽然从F
reeBSD的主页上,可以得到预定制好的多种PicoBSD的磁盘镜像,然而由于计算机
使用的硬件差异很大,定制好的磁盘镜像不一定适合使用者的计算机硬件,由于
软盘容量很小,不能容纳尽可能多的硬件驱动,每个磁盘镜像也不能支持太多的
硬件设备,因此就需要根据自己计算机的具体硬件环境定制PicoBSD。

  要定制PicoBSD,就需要一个安装了全部源代码的FreeBSD系统,并且这个Fr
eeBSD系统的内核要支持伪设备vn及具备对应的设备文件,以便PicoBSD的设置程
序能完成磁盘镜像文件的创建工作。PicoBSD 的源代码位于系统的/usr/src/rel
ease/picobsd目录下,这个目录中包含编译、配置PicoBSD 的说明,以及不同Pi
coBSD版本的配置。

  定制PicoBSD系统要使用的该目录的子目录build中的build脚本,为了制作一
个PicoBSD的磁盘镜像,就需要在这个目录下启动build命令。

# cd /usr/src/release/picobsd
# cd build
# ./build
 
 

  build命令使用菜单将让使用者选择不同的PicoBSD的基本版本,如dial、is
p、net和router ,根据不同的目的进行选择,此后选择n(no change)就能继续
进行制作镜像文件的处理。当这个执行过程结束之后,build子目录下就产生了一
个1.44MB的磁盘镜像文件picobsd.bin。此后可以在FreeBSD 下,或者在DOS下将
镜像文件写入软盘,则一个单软盘的PicoBSD系统就制作完毕了。

  build进程将使用/mnt来装载vn0设备,因此必须保证/mnt没有装载其他文件
系统,而且vn0设备没有被占用。否则就会遇到错误。

  然而这样制作的PicoBSD使用的还是缺省的设置,如果要定制PicoBSD系统,
就需要更改缺省设置。首先应该根据具体的需要,选择功能相近版本的PicoBSD,
再进一步更改硬件设置。每一个PicoBSD版本的设置都位于具有相同名字的子目录
下,例如net版本PicoBSD的目录为/usr/src/release/picobsd/net/ ,在这个目
录之下的conf子目录为PicoBSD内核的定制目录,而crunch1目录中为最后复制到
 PicoBSD系统中的应用程序的名字列表。

  当需要针对运行防火墙的计算机更改硬件设置时,需要更改conf子目录中的
内核设置文件PICOBSD,这个文件就是PicoBSD的内核设置文件,可以删除或增加
设置选项,改变对不同硬件设置的支持。如果要更改复制到软盘镜象中的执行程
序的数量,就需要更改同样位于该版本目录下的crunch1子目录中的文件。只是注
意软盘空间有限,因此只能装载有限的程序。

  更改完这些设置之后,就可以转回build子目录重新定制PicoBSD,这样产生
的镜象文件就为与硬件设置相符合的设置。将镜象文件写入软盘之后,就可以使
用这个软盘启动防火墙系统,然后再使用命令行进行手工设置。需要注意的是,
此时更改的只是写在内存文件系统MFS中的文件,而不是在软盘中文件,因此一旦
系统重新启动,配置就不会保留下来。必须使用update命令将更改后的文件写回
磁盘中之后,设置才能保留回磁盘中。

未完,待续。。。  



--
小多子:你知道我们佟家百年不衰的道理么?
        那就是,不要一条路走到黑!

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.190.123]

[关闭][返回]