摘要:
本文讨论了当前常见的各种防火墙技术的特点,及其适用范围;然后讨论了防火墙设置安全策略,及这些策略的优缺点。
---- 当一个机构将其内部网络与Internet连接之后,私有网的内部数据和网络设施暴露给Internet上的黑客时,网络管理员越来越关心网络的安全。为了提供所需级别的保护,机构需要有安全策略来防止非法用户访问内部网络上的资源和非法向外传递内部信息。即使一个机构没有连接到Internet上,它也需要建立内部的安全策略来管理用户对部分网络的访问并对敏感或秘密数据提供保护。
|
---- 应给予特别注意的是,Internet防火墙不仅仅是路由器、堡垒主机、或任何提供网络安全的设备的组合,它是安全策略的一个部分。安全策略建立了全方位的防御体系来保护机构的信息资源。这种安全策略应包括在出版的安全指南中,告诉用户们他们应有的责任,公司规定的网络访问、服务访问、本地和远地的用户认证、拨入和拨出、磁盘和数据加密、病毒防护措施,以及雇员培训等。所有有可能受到网络攻击的地方都必须以同样安全级别加以保护。仅设立防火墙系统,而没有全面的安全策略,那么防火墙就形同虚设。
防火墙有两种:一种是硬件的,一种软件的。
可以采用软件方式保护内部网络不受外来用户的攻击。在Web主机上或单独一台计算机上运行一类软件,监测、侦听来自网络上的信息,对访问内部网的数据起到过滤作用,从而保护内部网免受破坏。这类软件中,最常用的是代理服务器软件。
在代理方式下,私有网络的数据包从来不能直接进入互联网,而是需要经过代理的处理。同样,外部网的数据也不能直接进入私有网,而是要经过代理处理以后才能到达私有网,因此在代理上就可以进行访问控制,地址转换等功能。下图是是用代理服务器的工作示意图:
代理服务器的配置有多种方式,最常用的方式是在一台计算机中使用两块网络接口卡(NIC),一个与内部网相连,一个与INTERNET相连,两个接口卡具有不同的IP地址。其中与INTERNET相连的接口卡IP地址必须是有效的IP地址,在INTERNET上唯一。与内部网相连的接口卡可以分配一个自由的IP地址,如10.x.y.z,192.168.x.y,如图:
之后,根据代理服务器的内部地址(如192.168.0.1)给局域网的每台计算机分配一个唯一的IP地址,如192.168.0.2,192.168.0.3,
…… ,并做相应的设置。这样,当用户访问Internet时,其请求就被送到192.168.0.1网卡上,代理服务器将以有效的IP地址210.44.64.101向INTERNET请求服务,收到回答后再传给192.168.0.1,然后将结果传送到用户工作站。目前,代理服务器软件有很多,如Netscape Suit Proxy,MS Proxy,Wingate,squid等。这些代理服务器不仅能起到防火墙的作用,而且还可以加速局域网用户对INTERNET的访问,因为代理服务器有一个大的缓冲器,将每次浏览的网页都保存起来,在下一次访问该页时就直接从缓冲器里调出
综上所述代理服务器(Proxy Server)主要功能有:
1.设置用户验证和记帐功能,可按用户进行记帐,没有登记的用户无权通过代理服务器访问Internet网。并对用户的访问时间、访问地点、信息流量进行统计。
2.对用户进行分级管理,设置不同用户的访问权限,对外界或内部的Internet地址进行过滤,设置不同的访问权限。
3.增加缓冲器(Cache),提高访问速度,对经常访问的地址创建缓冲区,大大提高热门站点的访问效率。通常代理服务器都设置一个较大的硬盘缓冲区(可能高达几个GB或更大),当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,以提高访问速度。
4.连接Internet与Intranet充当FireWall(防火墙):因为所有内部网的用户通过代理服务器访问外界时,只映射为一个IP地址,所以外界不能直接访问到内部网;同时可以设置IP地址过滤,限制内部网对外部的访问权限。
5.节省IP开销:所有的数据经过代理时都被代理所改写(NAT),将源地址改写为自己的ip地址,所以所有的所有用户只占用一个真实IP,一方面可以节省ip开销,降低网络的维护成本,另一个方面可以隐藏内部网的拓扑结构,增强安全性。
从代理技术上讲,一般具有以下两种代理:传统代理和透明代理。
传统代理
传统代理工作方式下,内部网络和外部网络之间的唯一连接是代理服务器,客户端要在浏览器中设置代理服务器的地址和端口号,客户浏览器在发出连接请求以前,会自动察看浏览器设置的代理地址及代理端口,若设置了代理端口和代理地址,则将连接请求发送给指定的代理服务器的指定端口。在这种方式的一个明显特点是客户机在连接以前的dns查询也由代理服务器去做。解析DNS的过程是根据代理服务器设置的dns查询顺序进行的。
若代理服务器使用的是linux环境下的代理服务器,并且查询顺序设置为先查找/etc/hosts,然后找DNS数据库。在这种情况下的管理员就可以根据需要设定客户访问某个外部地址时,其实是访问本地某个服务器。要实现该功能,管理员只需要在/etc/hosts中设定要代换的外部地址的指定匹配。例如管理员在/etc/hosts中设置了192.168.0.3 www.sohu.com则客户在访问sohu时,其实访问的是本地的192.168.0.3的机器。
例如: 从私有网络中访问因特网上的 web.
私有网络地址为192.168.1.*, 其中 客户机 是 192.168.1.100, 防火墙机器网卡是 192.168.1.1.
web 代理 (eg. "squid") 被安装在防火墙机器上并配置端口为 8080.
私有网络上运行的 Netscape 设置防火墙机器 8080 作为代理.
私有网络的 DNS 无须设置.
防火墙机器上的 DNS 必须设置.
私有网络上的机器不设置默认路由(别名网关).
客户机 机器上的 Netscape 访问 http://slashdot.org.
Netscape 使用 客户机 机器的端口 1050 连接防火墙机器的端口 8080. 请求 "http://slashdot.org". 页面.
代理去查找名字 "slashdot.org", 并得到地址 207.218.152.131. 它与那个地址建立一个连接(使用防火墙机器外部接口的端口 1025 ), 并向 web 服务器 (port 80) 索取页面.
当它从 web 服务器得到页面后, 它把数据复制到与 Netscape 建立的连接.
Netscape 提交此页面.
从 slashdot.org' 来看, 连接是从 1.2.3.4 (防火墙机器的拨号接口)的端口 1025 到 207.218.152.131(slashdot.org) 的端口 80. 从 客户机 的角度来看, 连接是从 192.168.1.100 (客户机)的端口1050到192.168.1.1(防火墙机器的乙太网卡)的端口8080.
透明代理技术
透明代理技术中的透明是指客户端感觉不到代理的存在,不需要在浏览器中设置任何代理,客户只需要设置缺省网关,客户的访问外部网络的数据包被发送到缺省网关,而这时缺省网关运行有一个代理服务器,数据实际上被被重定向到代理服务器的代理端口(如8080),即由本地代理服务器向外请求所需 数据然后拷贝给客户端。理论上透明代理可以对任何协议通用, 目前能实现的主要有:DNS, sendmail relay, 和 HTTP.
但是在这种情况下客户端必须正确设置DNS服务器。因为现在浏览器不设置任何代理。则DNS查询必须由browser来解析,也就是要由客户端必须在TCP/IP中设置的正确的DNS服务器,其完成dns解析。
例如: 从私有网络上访问因特网上的 web 站点.
私有网络地址为192.168.1.*, 其中 客户机 是 192.168.1.100, 防火墙机器网卡是 192.168.1.1.
透明web 代理 (我相信有 "squid"的补丁程序工作于此种方式, 或试试 "transproxy") 被安装在防火墙机器上并配置端口为 8080.
核心使用 ipchains 把与防火墙端口80的连接重定向到代理服务.
私有网上的 Netscape 被配置为直接连接方式.
私有网络的 DNS 需要设置(你需要在防火墙机器上运行DNS代理服务).
防火墙机器上的 DNS 必须设置.
私有网络上机器的默认路由(别名网关)指向防火墙机器.
客户机机器上的 Netscape 访问 http://slashdot.org.
1.Netscape通过查找"slashdot.org", 得到它的地址为207.218.152. 131. 然后它使用端口1050与此地址建立一个连接, 并向 web 站点索取页面.
当包由 客户机 (port 1050) 通过防火墙送往 slashdot.org (port 80) 时, 它们重定向到代理服务重定的8080端口. 透明代理使用端口1025与 207.218.152.131的端口80(这是原始包发往的地址)建立一个连接.
当代理服务收到从 web 站点传来的页面后, 通过已经建立的连接把它复制给 Netscape.
Netscape 显示此页面.
从 slashdot.org 的角度来看,连接是由 1.2.3.4 (防火墙的拨号连接 IP 地址)的端口 1025 到 207.218.152.131 的端口 80. 从 客户机 的角度来看,连接是从 192.168.1.100 (客户机) 端口 1050 连接到 207.218.152.131 (slashdot.org)的端口 80, 但是, 它实际是在与透明代理服务器对话.
此方案中, 包不经特殊处理不会直接在私有网络和到因特网直接传输。私有网络中的IP地址应遵循RFC1597中为私有网络分配的.(象 10.*.*.*, 172.16.*.* 或192.168.*.*)。这里核心的伪装服务重写经过防火墙的包, 所以包看起来就象从防火墙自身发出的. 然后伪装服务器重写返回的包使他们看起来是发往原来的申请者.
需要因特网访问的所有服务必须安装在作为防火墙的机器上.(看下面的 有限的因特网服务).
例如: 从私有网络上访问因特网上的 web 站点.
私有网络地址为192.168.1.*, 其中一台客户的地址是192.168.1.100, 防火墙机器网卡是 192.168.1.1.
防火墙设置为实现对从私有网络中来的任何发往因特网上某主机80端口的包进行伪装。
私有网上的客户机被配置为直接连接方式。私有网络机器的 DNS 必须正确设置。
私有网络上机器的默认路由(网关)设定为指向防火墙机器.
客户机机器上的 Netscape 访问 http://slashdot.org.
1.Netscape通过查找"slashdot.org", 得到它的地址为 207.218.152.131. 然后它使用端口1050与此地址建立一个连接, 并向 web 站点索取页面.
当包由 客户机 (port 1050) 通过防火墙送往 slashdot.org (port 80) 时, 它们被重写为由PPP地址发出, 端口是 65000. 防火墙有合法的IP地址, 所以从 www.slashdot.com 返回的包可以找到正确的返回路径.
当包从 slashdot.org (端口 80)来到 firewall.littlecorp.com (端口 65000)后, 它们被重写为发向 客户机, 端口 1050. 这是伪装的真正奥妙: 它可以记住它重写后发出去的包, 当此包的回复包返回来时改写它们, 再发给私有网络中的访问者.
Netscape 显示此页面.
从 slashdot.org 的角度来看,连接是由 1.2.3.4 (防火墙的拨号连接 IP 地址)的端口 65000 到 207.218.152.131 的端口 80. 从 客户机 的角度来看,连接是从 192.168.1.100 (客户机) 端口 1050 连接到 207.218.152.131 (slashdot.org)的端口 80.
端口转发技术指园区网的各种信息服务器,如:www,dns,email等都被放置在内部网络中,且其地址为内部地址,如:192.168.0.1。而在DNS中这些服务器的地址指向防火墙。而当外部需要访问这些服务器时,防火墙进行了特定的设置,其会转发这个数据包包到内部特定的,而当内部服务器生成回复包朝外发出经过防火墙时,包被重写。
具体过程如下: 在防火墙上设置端口转发规则,指定所有到防火墙外部地址194.160.1.1的TCP连接, 且目的端口为80的所有连接,重定向到内部机器192.168.11.2的端口80。假定任意一外部 连接进来的主机IP为 163.158.1.2。 则源和目的地址及端口号分别为 Source: 163.158.1.2/7890 Dest: 194.160.1.1/80 被转发到内部主机,重写目的地址部分 Source: 163.158.1.2/7890 Dest: 192.168.11.2/80 由内部主机回复后的包为: Source: 192.168.11.2/80 Dest: 163.158.1.2/7890 再经过防火墙时源地址被重写 Source 194.160.1.1/80 Dest: 163.158.1.2/7890。
反向代理和端口转发类似,区别在于反向代理工作在应用层,而端口转发工作在ip层。
各种代理方式的作用:
1. IP伪装,Squid传统代理和透明代理适合让局域网上无真实IP地址的用户访问Internet. 2. Apache反向代理,plug-gw通用代理,端口转发适合让外部用户访问局域网内无真实IP 地址的服务器。
图2 Internet防火墙的好处 |
---- 在防火墙上可以很方便的监视网络的安全性,并产生报警。应该注意的是:对一个内部网络已经连接到Internet上的机构来说,重要的问题并不是网络是否会受到攻击,而是何时会受到攻击。网络管理员必须审计并记录所有通过防火墙的重要信息。如果网络管理员不能及时响应报警并审查常规记录,防火墙就形同虚设。在这种情况下,网络管理员永远不会知道防火墙是否受到攻击。
---- 过去的几年里,Internet经历了地址空间的危机,使得IP地址越来越少。这意味着想进入Internet的机构可能申请不到足够的IP地址来满足其内部网络上用户的需要。Internet防火墙可以作为部署NAT(Network Address Translator,网络地址变换)的逻辑地址。因此防火墙可以用来缓解地址空间短缺的问题,并消除机构在变换ISP时带来的重新编址的麻烦。
---- Internet防火墙是审计和记录Internet使用量的一个最佳地方。网络管理员可以在此向管理部门提供Internet连接的费用情况,查出潜在的带宽瓶颈的位置,并能够根据机构的核算模式提供部门级的记费。
---- Internet防火墙也可以成为向客户发布信息的地点。Internet防火墙作为部署WWW服务器和FTP服务器的地点非常理想。还可以对防火墙进行配置,允许Internet访问上述服务,而禁止外部对受保护的内部网络上其它系统的访问。
---- 也许会有人说,部署防火墙会产生单一失效点。但应该强调的是,即使到Internet的连接失效,内部网络仍旧可以工作,只是不能访问Internet而已。如果存在多个访问点,每个点都可能受到攻击,网络管理员必须在每个点设置防火墙并经常监视。
图3 绕过防火墙系统的连接 |
---- Internet防火墙也不能防止来自内部变节者和不经心的用户们带来的威胁。防火墙无法禁止变节者或公司内部存在的间谍将敏感数据拷贝到软盘或PCMCIA卡上,并将其带出公司。防火墙也不能防范这样的攻击:伪装成超级用户或诈称新雇员,从而劝说没有防范心理的用户公开口令或授予其临时的网络访问权限。所以必须对雇员们进行教育,让它们了解网络攻击的各种类型,并懂得保护自己的用户口令和周期性变换口令的必要性。
---- Internet防火墙也不能防止传送已感染病毒得软件或文件。这是因为病毒的类型太多,操作系统也有多种,编码与压缩二进制文件的方法也各不相同。所以不能期望Internet防火墙去对每一个文件进行扫描,查出潜在的病毒。对病毒特别关心的机构应在每个桌面部署防病毒软件,防止病毒从软盘或其它来源进入网络系统。
---- 最后一点是,防火墙无法防范数据驱动型的攻击。数据驱动型的攻击从表面上看是无害的数据被邮寄或拷贝到Internet主机上。但一旦执行就开成攻击。例如,一个数据型攻击可能导致主机修改与安全相关的文件,使得入侵者很容易获得对系统的访问权。后面我们将会看到,在堡垒主机上部署代理服务器是禁止从外部直接产生网络连接的最佳方式,并能减少数据驱动型攻击的威胁。
---- 机构能够负担起什么样的防火墙?简单的包过滤防火墙的费用最低,因为机构至少需要一个路由器才能连入Internet,并且包过滤功能包括在标准的路由器配置中。商业的防火墙系统提供了附加的安全功能,而费用在$4,000到$30,000之间,具体价格要看系统的复杂性和要保护的系统的数量。如果一个机构有自己的专业人员,也可以构建自己的防火墙系统,但是仍旧有开发时间和部署防火墙系统等的费用问题。还有,防火墙系统需要管理,一般性的维护、软件升级、安全上的补漏、事故处理等,这些都要产生费用。
图4 包过滤路由器 |
---- 一些典型的过滤规则包括:
---- 源IP地址欺骗式攻击(Sowrce IP Address Spoofing Attacks)。这种类型的攻击的特点是入侵者从外部传输一个假装是来自内部主机的数据包,即数据包中所包含的IP地址为内部网络上的IP地址。入侵者希望借助于一个假的源IP地址就能渗透到一个只使用了源地址安全功能的系统中。在这样的系统中,来自内部的信任主机的数据包被接受,而来自其它主机的数据包全部被丢弃。对于源IP地址欺骗式攻击,可以利用丢弃所有来自路由器外部端口的使用内部源地址的数据包的方法来挫败。
---- 源路由攻击(Source Rowing Attacks)。这种类型的攻击的特点是源站点指定了数据包在Internet中所走的路线。这种类型的攻击是为了旁路安全措施并导致数据包循着一个对方不可预料的路径到达目的地。只需简单的丢弃所有包含源路由选项的数据包即可防范这种类型的攻击。
---- 极小数据段式攻击(Tiny Fragment Attacks)。这种类型的攻击的特点是入侵者使用了IP分段的特性,创建极小的分段并强行将TCP头信息分成多个数据包段。这种攻击是为了绕过用户定义的过滤规则。黑客寄希望于过滤器路由器只检查第一个分段而允许其余的分段通过。对于这种类型的攻击,只要丢弃协议类型为TCP,IP FragmentOffset等于1的数据包就可安然无恙。
---- 任何直接经过路由器的数据包都有被用做数据驱动式攻击的潜在危险。我们已经知道数据驱动式攻击从表面上来看是由路由器转发到内部主机上没有害处的数据。该数据包括了一些隐藏的指令,能够让主机修改访问控制和与安全有关的文件,使得入侵者能够获得对系统的访问权。
---- 一般来说,随着过滤器数目的增加,路由器的吞吐量会下降。可以对路由器进行这样的优化抽取每个数据包的目的IP地址,进行简单的路由表查询,然后将数据包转发到正确的接口上去传输。如果打开过滤功能,路由器不仅必须对每个数据包作出转发决定,还必须将所有的过滤器规则施用给每个数据包。这样就消耗了CPU时间并影响系统的性能。
---- IP包过滤器可能无法对网络上流动的信息提供全面的控制。包过滤路由器能够允许或拒绝特定的服务,但是不能理解特定服务的上下文环境/数据。例如,网络管理员可能需要在应用层过滤信息以便将访问限制在可用的FTP或Telnet命令的子集之内,或者阻塞邮件的进入及特定话题的新闻进入。这种控制最好在高层由代理服务和应用层网关来完成。
---- 这样增强的安全带来了附加的费用:购买网关硬件平台、代理服务应用、配置网关所需的时间和知识、提供给用户的服务水平的下降、由于缺少透明性而导致缺少友好性的系统。同以往一样,仍要求网络管理员在机构安全需要和系统的易于使用性方面作出平衡。允许用户访问代理服务是很重要的,但是用户是绝对不允许注册到应用层网关中的。假如允许用户注册到防火墙系统中,防火墙系统的安全就会受到威胁,因为入侵者可能会在暗地里进行某些损害防火墙有效性运动作。例如,入侵者获取Root权限,安装特洛伊马来截取口令,并修改防火墙的安全配置文件。
---- 一个应用层网关常常被称做“堡垒主机”(Bastion Host)。因为它是一个专门的系统,有特殊的装备,并能抵御攻击。有几种特点是专门设计给堡垒主机来提供安全性的:
图5Telnet代理 |
---- 这个Telnet代理永远不会允许远地用户注册到内部服务器或直接访问内部服务器。外部的客户Telnet到堡垒主机,其用一次性口令技术认证该用户。在经过认证之后,外部的客户获得了Telnet代理用户接口的访问权。这个Telnet代理只允许部分Telnet命令可以使用,并决定了内部的那些主机可以提供给Telnet来访问。外部客户指定目标主机,然后Telnet代理建立一个其自己到内部服务器的连接,并替外部客户转发命令。外部客户认为Telnet代理是一个真正的内部服务器,而内部服务器也把Telnet代理看作是外部客户。
---- 图6显示的是在建立到内部服务器的连接时在外部客户终端上的输出。请注意,该客户并没有注册到堡垒主机上,该用户由堡垒主机认证,并在允许与Telnet代理通信之前受到挑战。通过挑战之后,代理服务器给出了可以使用的命令集合和可以提供约外部客户的目标主机。
Outside-Host > telnet bastionhost |
---- 认证可以基于用户所知道的东西(如口令)或用户物理上所拥有的东西(如智能卡)。这两种技术都面临被偷窃,但是使用两种方法的组合可以增加用户认证的正确性。在Telnet这个例子中,代理发出一个挑战,而用户借助于智能卡获得对挑战的回答。典型情况下,用户可以通过输入他的PIN来解锁智能卡,而该卡根据共享的“秘密”加密密钥和其内部时钟,返回一个加密的数值给用户用来回答挑战。
---- 图7说明了通过进行的Telnet连接的操作。电路层网关简单地中继Telnet连接,并不做任何审查,过滤或Telnet协议管理。电路层网关就向电线一样,只是在内部连接和外部连接之间来回拷贝字节。但是由于连接似乎是起源于防火墙,其隐藏了受保护网络的有关信息。
图7电路层网关 |
---- 电路层网关常用于向外连接,这时网络管理员对其内部用户是信任的。它们的优点是堡垒主机可以被设置成混合网关,对于人连接支持应用层或代理服务,而对于外连接支持电路层功能。这样使得防火墙系统对于要访问Internet服务的内部用户来说使用起来很方便,同时又能提供保护内部网络免于外部攻击的防火墙功能。
图8包过滤路由器防火墙 |
---- 尽管这种防火墙系统有价格低和易于使用的优点,但同时也有缺点,如配置不当的路由器可能受到攻击,以及利用将攻击包裹在允许服务和系统内进行攻击等。由于允许在内部和外部系统之间直接交换数据包,那么攻击面可能会扩展到所有主机和路由器所允许的全部服务上。这就意味着可以从Internet上直接访问的主机要支持复杂的用户认证,并且网络管理员要不断地检查网络以确定网络是否受到攻击。另外,如果有一个包过滤路由器被渗透,内部网络上的所有系统都可能会受到损害。
图9屏蔽主机防火墙(单宿堡垒主机) |
---- 对于这种防火墙系统,堡垒主机配置在内部网络上,而包过滤路由器则放置在内部网络和Internet之间。在路由器上进行规则配置,使得外部系统只能访问堡垒主机,去往内部系统上其它主机的信息全部被阻塞。由于内部主机与堡垒主机处于同一个网络,内部系统是否允许直接访问Internet,或者是要求使用堡垒主机上的代理服务来访问Internet由机构的安全策略来决定。对路由器的过滤规则进行配置,使得其只接受来自堡垒主机的内部数据包,就可以强制内部用户使用代理服务。
---- 这种防火墙系统的优点之一是提供公开的信息服务的服务器,如Web,FTP等,可以放置在由包过滤路由器和堡垒主机共用的网段上。如果要求有特别高的安全特性,可以让堡垒主机运行代理服务,使得内部和外部用户在与信息服务器通信之前,必须先访问堡垒主机。如果较低的安全等级已经足够,则将路由器配置让外部用户直接去访问公共的信息服务器。
---- 用双宿堡垒主机甚至可以构造更加安全的防火墙系统(图10)。双宿堡垒主机有两个网络接口,但是主机在两个端口之间直接转发信息的功能(其能旁路代理服务)被关掉了。这种物理结构强行将让所有去往内部网络的信息经过堡垒主机,并且在外部用户被授予直接访问信息服务器的权利时,提供附加的安全性。
图10屏蔽防火墙系统(双宿堡垒主机) |
图11屏子网防火墙系统 |
---- 对于进来的信息,外面的这个路由器用于防范通常的外部攻击(如源地址欺骗和源路由攻击),并管理Internet到DMZ网络的访问。它只允许外部系统访问堡垒主机(还可能有信息服务器)。里面的这个路由器提供第二层防御,只接受源于堡垒主机的数据包,负责的是管理DMZ到内部网络的访问。
---- 对于去往Internet的数据包,里面的路由器管理内部网络到DMZ网络的访问。它允许内部系统只访问堡垒主机(还可能有信息服务器)。外面的路由器上的过滤规则要求使用代理服务(只接受来自堡垒主机的去往Internet的数据包)。
---- 部署屏蔽子网防火墙系统有如下几个特别的好处:
IPCHAINS-HOWTO
3COM技术白皮书
传统代理,透明代理,plug-gw,Apache反向代理,IP伪装,端口转发