全面分析防火墙及防火墙的渗透
出处:315safe 作者:315safe 时间:2005-12-23 19:44:00
(一)防火墙介绍
防火墙是一种功能,它使得内部网络和外部网络或Internet互相隔离,以此来保护内部网络或主机。简单的防火墙可以由Router,3 Layer Switch的ACL(access control list)来充当,也可以用一台主机,甚至是一个子网来实现。复杂的可以购买专门的硬件防火墙或软件防火墙来实现。
防火墙的功能有:
1、过滤掉不安全服务和非法用户
2、控制对特殊站点的访问
3、提供监视Internet安全和预警的方便端点
防火墙并不是万能的,也有很多防火墙无能为力的地方:
1、防火墙防不住绕过防火墙的攻击。比如,防火墙不限制从内部网络到外部网络的连接,那么,一些内部用户可能形成一个直接通往Internet的连接,从而绕过防火墙,造成一个潜在的backdoor.恶意的外部用户直接连接到内部用户的机器上,以这个内部用户的机器为跳板,发起绕过防火墙的不受限制的攻击。
2、防火墙不是防毒墙,不能拦截带病毒的数据在网络之间传播。
3、防火墙对数据驱动式攻击也无能为力。
因此,我们不能过分依赖防火墙。网络的安全是一个整体,并不是有某一样特别出色的配置。网络安全遵循的是“木桶原则”。
一般防火墙具备以下特点:
1、广泛的服务支持:通过将动态的、应用层的过滤能力和认证相结合,可实现WWW浏览器、HTTP服务器、 FTP等;
2、对私有数据的加密支持:保证通过Internet进行虚拟私人网络和商务活动不受损坏;
3、客户端认证只允许指定的用户访问内部网络或选择服务:企业本地网与分支机构、商业伙伴和移动用户间安全通信的附加部分;
4、反欺骗:欺骗是从外部获取网络访问权的常用手段,它使数据包好似来自网络内部。防火墙能监视这样的数据包并能扔掉它们;
5、C/S模式和跨平台支持:能使运行在一平台的管理模块控制运行在另一平台的监视模块。
让我们来看看传统的防火墙工作原理及优缺点:
1.(传统的)包过滤防火墙的工作原理
包过滤是在IP层实现的,因此,它可以只用路由器完成。包过滤根据包的源IP地址、目的IP地址、源端口、目的端口及包传递方向等报头信息来判断是否允许包通过。过滤用户定义的内容,如IP地址。其工作原理是系统在网络层检查数据包,与应用层无关,包过滤器的应用非常广泛,因为CPU用来处理包过滤的时间可以忽略不计。而且这种防护措施对用户透明,合法用户在进出网络时,根本感觉不到它的存在,使用起来很方便。这样系统就具有很好的传输性能,易扩展。但是这种防火墙不太安全,因为系统对应用层信息无感知——也就是说,它们不理解通信的内容,不能在用户级别上进行过滤,即不能识别不同的用户和防止IP地址的盗用。如果攻击者把自己主机的IP地址设成一个合法主机的IP地址,就可以很轻易地通过包过滤器,这样更容易被黑客攻破。 基于这种工作机制,包过滤防火墙有以下缺陷:
通信信息:包过滤防火墙只能访问部分数据包的头信息;
通信和应用状态信息:包过滤防火墙是无状态的,所以它不可能保存来自于通信和应用的状态信息;
信息处理:包过滤防火墙处理信息的能力是有限的。
比如针对微软IIS漏洞的Unicode攻击,因为这种攻击是走的防火墙所允许的80端口,而包过滤的防火墙无法对数据包内容进行核查,因此此时防火墙等同于虚设,未打相应patch的提供web服务的系统,即使在防火墙的屏障之后,也会被攻击者轻松拿下超级用户的权限。
包过滤防火墙的缺点和不足,可以在应用层解决。下面我们来看看应用层网关。
2.应用网关
1、应用代理服务器(Application Gateway Proxy)
在网络应用层提供授权检查及代理服务。当外部某台主机试图访问受保护网络时,必须先在防火墙上经过身份认证。通过身份认证后,防火墙运行一个专门为该网络设计的程序,把外部主机与内部主机连接。在这个过程中,防火墙可以限制用户访问的主机、访问时间及访问的方式。同样,受保护网络内部用户访问外部网时也需先登录到防火墙上,通过验证后,才可访问。
应用网关代理的优点是既可以隐藏内部IP地址,也可以给单个用户授权,即使攻击者盗用了一个合法的IP地址,也通不过严格的身份认证。因此应用网关比报文过滤具有更高的安全性。但是这种认证使得应用网关不透明,用户每次连接都要受到认证,这给用户带来许多不便。这种代理技术需要为每个应用写专门的程序。
2、回路级代理服务器
即通常意义的代理服务器,它适用于多个协议,但不能解释应用协议,需要通过其他方式来获得信息,所以,回路级代理服务器通常要求修改过的用户程序。
套接字服务器(Sockets Server)就是回路级代理服务器。套接字(Sockets)是一种网络应用层的国际标准。当受保护网络客户机需要与外部网交互信息时,在防火墙上的套服务器检查客户的User ID、IP源地址和IP目的地址,经过确认后,套服务器才与外部的服务器建立连接。对用户来说,受保护网与外部网的信息交换是透明的,感觉不到防火墙的存在,那是因为网络用户不需要登录到防火墙上。但是客户端的应用软件必须支持 “Socketsified API”,受保护网络用户访问公共网所使用的IP地址也都是防火墙的IP地址。
3、代管服务器
代管服务器技术是把不安全的服务如FTP、Telnet等放到防火墙上,使它同时充当服务器,对外部的请求作出回答。与应用层代理实现相比,代管服务器技术不必为每种服务专门写程序。而且,受保护网内部用户想对外部网访问时,也需先登录到防火墙上,再向外提出请求,这样从外部网向内就只能看到防火墙,从而隐藏了内部地址,提高了安全性。
4、IP通道(IP Tunnels)
如果一个大公司的两个子公司相隔较远,通过Internet通信。这种情况下,可以采用IP Tunnels来防止Internet上的黑客截取信息,从而在Internet上形成一个虚拟的企业网。
5、网络地址转换器(NAT Network Address Translate)
当受保护网连到Internet上时,受保护网用户若要访问Internet,必须使用一个合法的IP地址。但由于合法Internet IP地址有限,而且受保护网络往往有自己的一套IP地址规划(非正式IP地址)。网络地址转换器就是在防火墙上装一个合法IP地址集。当内部某一用户要访问Internet时,防火墙动态地从地址集中选一个未分配的地址分配给该用户,该用户即可使用这个合法地址进行通信。同时,对于内部的某些服务器如Web服务器,网络地址转换器允许为其分配一个固定的合法地址。外部网络的用户就可通过防火墙来访问内部的服务器。这种技术既缓解了少量的IP地址和大量的主机之间的矛盾,又对外隐藏了内部主机的IP地址,提高了安全性。
6、隔离域名服务器(Split Domain Name Server )
这种技术是通过防火墙将受保护网络的域名服务器与外部网的域名服务器隔离,使外部网的域名服务器只能看到防火墙的IP地址,无法了解受保护网络的具体情况,这样可以保证受保护网络的IP地址不被外部网络知悉。
7、邮件技术(Mail Forwarding)
当防火墙采用上面所提到的几种技术使得外部网络只知道防火墙的IP地址和域名时,从外部网络发来的邮件,就只能送到防火墙上。这时防火墙对邮件进行检查,只有当发送邮件的源主机是被允许通过的,防火墙才对邮件的目的地址进行转换,送到内部的邮件服务器,由其进行转发。
应用网关是检查所有应用层的信息包,并将检查的内容信息放入决策过程,这样安全性有所提高。然而,它们是通过打破客户机/服务器模式实现的,每一个客户机/服务器通信需要两个连接:一个是从客户端到防火墙,另一个是从防火墙到服务器。另外,每一个代理需要一个不同的应用进程,或一个后台运行的服务程序,这样如果有一个新的应用就必须添加对此应用的服务程序,否则不能使用该种服务,可伸缩性差。 基于这种工作机制,应用网关防火墙有以下缺陷:
连接限制:每一个服务需要自己的代理,所以可提供的服务数和伸缩性受到限制;
技术限制:应用网关不能为UDP、RPC及普通协议族的其他服务提供代理;
性能:实现应用网关防火墙牺牲了一些系统性能。
防火墙的体系结构及组合形式
1、屏蔽路由器(Screening Router)
这是防火墙最基本的构件。它可以由厂家专门生产的路由器实现,也可以用主机来实现。屏蔽路由器作为内外连接的唯一通道,要求所有的报文都必须在此通过检查。路由器上可以装基于IP层的报文过滤软件,实现报文过滤功能。许多路由器本身带有报文过滤配置选项,但一般比较简单。
单纯由屏蔽路由器构成的防火墙的危险带包括路由器本身及路由器允许访问的主机。它的缺点是一旦被攻陷后很难发现,而且不能识别不同的用户。
2、双宿主机网关(Dual Homed Gateway)
任何拥有多个接口卡的系统都被称为多宿的,双宿主机网关是用一台装有两块网卡的主机做防火墙。两块网卡各自与受保护网和外部网相连。主机上运行着防火墙软件,可以转发应用程序,提供服务等。
双宿主机网关优于屏蔽路由器的地方是:堡垒主机的系统软件可用于维护系统日志、硬件拷贝日志或远程日志。这对于日后的检查很有用。但这不能帮助网络管理者确认内网中哪些主机可能已被黑客入侵。
双宿主机网关的一个致命弱点是:一旦入侵者侵入堡垒主机并使其只具有路由功能,则任何网上用户均可以随便访问内网。
3、被屏蔽主机网关(Screened Host Gateway)
屏蔽主机网关易于实现也很安全,因此应用广泛。例如,一个分组过滤路由器连接外部网络,同时一个堡垒主机安装在内部网络上,通常在路由器上设立过滤规则,并使这个堡垒主机成为从外部网络唯一可直接到达的主机,这确保了内部网络不受未被授权的外部用户的攻击。
如果受保护网是一个虚拟扩展的本地网,即没有子网和路由器,那么内网的变化不影响堡垒主机和屏蔽路由器的配置。危险带限制在堡垒主机和屏蔽路由器。网关的基本控制策略由安装在上面的软件决定。如果攻击者设法登录到它上面,内网中的其余主机就会受到很大威胁。这与双穴主机网关受攻击时的情形差不多。
4、被屏蔽子网 (Screened Subnet)
这种方法是在内部网络和外部网络之间建立一个被隔离的子网,用两台分组过滤路由器将这一子网分别与内部网络和外部网络分开。在很多实现中,两个分组过滤路由器放在子网的两端,在子网内构成一个“非军事区”DMZ。有的屏蔽子网中还设有一堡垒主机作为唯一可访问点,支持终端交互或作为应用网关代理。这种配置的危险带仅包括堡垒主机、子网主机及所有连接内网、外网和屏蔽子网的路由器。
如果攻击者试图完全破坏防火墙,他必须重新配置连接三个网的路由器,既不切断连接又不要把自己锁在外面,同时又不使自己被发现,这样也还是可能的。但若禁止网络访问路由器或只允许内网中的某些主机访问它,则攻击会变得很困难。在这种情况下,攻击者得先侵入堡垒主机,然后进入内网主机,再返回来破坏屏蔽路由器,整个过程中不能引发警报。
建造防火墙时,一般很少采用单一的技术,通常是多种解决不同问题的技术的组合。这种组合主要取决于网管中心向用户提供什么样的服务,以及网管中心能接受什么等级风险。采用哪种技术主要取决于经费,投资的大小或技术人员的技术、时间等因素。一般有以下几种形式:
1、使用多堡垒主机;
2、合并内部路由器与外部路由器;
3、合并堡垒主机与外部路由器;
4、合并堡垒主机与内部路由器;
5、使用多台内部路由器;
6、使用多台外部路由器;
7、使用多个周边网络;
8、使用双重宿主主机与屏蔽子网。
随着人们对网络安全意识的提高,防火墙的应用越来越广泛。有钱的用高级硬件防火墙,没钱的用免费的软件防火墙。那么,硬件防火墙和软件防火墙相比,有哪些优点呢?
硬件防火墙采用专用的硬件设备,然后集成生产厂商的专用防火墙软件。从功能上看,硬件防火墙内建安全软件,使用专属或强化的操作系统,管理方便,更换容易,软硬件搭配较固定。硬件防火墙效率高,解决了防火墙效率、性能之间的矛盾,可以达到线性。
软件防火墙一般基于某个操作系统平台开发,直接在计算机上进行软件的安装和配置。由于客户平台的多样性,软件防火墙需支持多操作系统,如Unix、Linux、SCO-Unix、Windows等,代码庞大、安装成本高、售后支持成本高、效率低。
1、性能优势。防火墙的性能对防火墙来说是至关重要的。它决定了每秒钟通过防火墙的数据流量。单位是Bps,从几十M到几百M不等,还有千兆防火墙甚至达到几G的防火墙。而软件防火墙则不可能达到如此高的速率。
2、CPU占用率的优势。硬件防火墙的CPU占用率当然是0了,而软件防火墙就不同了,如果处于节约成本的考虑将防火墙软件安装在提供服务的主机上,当数据流量较大时,CPU占用率将是主机的杀手,将拖跨主机。
3、售后支持。硬件防火墙厂家会对防火墙产品有跟踪的服务支持,而软件防火墙的用户能得到这种机会的相对较少,而且厂家也不会在软件防火墙上下太大的功夫和研发经费。
(二)防火墙渗透
以上我们简单的介绍了防火墙的原理,分类,优缺点等。下面,我们将对防火墙的渗透技术做一下简单的介绍。
精心配置过的防火墙固然将让绝大多数crackers挡在外围,掌握网络控制的主动权,但是,防火墙并不是万能的,我们也在上一节的内容中简单的讲了防火墙的缺点。没有任何一样网络产品可以说是绝对安全的。绿盟的san的一篇的文章介绍了渗透防火墙的shellcode,有兴趣的朋友可以参考一下:http://www.winnerinfo.net/infoview.asp?Kind=145&ID=529 ,我在这里想再提起“通道技术”。
说到通道技术,我想再提一下“端口复用”,很多朋友以为通道技术就是端口复用技术。那么,错了,端口复用是指一个端口上建立了多个连接,而不是在一个端口上面开放了多个服务而互不干扰。假如你想在已经开放了WWW服务的主机上,在80端口再添加一项服务,只有2种可能:1.添加服务失败 2.WWW服务出错。那么什么是通道呢?这里所谓的通道,是指一种绕过防火墙端口屏蔽的通讯方式。防火墙两端的数据包封装在防火墙所允许通过的数据包类型或是端口上,然后穿过防火墙与处在防火墙后面的主机通讯,当封装的数据包到达目的地时,再将数据包还原,并将还原后的数据包交送到相应的服务上,是在一个端口上面开放了多个服务而互不干扰的。
为了通信,不论是什么防火墙,都不可能把所有的服务,所有的端口都封闭。(如果有那样的防火墙,还不如拔网线来的直接,呵呵)大多数的防火墙或多或少都要开放一个端口或服务(比如HTTP),只要开放了端口和服务,就给了我们渗透的可能。HTTP是一种比较简单而常用的互交式协议,你给服务器发送一个请求,服务器就返回给你一个回应。几乎所有的主机都被允许发送HTTP请求。网络上HTTP协议使用的是如此广泛,这也决定了我们可以通过使用通道技术而轻松的通过防火墙或其他类似设备而将我们需要的数据发送至目标。一个很典型的例子就是http-tunnel.
在http-tunnel的官方网站http://www.http-tunnel.com上有这么一句话:“http-tunnel在HTTP请求中建立了一个双向的虚拟数据连接。HTTP请求可以经过代理而被发送,这就可以被那些处在限制了端口的防火墙背后的用户使用。如果通过HTTP代理的WWW浏览是被允许的,那么http-tunnel也就可以成立,也就是说,可以在防火墙外telnet或者PPP到防火墙的内部。”这样看来,攻击者可以使用这种技术来实现远程控制。我们来看看http-tunnel的设计思路:
A主机在防火墙的外面,没有做任何限制。B主机在防火墙内部,受到防火墙保护,防火墙配置的访问控制原则是只允许80端口的数据进出,但主机开放了telnet服务。现在假设需要从A系统Telnet到B系统上去,怎么办?使用正常的telnet肯定是不可能了,因为telnet使用的23端口被防火墙屏蔽,防火墙收到这个telnet的包后,发现不符合只允许80端口的数据通过的过滤原则,就丢弃了。但我们知道可用的有80端口,那么这个时候使用Httptunnel通道,就是一个好的办法,思路如下:
在A机器上运行tunnel的客户端,让它侦听本机的一个不被使用的任意指定端口(最好是1024以上65535以下),如,8888。同时将来自8888端口上的数据指引到B机的80端口上,因为是80端口,防火墙是允许通过的。然后在B机上起一个服务端,(在只有80端口对外开放的情况下,只能先得到一个WEBSHELL,想办法提升自己的权限,并运行服务端)同样挂接在80端口上,同时指引80端口的来自客户端的转发到本机的telnet服务端口23,这样就OK了。现在在A机上telnet本机端口8888,根据刚才的设置数据包会被转发到目标端口为80的B机,因为防火墙允许通过80端口的数据,因此数据包畅通的穿过防火墙,到达B机。此时B机在80端口侦听的进程收到来自A的数据包,会将数据包还原,再交还给telnet进程。当数据包需要由B到A返回时,将由80端口再回送,同样可以顺利的通过防火墙。
上述功能似乎用端口映射也能做的到,把A主机上的23端口重定向到80端口,再把B主机上的80端口重定向到23端口就行了。但如果B主机已经开启了WWW服务了呢?要使用上述功能,使用端口映射必须牺牲B主机的80端口,这是得不偿失的。试想在一次渗透防火墙的对某台主机的攻击中,把别人本来已经开启的WWW服务DOWN了,你还能在这台主机上呆多久?但是,使用http-tunnel就可以完美实现,即使B主机已经开放80,提供WWW,我们也照样可以发送telnet到其80端口上,享受到“正版”的telnet服务。
对于通道技术,我们的解决方案是采用应用层的数据包检测技术,因为在正常的HTTP请求中,GET、POST等行为是必不可少的,如果来自一个连接的HTTP请求中,总是没有GET、POST,那么这个连接肯定有问题。从而终止此连接。现在已经有公司的IDS产品能够查出隐藏在80中的tunnel,但是这些IDS产品的费用恐怕也不是中小型企业能承受的了的。
对于防火墙的渗透,还有一些方法,比如找防火墙本身的设计缺陷等等,但那些难度太大。恐怕不是我们应该考虑的了。
总结:
我们又把防火墙和防火墙的渗透深入浅出的复习了一遍。现在我们应该更清楚的知道,防火墙不是万能的,即使是经过精心配置的防火墙也抵挡不住隐藏在看似正常数据下的通道程序。那么,对于一个网络来说,我们应该怎么做才能够保证它的最大安全呢?
1.根据需要合适的配置防火墙,尽量少开端口。
2.采用过滤严格的WEB程序。
3.采用加密的HTTP协议(HTTPS)。
4.如果条件允许,购买一台功能较强大的NIDS。
5.管理好你的内网用户,防止攻击者和内网用户直接连接绕过防火墙。
6.经常升级你的firewall产品