|
现在的位置:三川科技>>产品与技术
所谓防火墙就是一个或一组网络设备(计算机或路由器等),可用来在两个或多个网络间加强访问控制.
它的实现有好多种形式,有些实现还是很复杂的,但基本原理原理却很简单. 你可以把它想象成一对开关, 一个开关用来阻止传输,
另一个开关用来允许传输.
设立防火墙的主要目的是保护一个网络不受来自另一个网络的攻击.
通常,被保护的网络属于我们自己,或者是我们负责管理的,而所要防备的网络则是一个外部的网络,该网络是不可信赖的,因为可能有人会从该网络上对我们的网络发起攻击,破坏网络安全.
对网络的保护包括下列工作:拒绝未经授权的用户访问,阻止未经授权的用户存取敏感数据,同时允许合法用户不受妨碍地访问网络资源.
不同的cisco防火墙侧重点不同. 从某种意义上来说,cisco防火墙实际上代表了一个网络的访问原则.
如果某个网络决定设定cisco防火墙,那么首先需要由网络决策人员及网络专家共同决定本网络的安全策略(security
policy),即确定那些类型的信息允许通过cisco防火墙,那些类型的信息不允许通过cisco防火墙.
cisco防火墙的职责就是根据本单位的安全策略,对外部网络与内部网络交流的数据进行检查,符合的予以放行,不符合的拒之门外.
在设计cisco防火墙时,除了安全策略以外,还要确定cisco防火墙类型和拓扑结构. 一般来说,cisco防火墙被设置在可信赖的内部网络和不可信赖的外部网络之间.
cisco防火墙相当于一个控流器,可用来监视或拒绝应用层的通信业务,
cisco防火墙也可以在网络层和传输层运行,在这种情况下,cisco防火墙检查进入和离去的报文分组的IP和TCP头部,根据预先设计的报文分组过滤规则来拒绝或允许报文分组通过.
cisco防火墙是用来实现一个组织机构的网络安全措施的主要设备. 在许多情况下需要采用验证安全和增强私有性技术来加强网络的安全或实现网络方面的安全措施.
本文主要介绍下列cisco防火墙的基本构件和技术:筛选路由器(screening router)、分组过滤(packet
filtering)技术、双宿主机(dual-homed host)、代理服务 (Proxy
Service)、应用层网关(application level gateway)和堡垒主机(bastion host).
象筛选路由器这样的能够实现安全措施的路由器常常被称为安全路由器或安全网关,而实现安全管理的应用层网关又称为安全应用层网关.
网络安全是一个系统的概念,有效的安全策略或方案的制定,是网络信息安全的首要目标。
网络安全技术主要有,认证授权、数据加密、访问控制、安全审计等。而提供安全网关服务的类型有:地址转换、包过滤、应用代理、访问控制和D oS防御。本文主要介绍地址转换和访问控制两种安全网关服务,利用cisco路由器对ISDN拨号上网做安全规则设置。试验环境是一台有fir
ewall版本IOS的cisco2621路由器、一台cisco交换机组成的局域网利用ISDN拨号上网。
一、地址转换
我们知道,Internet 技术是基于IP 协议
的技术,所有的信息通信都是通过IP包来实现的,每一个设备需要进行通信都必须有一个唯一的IP地址。因此,当一个网络需要接入Inte rnet的时候,需要在Internet上进行通信的设备就必须有一个在全球Internet网络上唯一的地址。当一个网络需要接入Internet上使用时,网络中的每一台设备都有一个I
nternet地址,这在实行各种Internet应用上当然是最理想不过的。但是,这样也导致每一个设备都暴露在网络上,任何人都可以对这些设备攻击,同时由于I
nternet目前采用的IPV4协议在网络发展到现在,所剩下的可用的IP地址已经不多了,网络中的每一台设备都需要一个IP地址,这几乎是不可能的事情。
采用端口地址转换,管理员只需要设定一个可以用作端口地址转换的公有Internet
地址,用户的访问将会映射到IP池中IP的一个端口上去,这使每个合法Internet
IP可以映射六万多台内部网主机。从而隐藏内部网路地址信息,使外界无法直接访问内部网络设备。
Cisco路由器提供了几种NAT转换的功能:
1、内部地址与出口地址的一一对应
缺点:在出口地址资源稀少的情况下只能使较少主机连到internet 。
2、内部地址分享出口地址
路由器利用出口地址和端口号以及外部主机地址和端口号作为接口。其中内部地址的端口号为随机产生的大于1024的号码,而外部主机端口号为公认的标准端口号。这样可以用同一个出口地址来分配不同的端口号连接任意数量的内部主机到外网。
具体配置:由于实验用的是ISDN拨号上网,在internet上只能随机获得出口地址,所以NAT转换的地址池设置为BRI口上拨号所获得的地址。
interface FastEthernet0/0
ip address 172.16.18.200 255.255.255.0
ip nat inside the interface connected to inside world
!
interface BRI0/0
ip address negotiated
ip nat outside the interface connected to outside network
encapsulation ppp
no ip split-horizon
dialer string 163
dialer load-threshold 150 inbound
dialer-group 1
isdn switch-type basic-net3
ip nat inside source list 1 interface BRI0/0 overload
access-list 1 permit 172.16.18.0 0.0.0.255
3、内部地址和外部地址出现交叠
当内部和外部用同一个网络段地址时,在地址没有重复的情况下,可以同时对内外接口进行NAT转换使之可以正常通讯。
4、用一个出口地址映射内部多台主机
应用于internet上的大型网站有多台主机对应同一个系统的同一个出口地址。
可以用sh ip nat translation 和debug ip nat 命令来检查NAT的状态。
二、基于上下文的访问控制(Context-based access control--CBAC)
CISCO路由器的access-list只能检查网络层或者传输层的数据包,而CBAC能够智能过滤基于应用层的(如FTP连接信息)TCP和UDP的sessi
on;CBAC能够在firewall access-list
打开一个临时的通道给起源于内部网络向外的连接,同时检查内外两个方向的sessions。
1、工作原理
比如当CBAC配置于连到internet的外部接口上,一个从内部发出的TCP数据包(telnet会话)经过该接口连出,同时CBAC的配置中已经包括了t
cp inspection,将会经过以下几步:
(1)数据包到达cisco防火墙的外部接口(设为s0);
(2)数据包由该接口outbound access-list检查是否允许通过(不通过的数据包在此被丢弃,不用经过以下步骤);
(3)通过access list检查的数据包由CBAC检查来决定和记录包连接状态信息,这个信息被记录于一个新产生的状态列表中为下一个连接提供快速通道;
(4)如果CBAC没有定义对telnet应用的检查,数据包可以直接从该接口送出;
(5)基于第三步所获得的状态信息,CBAC在s0的inbound access list中插入一个临时创建
的access list入口,这个临时通道的定义是为了让从外部回来的数据包能够进入;
(6)数据包从s0送出;
(7)接下来一个外部的inbound数据包到达s0,这个数据包是先前送出的telnet会话连接的一部分,经过s0口的access
list检查,然后从第五步建立的临时通道进入;
(8)被允许进入的数据包经过CBAC的检查,同时连接状态列表根据需要更新,基于更新的状态信息,inbound access
list临时通道也进行修改只允许当前合法连接的数据包进入;
(9)所有属于当前连接的进出s0口数据包都被检查,用以更新状态列表和按需修改临时通道的access list,同时数据包被允许通过s0口;
(10)当前连接终止或超时,连接状态列表入口被删除,同时,临时打开的access list入口也被删除。
需要注意的是:对于配置到s0口outbound ip access list, accesslist必须允许所有需要的应用通过,包括希望被CBAC检查的应用;但是inbound
ip access list必须禁止所有需要CBAC检查的应用,当CBAC被出去的数据包触发后,会在inbound access
list中临时开放一个通道给合法的、正在传送的数据进入。
2、CBAC可提供如下服务
(1)状态包过滤:对企业内部网络、企业和合作伙伴互连以及企业连接internet提供完备的安全性和强制政策。
(2)Dos检测和抵御:CBAC通过检查数据报头、丢弃可疑数据包来预防和保护路由器受到攻击。
(3)实时报警和跟踪:可配置基于应用层的连接,跟踪经过防火墙的数据包,提供详细过程信息并报告可疑行为。
(4)无缝兼容性:整和防火墙和其它cisco IOS软件于一体;优化广域网利用率;提供强大的、可升级的路由选择etc。
(5)支持VPN:利用封装了防火墙版本的cisco Ios 软件和Qos特性来保证在公共网络上传输数据的安全性,同时节省费用。
(6)可升级配置:适用于大部分路由器平台,cisco带防火墙版本的IOS可升级来满足网络带宽和性能的需要。
3、CBAC受到的限制
(1)仅适用于IP数据流:只有TCP和UDP包被检测,其它如ICMP等不能被CBAC检测,只能通过基本的access lists过滤。
(2)如果我们在配置CBAC时重新更改access lists,要注意:如果access lists禁止TFTP数据流进入一个接口,我们将不能通过那个接口从网络启动路由器(netboot)。
(3)CBAC忽略ICMP unreachable 信息。
(4)当CBAC检查FTP传输时,它只允许目的端口为1024—65535范围的数据通道。
(5)如果FTP客户端/服务器认证失败,CBAC将不会打开一条数据通道。
(6)IPSec 和CBAC的兼容性:如果CBAC和IPSec配置于同一台路由器上,只要对数据包的检查是在内部网接口上进行的,而数据包加密是终止在外部网接口上的,那么I
Psec和CBAC就能共存在该边界路由器上。在这种方式下,检查的是不加密的数据流。
4、CBAC所需的内存和性能
有一些参数会影响CBAC所需的内存和性能:
(1)CBAC对每条连接使用600 byte的内存;
(2)在检查数据包的过程中,CBAC使用额外的CPU资源;
(3)尽管CBAC通过对access lists的高效存储(对access
list进行散列索引,然后评估该散列)来最小化其对资源的需求,它在access list检查过程中仍要使用一定的CPU资源。
5、配置CBAC
第一步,CBAC用timeout
和threshold值来管理会话,配置判断是否在会话还未完全建立的时候终止连接。这些参数全局性地应用于所有会话。具有firewall
feature的cisco router12.0以上版本的IOS缺省是起了IP INSPECT 抵御DoS进攻的。当half-open会话数量大到一定的程度往往意味着正在有DOS攻击发生或某人正在做端口扫描,CBAC既监测half-open会话总数也监测会话企图建立的速率。以下是缺省配置:
HpXg_1#sh ip inspect all
Session audit trail is disabled(相关命令是ip inspect audit
trail,是用来打开自动跟踪审计功能并将信息传送到console口,缺省是disabled.)
Session alert is enabled
one-minute thresholds are [400:500] connections(相关命令是ip inspect one-
minute high 500和ip inspect one-minute low 400,是将引起或导致路由器开始或停止删
除half-open会话的新增未建立会话的速率,即每分钟500/400个half-open会话)
max-incomplete sessions thresholds are [400:500](相关命令是ip inspect max-
incomplete high 500,表示将引起路由器开始删除half-open会话的已经存在的half-open会话数500个;ip
inspect max-incomplete low
400表示将导致路由器开始停止删除half-open会话的已经存在的half-open会话数)
max-incomplete tcp connections per host is 50. Block-time 0
minute.(相关命令:ip inspect tcp max-incomplete host 50 block-time
0表示将引起路由器开始丢弃到同一目的主机地址的超过50个的half-open会话。如果block-time值为0表示到某个目的主机的每条连接请求,C
BAC会删除到该主机的最老的已存在的half-open会话,并让该SYN包通过;如果block-time值大于0表示CBAC将删除到该目的主机的所有已存在的h
alf-open连接,并阻拦所有新的连接请求直到block-time值超时)。
tcp synwait-time is 30 sec(ip inspect tcp synwait-time
30:表示路由器在阻断会话前等待TCP会话达到连接建立状态的时间)
tcp finwait-time is 5 sec(ip inspect tcp finwait-time
5:表示防火墙检测到一个FIN标志后仍继续管理TCP会话的时间长度)
tcp idle-time is 3600 sec(ip inspect tcp idle-time
3600:在没有TCP连接后仍继续管理TCP会话的时间长度)
udp idle-time is 30 sec(ip inspect udp idle-time 30:在UDP会话停止后仍继续管理UDP会话信息的时间长度)
dns-timeout is 5 sec(ip inspect dns-timeout 5:DNS名字查询停止后仍继续被管理的时间)
设置timeout值可以通过丢弃超过时限的会话来有效阻止DoS攻击释放系统资源,设置threshold值可以通过限制half-open会话的数量来阻止D
oS攻击。CBAC提供三种threshold值来抵御DOS攻击:1、最大half-open 的TCP或UDP会话的数量。2、基于时间的half-open会话数量。3、每个host可以打开的TCP
half-open会话的数量。对于超过threshold值的连接,CBAC会初始化旧的half-open连接,释放资源接受新的要求同步的数据包。
第二步:配置access list
access-list 101 permit icmp any any echo
access-list 101 permit icmp any any echo-reply
access-list 101 permit icmp any any unreachable
access-list 101 permit icmp any any time-exceeded
access-list 101 permit icmp any any packet-too-big
access-list 101 permit icmp any any traceroute(以上命令允许ping包通过,主要用来排错,如果没有必要上述命令可以不做)
access-list 101 permit any any eq smtp(允许在邮件服务器上的安全验证)
access-list 101 deny ip any any log(CBAC要求禁止其他所有进入的ip包)
第三步:根据实际环境定义一个检查规则。
ip inspect name CBAC fragment maximum 256 timeout 1
(此命令12.1以后的版本出现,防止分段攻击)
ip inspect name CBAC smtp
ip inspect name CBAC ftp
ip inspect name CBAC http
ip inspect name CBAC tcp
(进入的数据包必须与先前流出的数据包有相同的源/目的地址和端口号(源和目的对调),否则就被丢弃)
ip inspect name CBAC udp timeout 5(如果配置了timeout值,那么应答数据包是在最后的UDP请求包被送出后的预定时间范围内收到的,就被允许通过防火墙返回)
第四步:把检查规则定义到一个接口上。
interface BRI0/0
ip address negotiated
ip access-group 101 in
ip nat outside
ip inspect CBAC out
做完以上配置后,实际运行中路由器显示的log如下:
04:20:27: %FW-6-SESS_AUDIT_TRAIL: http session initiator
(172.16.18.1:1426)
sent 656 bytes -- responder (202.108.36.156:80) sent 30740 bytes
04:20:39: %SEC-6-IPACCESSLOGP: list 101 denied tcp
202.104.128.164(2933) -> 202.104.47.135(80), 1 packet
04:20:48: %SEC-6-IPACCESSLOGP: list 101 denied tcp 64.4.13.87(1863) ->
202.104.47.135(1026), 1 packet
04:22:52: %SEC-6-IPACCESSLOGP: list 101 denied tcp
202.104.128.164(2933) -> 202.104.47.135(80), 1 packet
04:23:03: %FW-6-SESS_AUDIT_TRAIL: tcp session initiator
(172.16.18.1:1433) sent 77 bytes -- responder (202.108.44.205:110) sent
45379 bytes
04:23:09: %FW-6-SESS_AUDIT_TRAIL: tcp session initiator
(172.16.18.1:1435) sent 61 bytes -- responder (202.104.32.234:110) sent
1056 bytes
04:23:22: %FW-6-SESS_AUDIT_TRAIL: udp session initiator
(172.16.18.1:1431) sent 29 bytes -- responder (202.96.128.68:53) sent
240 bytes
04:23:35: %SEC-6-IPACCESSLOGP: list 101 denied tcp
202.104.180.199(1262) -> 202.104.47.135(80)!
最后,可以用debug ip inspect detail来调试CBAC。(来源:网友论坛)
姓名:李春华
摘 要 防火墙技术的核心思想是在不安全的网际网环境中构造一个相对安全的子网环境.
本文介绍了防火墙技术的基本概念和系统结构,讨论了实现cisco防火墙的两种主要技术手段:一种是基于分组过滤技术(Packet
filtering),它的代表是在筛选路由器上实现的防火墙功能;一种是基于代理技术(Proxy),它的代表是在应用层网关上实现的防火墙功能.
所谓cisco防火墙就是一个或一组网络设备(计算机或路由器等),可用来在两个或多个网络间加强访问控制.
它的实现有好多种形式,有些实现还是很复杂的,但基本原理原理却很简单. 你可以把它想象成一对开关, 一个开关用来阻止传输,
另一个开关用来允许传输.
设立cisco防火墙的主要目的是保护一个网络不受来自另一个网络的攻击.
通常,被保护的网络属于我们自己,或者是我们负责管理的,而所要防备的网络则是一个外部的网络,该网络是不可信赖的,因为可能有人会从该网络上对我们的网络发起攻击,破坏网络安全.
对网络的保护包括下列工作:拒绝未经授权的用户访问,阻止未经授权的用户存取敏感数据,同时允许合法用户不受妨碍地访问网络资源.
不同的cisco防火墙侧重点不同. 从某种意义上来说,cisco防火墙实际上代表了一个网络的访问原则.
如果某个网络决定设定cisco防火墙,那么首先需要由网络决策人员及网络专家共同决定本网络的安全策略(security
policy),即确定那些类型的信息允许通过cisco防火墙,那些类型的信息不允许通过cisco防火墙.
cisco防火墙的职责就是根据本单位的安全策略,对外部网络与内部网络交流的数据进行检查,符合的予以放行,不符合的拒之门外.
在设计cisco防火墙时,除了安全策略以外,还要确定cisco防火墙类型和拓扑结构. 一般来说,cisco防火墙被设置在可信赖的内部网络和不可信赖的外部网络之间.
cisco防火墙相当于一个控流器,可用来监视或拒绝应用层的通信业务,
cisco防火墙也可以在网络层和传输层运行,在这种情况下,cisco防火墙检查进入和离去的报文分组的IP和TCP头部,根据预先设计的报文分组过滤规则来拒绝或允许报文分组通过.
cisco防火墙是用来实现一个组织机构的网络安全措施的主要设备. 在许多情况下需要采用验证安全和增强私有性技术来加强网络的安全或实现网络方面的安全措施.
本文主要介绍下列cisco防火墙的基本构件和技术:筛选路由器(screening router)、分组过滤(packet
filtering)技术、双宿主机(dual-homed host)、代理服务 (Proxy
Service)、应用层网关(application level gateway)和堡垒主机(bastion host).
象筛选路由器这样的能够实现安全措施的路由器常常被称为安全路由器或安全网关,而实现安全管理的应用层网关又称为安全应用层网关.
2.1筛选路由器 (Screening Router)
许多路由器产品都具有根据给定规则对报文分组进行筛选的功能,这些规则包括协议的类型、特定协议类型的源地址和目的地址字段以及作为协议一部分的控制字段.
例如在常用的Cisco路由器上就具有这种对报文分组进行筛选的功能,这种路由器被称为筛选路由器.
最早的Cisco路由器只能根据IP数据报头部内容进行过滤,而目前的产品还可以根据TCP端口及连接建立的情况进行过滤,
而且在过滤语法上也有了一定改进.
筛选路由器提供了一种强有力的机制,可用于控制任何网络段上的通信业务类型.
而通过控制一个网络段上的通信业务类型,筛选路由器可以控制该网络段上网络服务的类型,从而可以限制对网络安全有害的服务.
筛选路由器可以根据协议类型和报文分组中有关协议字段的值来区别不同的网络通信业务.
路由器根据与协议相关的准则来区别和限制通过其端口的报文分组的能力被称为报文分组过滤. 因此,筛选路由器又称为分组过滤路由器.
下面我们首先介绍应用筛选路由器时需要考虑的安全防线设置问题,以及筛选路由器与OSI模型的关系,分组过滤技术将在下一节讨论.
识别危险区域
根据1996年1月的统计,连入INTERNET的网络大约为60,000个左右,主机总数则已超过900万台.
由于INTERNET上有如此众多的用户,其中难免有少数居心不良的所谓“黑客”. 这种情况就象迁入一个大城市时会遇到犯罪问题一样.
在大城市中,使用带锁的门来保护我们的居室是明智之举.
在这种环境下要求凡事要小心谨慎,因此当有人来敲我们的门时,应首先查看来人,再决定是否让来人进入.
如果来人看起来很危险(安全风险很高),则不应让其进来. 类似地,筛选路由器也通过查看进入的分组来决定它们当中是否有可能有害的分组.
企业网络中的边界被称为安全环形防线. 由于在INTERNET上危险的“黑客”很多,确定一个危险区域是很有用的.
这个危险区域就是指通过INTERNET可以直接访问的所有具有TCP/IP功能的网络.
这里“具有TCP/IP功能”是指一台主机支持TCP/IP协议和它所支持的上层协议.
“直接访问”是指在INTERNET和企业网络的主机之间没有设置强有力的安全措施(没有“锁门”).
从我们自己的角度上看,INTERNET中的地区网、国家网和主干网都代表着一个危险区域,在危险区域内的主机对于外来攻击的防范是很脆弱的.
因此,我们当然希望把自己的网络和主机置于危险区域之外. 然而,没有相应的设备去拦截对自己网络的攻击,则危险区域将会延伸至自己的网络上.
筛选路由器就是这样一种设备,它可以用来减小危险区域,从而使其不能渗透到我们网络的安全防线之内.
在我们的企业网络中,可能不是所有的主机都具有TCP/IP功能. 即使这样,这些非TPC/IP主机也可能成为容易攻击的,尽管从技术上说它们不属于危险区域.
如果一台非TCP/IP主机与一台TCP/IP主机相连,就会发生这种情况.
入侵者可以使用一种TCP/IP主机和非TCP/IP主机都支持的协议来通过TCP/IP主机访问非TCP/IP主机,例如:如果这两台主机都连在同一个以太网网段上,入侵者就可以通过以太网协议去访问非TCP/IP主机.
筛选路由器本身不能够消除危险区域. 但它们可以极为有效地减小危险区域.
筛选路由器和cisco防火墙与OSI模型的关系
按照与OSI模型的关系将筛选路由器和cisco防火墙进行比较. 筛选路由器的功能相当于OSI模型的网络层(IP协议)和传输层(TCP协议).
cisco防火墙常常被描述为网关,而网关应可以在OSI模型的所有七个层次上执行处理功能. 通常,网关在OSI模型的第七层(应用层)执行处理功能.
对于大多数cisco防火墙网关来说,也确实如此.
cisco防火墙可以执行分组过滤功能,因为cisco防火墙覆盖了网络层和传输层.
某些厂商,可能是由于市场营销策略,模糊了筛选路由器和cisco防火墙之间的区别,将他们的筛选路由器产品称为cisco防火墙产品. 为了清晰起见,我们根据OSI模型对筛选路由器和cisco防火墙加以区别.
有些时候,筛选路由器也被称为分组过滤网关.
使用“网关”这一术语来称呼分组过滤设备可能有以下理由,即在传输层根据TCP标志执行的过滤功能不属于路由器的功能,因为路由器运行在OSI模型的网络层.
在网络层以上运行的设备也被称为网关.
2.2分组过滤 (Packet Filtering) 技术
筛选路由器可以采用分组过滤功能以增强网络的安全性. 筛选功能也可以由许多商业cisco防火墙产品和一些类似于Karlbridge的基于纯软件的产品来实现.
但是,许多商业路由器产品都可以被编程以用来执行分组过滤功能. 许多路由器厂商,象Cisco、Bay
Networks、3COM、DEC、IBM等,他们的路由器产品都可以用来通过编程实现分组过滤功能.
分组过滤和网络安全策略
分组过滤可以用来实现许多种网络安全策略. 网络安全策略必须明确描述被保护的资源和服务的类型、重要程度和防范对象.
通常,网络安全策略主要用于防止外来的入侵,而不是监控内部用户. 例如,阻止外来者入侵内部网络,对一些敏感数据进行存取和破坏网络服务是更为重要的.
这种类型的网络安全策略决定了筛选路由器将被置于何处,以及如何进行编程用来执行分组过滤.
良好的网络安全的实现同时也应该使内部用户难以妨害网络安全,但这通常不是网络安全工作的重点.
网络安全策略的一个主要目标是向用户提供透明的网络服务机制. 由于分组过滤执行在OSI模型的网络层和传输层,而不是在应用层,所以这种途径通常比cisco防火墙产品提供更强的透明性.
我们曾经提到cisco防火墙在OSI模型应用层上运行,在这个层次实现的安全措施通常都不够透明.
一个分组过滤的简单模型
一个分组过滤装置常被置于一个或几个网段与其他网段之间.
网段通常被分为内部网段和外部网段,外部网段将你的网络连向外部网络,例如INTERNET;内部网段用来连接一个单位或组织内部的主机和其它网络资源.
在分组过滤装置的每一个端口都可以实施网络安全策略,这种策略描述通过该端口可存取的网络服务的类型.
如果同时有许多网段同该过滤装置相连,则分组过滤装置所实施的策略将变得很复杂. 一般来说,在解决网络安全问题时应该避免过于复杂的方案,其原因如下:
*难于维护,
*在配置过滤规则时容易发生错误,
*执行复杂的方案将对设备的性能产生负作用.
在许多实际情况下,一般都只采用简单模型来实现网络安全策略.
在这个模型中只有两个网段与过滤装置相连,典型的情况是一个网段连向外部网络,另一个连向内部网络. 通过分组过滤来限制请求被拒绝服务的网络通信流.
由于分组过滤规则的设计原则是有利于内部网络连向外部网络,所以在筛选路由器两侧所执行的过滤规则是不同的. 换句话说,分组过滤器是不对称的.
分组过滤器的操作
当前,几乎所有的分组过滤装置(筛选路由器或分组过滤网关)都按如下方式操作:
(1) 对于分组过滤装置的有关端口必须设置分组过滤准则,也称为分组过滤规则.
(2) 当一个分组到达过滤端口时,将对该分组的头部进行分析. 大多数分组过滤装置只检查IP、TCP或UDP头部内的字段.
(3) 分组过滤规则按一定的顺序存贮. 当一个分组到达时,将按分组规则的存贮顺序依次运用每条规则对分组进行检查.
(4) 如果一条规则阻塞传递或接收一个分组,则不允许该分组通过.
(5) 如果一条规则允许传递或接收一个分组,则允许该分组通过.
(6) 如果一个分组不满足任何规则,则该分组被阻塞.
从规则4和5,我们可以看到到将规则按适当的顺序排列是非常重要的. 在配置分组过滤规则时一个常犯的错误就是将分组过滤规则按错误的顺序排列.
如果一个分组过滤规则排序有错,我们就有可能拒绝进行某些合法的访问,而又允许访 问本想拒绝的服务.
规则6遵循守以下原则:未被明确允许的就将被禁止.
这是一个在设计安全可靠的网络时应该遵循的失效安全原则. 与之相对的是一种宽容的原则,即:没有被明确禁止的就是允许的.
如果采用后一种思想来设计分组过滤规则,就必须仔细考虑分组过滤规则没有包括的每一种可能的情况来确保网络的安全.
当一个新的服务被加入到网络中时,我们可以很容易地遇到没有规则与之相匹配的情况.
在这种情况下,不是先阻塞该服务,从而听取用户因为合法的服务被阻塞而抱怨,然后再允许该服务,我们也可以以网络安全风险为代价来允许用户自由地访问该服务,直到制定了相应的安全规则为止.
2.3 双宿主机 (Dual-Homed Host)
在TCP/IP网络中,术语多宿主机被用来描述一台配有多个网络接口的主机. 通常,每一个网络接口与一个网络相连.
在以前,这种多宿主机也可以用来在几个不同的网段间进行寻径,术语网关用来描述由多宿主机执行的寻径功能.
但近年来人们一般用术语路由器来描述这种寻径功能,而网关则用于描述相当于OSI模型上几层中所进行的寻径功能.
如果在一台多宿主机中寻径功能被禁止了,则这个主机可以隔离与它相连的网络之间的通信流量;然而与它相连的每一个网络都可以执行由它所提供的网络应用,如果这个应用允许的话,它们还可以共享数据.
在双宿主机cisco防火墙中禁止寻径
大多数cisco防火墙建立在运行UNIX的机器上. 证实在双宿主机cisco防火墙中的寻径功能是否被禁止是非常重要的;如果该功能没有被禁止,你必须知道如何去禁止它.
为了在基于UNIX的双宿主机中禁止进行寻径,需要重新配置和编译内核. 在BSD UNIX系统中该过程如下所述.
使用MAKE命令编译UNIX系统内核. 使用一个叫做CONFIG的命令来读取内核配置文件并生成重建内核所需的文件. 内核配置文件在/usr/sys/conf或
/usr/src/sys目录下. 在使用Intel硬件的BSDI UNIX平台上,配置文件在/usr/src/sys/i386/conf目录下.
为检查你所使用的是哪一个内核配置文件,你可以对内核映像文件使用strings命令并查找操作系统的名字. 例如:
% strings /bsd | grep BSD
BSDI $Id: if_pe.c, v 1.4 1993/02/21 20:35:01 karels Exp $
BSDI $Id: if_petbl.c, v 1.2 1993/02/21 20:36:09 karels Exp $
BSD/386
@(#)BSDI BSD/386 1.0 kernel #0: Wed Mar 24 17:23:44 MST 1993
polk@hilltop.BSDI.COM:/home/hilltop/polk/sys.clean/compile/GENERIC
最后一行说明当前的配置文件是GENERIC.
进入配置文件目录(/usr/src/sys/i386/conf),将文件GENERIC复制到一个新的配置文件中,其名字应对新的配置有所启发.
例如,你可以将这个文件称为FIREWALL或LOCAL.
cd /usr/src/sys/i386/conf
cp GENERIC FIREWALL
下一步,编辑文件FIREWALL中的选项参数IPFORWARDING,将其值改为- 1,代表“不转发任何IP数据报”.
这个变量的作用是设置内核变量ipforwarding的值,从而禁止IP转发.
options IPFORWARDING=-1
在某些其它的系统上,你看到的可能不是IPFORWARDING参数,而是:
options GATEWAY
为禁止IP分组的转发,可以将一个#号放在这一行的起始处,将这句话注释掉.
#options GATEWAY
同时,检验下列TCP/IP内核配置语句是否存在:
options INET # Internet Protocol support is to be included
pseudo-device loop # The loop back device is to be defined (127.0.0.1)
pseudo-device ehter # Generic Ethernet support such as ARP functions
pseudo-device pty # pseudo teletypes for telnet /rlogin access
device we0 at isa? port 0x280 # Could be different for your Ethernet
interface
运行CONFIG命令来建立LOCAL目录,然后进入该目录:
config LOCAL
cd ../../compile/LOCAL
然后,运行MAKE命令来建立必要的相关部件和内核:
make depend
make
将内核映像复制到根目录下,然后重新启动(reboot):
cp /bsd /bsd.old
cp bsd /bsd
reboot
现在,这台主机可以用来作为双宿主机cisco防火墙了.
怎样破坏双宿主机cisco防火墙的安全
了解双宿主机cisco防火墙的安全性是如何被破坏的是很有用的,因为这样一来你就可以采取相应的措施来防止发生这种破坏.
对安全最大的危胁是一个攻击者掌握了直接登录到双宿主机的权限. 登录到一个双宿主机上总是应该通过双宿主机上的一个应用层代理进行.
对从外部不可信任网络进行登录应该进行严格的身份验证
如果外部用户获得了在双宿主机上进行登录的权利,那么内部网络就容易遭到攻击. 这种攻击可以通过以下任何一种方式来进行:
1)通过文件系统上宽松的许可权限制
2)通过内部网络上由NFS安装的卷
3)利用已经被破坏了的用户帐号,通过在这类用户的主目录下的主机等价文件,如.rhosts,来访问由Berkeley r*工具授权的服务
4)利用可能恢复的过分访问权的网络备份程序
5)通过使用没有适当安全防范的用于管理的SHELL脚本
6)通过从没有适当安全防范的过时软件的修订版和发行文档来掌握系统的漏洞
7)通过安装允许IP传递的老版本操作系统内核,或者安装存在安全问题的老版本操作系统内核.
如果一台双宿主机失效了,则内部网络将被置于外部攻击之下,除非这个问题很快被查出并解决.
在前面,我们已经了解到UNIX内核变量ifrorwarding控制着是否允许进行IP路由选择.
如果一个攻击者获得了足够的系统权限,则这个攻击者就可以改变这个内核变量的值,从而允许IP转发. 在允许IP转发后,cisco防火墙机制就会被旁路掉了.
双宿主机cisco防火墙上的服务
除了禁止IP转发,你还应该从双宿主机cisco防火墙中移走所有的影响到安全的程序、工具和服务,以免落入攻击者的手中.
下面是UNIX双宿主机cisco防火墙的一部分有用的检查点:
1)移走程序开发工具:编译器、链接器等.
2)移走你不需要或不了解的具有 SUID和SGID权限的程序. 如果系统不工作,你可以移回一些必要的基本程序.
3)使用磁盘分区,从而使在一个磁盘分区上发动的填满所有磁盘空间的攻击被限制在那个磁盘分区当中.
4)删去不需要的系统和专门帐号.
5)删去不需要的网络服务,使用netstat -a来检验. 编辑/etc/inetd.conf和/etc/services文件,删除不需要的网络服务定义.
2.4代理服务和应用层网关
代理服务 (Proxy Service)
代理服务使用的的方法与分组过滤器不同,代理(Proxy)使用一个客户程序(或许经过修改),与特定的中间结点连接,然后中间结点与期望的服务器进行实际连接.
与分组过滤器所不同的是, 使用这类cisco防火墙时外部网络与内部网络之间不存在直接连接. 因此,即使cisco防火墙发生了问题,外部网络也无法与被保护的网络连接.
中间结点通常为双宿主机.
代理服务可提供详细的日志记录(log)及审计(audit)功能, 这大大提高了网络的安全性,也为改进现有软件的安全性能提供了可能性.
代理服务器可运行在双宿主机上,它是基于特定应用程序的. 为了通过代理支持一个新的协议,必须修改代理以适应新协议.
在一个称为SOCKS的免费程序库中包括了与许多标准系统调用基本兼容的代理版本,如SOCKS()、BIND()、CONNECT()等.
在URL统一资源定位地址ftp://ftp.inoc.dl.nec.com/pub/security/sock.cstc中可以得到该程序.
代理服务通常由两个部分构成: 代理服务器程序和客户程序. 相当多的代理服务器要求使用固定的客户程序. 例如SOCKS要求适应SICKS的客户程序.
如果网络管理员不能改变所有的代理服务器和客户程序, 系统就不能正常工作. 代理使网络管理员有了更大的能力改善网络的安全特性.
然而,它也给软件开发者、网络系统员和最终用户带来了很大的不便,这就是使用代理的代价. 也有一些标准的客户程序可以利用代理服务器通过cisco防火墙运行,如mail、FTP和telnet等.
即便如此,最终用户也许还需要学习特定的步骤通过cisco防火墙进行通信.
透明性对基于代理服务企的cisco防火墙显然是一个大问题. 即使是那些声称是透明性cisco防火墙的代理也期望应用程序使用特定的TCP或UDP端口.
假如一个节点在非标准端口上运行一个标准应用程序, 代理将不支持这个应用程序. 许多cisco防火墙允许系统管理员运行两个代理拷贝,
一个在标准端口运行,另一个在非标准端口运行,常用服务的最大数目取决于不同的cisco防火墙产品.
基于代理服务的cisco防火墙厂商正在开始解决这个问题. 基于代理的产品开始改进成能够设置常用服务和非标准端口.
然而,只要应用程序需要升级,基于代理的用户会发现他们必须发展新的代理. 一个明显的例子是许多的Web浏览器中加入了大量的安全措施.
cisco防火墙的购买者应留心询问cisco防火墙厂商他们的产品到底能处理哪些应用程序. 另外, 基于代理服务器的cisco防火墙常常会使网络性能明显下降.
相当多的cisco防火墙不能处理高负载的网络通信.
应用层网关
应用层网关可以处理存储转发通信业务,也可以处理交互式通信业务. 通过适当的程序设计,应用层网关可以理解在用户应用层(OSI模型第七层)的通信业务.
这样便可以在用户层或应用层提供访问控制,并且可以用来对各种应用程序的使用情况维持一个智能性的日志文件.
能够记录和控制所有进出通信业务,是采用应用层网关的主要优点. 在需要时,在网关本身中还可以增加额外的安全措施.
对于所中转的每种应用,应用层网关需要使用专用的程序代码. 由于有这种专用的程序代码,应用层网关可以提供高可靠性的安全机制.
每当一个新的需保护的应用加入网络中时,必须为其编制专门的程序代码. 正是如此,许多应用层网关只能提供有限的应用和服务功能.
为了使用应用层网关,用户或者在应用层网关上登录请求,或者在本地机器上使用一个为该服务特别编制的程序代码.
每个针对特定应用的网关模块都有自己的一套管理工具和命令语言.
采用应用层网关的一个缺陷是必须为每一项应用编制专用程序.
但从安全角度上看,这也是一个优点,因为除非明确地提供了应用层网关,就不可能通过cisco防火墙. 这也是在实践“未被明确允许的就将被禁止”的原则.
专用应用程序的作用是作为“代理”接收进入的请求,并按照一个访问规则检查表进行核查,检查表中给出所允许的请求类型.
在这种情况下,这个代理程序被称为一个应用层服务程序代理. 当收到一个请求并证实该请求是允许的之后,代理程序将把该请求转发给所要求的服务程序.
因此,代理程序担当着客户机和服务器的双重角色. 它作为服务器接收外来请求,而在转发请求时它又担当客户机.
一旦会话已经建立起来,应用代理程序便作为中转站在起动该应用的客户机和服务器之间转抄数据.
因为在客户机和服务器之间传递的所有数据均由应用层代理程序转发,因此它完全控制着会话过程,并可按照需要进行详细的记录.
在许多应用层网关中,代理程序是由一个单一的应用层模块实现的.
为了连接到一个应用层代理程序,许多应用层网关要求用户在内部网络的主机上运行一个专用的客户方应用程序.
另一种方法是使用TELNET命令并给出 可提供代理的应用服务的端口号. 例如:如果应用代理程序运行在主机gatekeeper.kinetics.com上,其端口号为63,则可以使用下列命令:
telnet gatekeeper.kinetics.com 63
在连接到代理服务所在的端口之后,你将会看到标识该应用代理的特定的提示符. 这时,需要执行专门配制命令来指定目的服务器.
不管采用的是哪种途径,用户与标准服务之间的接口将会被改变.
如果使用的是一个专用的客户程序,则必须对该程序进行修改,使它总是连向代理程序所在的主机(即代理机)上,并告诉代理机你所要连接的目的地址.
此后,代理机将与最终的目标地址相连并传递数据.
一些代理服务程序模拟标准应用服务的工作方式,当用户指定一个在不同网络中的连接目标时,代理应用程序就将被调用.
对于某一应用代理程序,如果需使用专用的客户机程序时,那么就必须在所有的要使用INTERNET的内部网络主机上安装一该专用客户程序.
当网络的规模较大时,这将是一件困难的工作.
如果你的一些用户在使用DOS/WINDOWS或MACINTOSH客户机,则通常没有与这种客户机应用程序相对应的代理程序.
这时,如果你没有相应客户机应用程序的源码(通常为在PC或MAC机上用的),你将无法修改这些程序.
如果代理程序客户机只能使用某一个应用层网关服务器,则当这个服务器关闭时,这个系统就很容易发生单点失效.
如果一个客户端代理可以由管理员指定连向另一个应用层网关,就可以避免单点失效错误.
由于在配置代理程序的客户机方面存在的诸多问题,一些站点倾向于使用分组过滤技术来处理象FTP或TELNET等可由适当的过滤规则来保证安全的应用;而使用代理程序客户机方式处理比较复杂的应用,如DNS、SMTP、NFS、HTTP和GOPHER等.
当需要通过专用客户机应用程序与代理服务器通信时,象CONNECT()这样的一些标准系统调用必须被替换为相应的代理版本.
这时,你必须将客户机应用程序和这些代理版本的系统调用一起进行编译和链接.
代理服务程序应该设计为在未使用适当修改了的客户机程序的情况下能够提供“失效安全”(fail safe) 的运行模式.
例如:当一个标准的客户机应用程序被用来与代理服务器相连,那么这种通信应该被禁止,并且不能对cisco防火墙或筛选路由器引起不希望的或不可预料的行为.
另一种类型的应用层网关被称为“线路网关”(circuit gateway). 在线路层网关中,分组的地址是一个应用层的用户进程.
线路网关用于在两个通信端点之间中转分组. 线路网关只是在两个端点之间复制字节.
线路网关是建立应用层cisco防火墙的一种更灵活、更通用的途径. 线路网关中可能包括支持某些特定TCP/IP应用的程序代码,但这通常是有限的.
如果它能支持某些应用,则这些应用通常是一些TCP/IP的应用.
在线路-线路网关(circuit-circuit
gateway)中,可能需要安装专门的客户机软件,而用户可能需要与改变了的用户界面打交道,或者改变他们的工作习惯.
在每一台内部主机上安装和配置专门的应用程序将是一件费时的工作,而对大型异构网络来说很容易出错,因为硬件平台和操作系统不同.
由于每个报文分组都将由在应用层运行的软件进行处理,主机的性能将会受到影响.
每个分组都将被所有的通信层次处理两遍,并需要在用户层上进行处理以及转换工作环境.
应用层网关(不论是堡垒主机还是双宿主机)都暴露在网络面前,因此可能需要采用其它手段来保护应用层网关主机,例如分组过滤技术.
堡垒主机 (Bastion Host)及其应用
堡垒主机指的是任何对网络安全至关重要的cisco防火墙主机. 堡垒主机是一个组织机构网络安全的中心主机.
因为堡垒主机对网络安全至关重要,对它必须进行完善的防御. 这就是说,堡垒主机是由网络管理员严密监视的.
堡垒主机软件和系统的安全情况应该定期地进行审查. 对访问记录应进行查看,以发现潜在的安全漏洞和对堡垒主机的试探性攻击.
双宿主机是堡垒主机的一个实例,因为它们对网络的安全至关重要.
为了达到更高程度的安全性要求,有的厂商把基于分组过滤技术的方法和基于代理服务的方法结合起来,形成了新型的cisco防火墙产品.
这种结合通常是以下面两种方案之一实现的:有屏蔽主机(Screened Host)或有屏蔽子网(Screened Subnet).
在第一种方案中,一个分组过滤路由器与Internet相连,同时,一个堡垒主机安装在内部网络上.
通常,在路由器上设立过滤规则,使这个堡垒主机成为Internet上其他节点所能达到的唯一节点. 这确保了内部网络不受未被授权的外部用户的攻击.
有屏蔽子网的方法是建立一个被隔离的子网,位于Internet和内部网络之间,用两台分组过滤路由器将这一子网分别与Internet和内部网络分开.
在许多有屏蔽子网的实现中,两个分组过滤路由器放在子网的两端,在子网内构成一个禁止穿行区.
即Internet和内部网络均可访问有屏蔽子网,但禁止它们穿过有屏蔽子网进行通信.
象WWW和FTP这样的Internet服务器一般就放在这种禁止穿行区中.
堡垒主机的最简单的设置方法
因为堡垒主机是与外部不可信赖网络的接口点,它们常常容易受到攻击. 堡垒主机最简单的设置,是作为外部网络通信业务的第一个也是唯一的一个入口点.
有屏蔽主机网关
因为堡垒主机对内部网络的安全是至关重要的,人们常常在外部不可信赖网络和内部网络之间增加另外一条防线. 第一条防线通常由筛选路由器充当.
图9说明了以筛选路由器作为第一条防线的堡垒主机的一种应用方法. 在这个例子中,只配置了堡垒主机的网络接口,该接口与内部网络相连.
筛选路由器的一个端口与内部网络相连,另一个端口与INTERNET相连. 这种配置方式被称为有屏蔽主机网关.
对筛选路由器必须做如下配置,它应将从外部网络收到的目的地为内部网络的所有通信业务首先送到堡垒主机.
在将信息转发到堡垒主机之前,筛选路由器对收到的分组运行自己的过滤规则.
只有通过了过滤规则的网络信息才被送到堡垒主机,所有其它网络信息将被拒绝进入.
这种体系结构给予网络安全更高的信心,进攻者必须首先穿过筛选路由器,如果设法穿过了筛选路由器,还必须对付堡垒主机.
堡垒主机使用应用层功能来确定允许或拒绝来自或发向外部网络的请求. 如该请求通过了堡垒主机的严格审查,它将被作为进来的信息转发到内部网络上.
对于通向外部的网络的信息,该请求被转发到筛选路由器.
三 结束语
从对分组过滤技术和代理访问的分析可以看出,这两种模式都有一定的缺陷,因此人们正在寻找其他模式的cisco防火墙,例如网络地址转换器 (Network
Address Transtlater)、加密路由器 (Encrypting Router)、“身份证”(Authentication
Token)、 安全内核(Secured Kernel)、 最少特权(The Least Privilege)等.
总之,一个好的cisco防火墙应该具有高度安全性、高透明性和高网络性能.
此外,人们也在开展其他计算机网络安全技术的研究,如加密技术(cryptography)、增强的Internet服务程序Xinetd (Extented
Internet Service Daemon)和以太网 Sniffer等. 在Internet上有许多免费的cisco防火墙产品或工具,如TIS公司(Trusted
Information Systems, Inc.)开发的TIS Internet Firewll Toolkit (FWTK),通用的代理服务系统是SOCKS,TAMU的网络安全体系以及Karlbridge等.
随着Internet在我国的迅速发展,cisco防火墙技术引起了各方面的广泛关注.
一方面在对国外信息安全和cisco防火墙技术的发展进行跟踪,另一方面也已经自行开展了一些研究工作.
目前使用较多的,是在路由器上采用分组过滤技术提供安全保证,对其它方面的技术尚缺乏深入了解. cisco防火墙技术还处在一个发展阶段,仍有许多问题有待解决.
因此,密切关注cisco防火墙的最新发展,对推动Internet在我国的健康发展有着重要的意义.
参考文献
Frederic J. Cooper, et al. Implementing Internet Security. New Riders
Publishing. 1995.
Craig Hunt. TCP/IP Network Administration. O’Reilly & Associates. Inc.
1992.
梅杰, 许榕生. Internetcisco防火墙技术最新发展. 微电脑世界. 1996, 6:27-30
Marcus J. Ranum. Thinking about Firewalls. Proceedings of Second
International Conference on Systems and Network Security and
Management(SANS-II). 1993.
|