一. 背景
如今计算机安全最严重的威胁之一就是恶意用户或软件通过网络对计算机系统的入侵或攻击,加密技术并不能阻止植入了 “特洛伊木马” 的计算机系统通过网络向攻击者泄露秘密信息,因此需要部署防火墙来保护个人或者企业的网络安全。
用户入侵包括:利用系统漏洞进行未授权登录,或者授权用户获得更高级别的权限等。
软件入侵的方式包括:(1)网络传播病毒、蠕虫和特洛伊木马。
(2)阻止合法用户正常使用服务的拒绝服务攻击(DoS)
二. 防火墙
最为常用的两种防火墙是代理防火墙(proxy firewall ) 和包过滤防火墙(packet-filter)。它们的主要区别是所操作的协议栈的层次,以及由此决定的IP地址和端口号的使用是不同的。简单来说,包过滤防火墙是一个互联网路由器,能够丢弃符合或者不符合特定条件的数据包。而代理防火墙是一个多宿主的服务器主机,它是TCP和UDP传输关联的终点,通常不会再IP协议层中路由IP数据报。
1.包过滤防火墙
(1)包过滤防火墙的结构
下图是一个典型的包过滤防火墙,IGSA是全功能安全网关,DMZ是英文“demilitarized zone”的缩写,中文名称为“隔离区”,也称“非军事化区”。它是为了解决安装防火墙后外部网络的访问用户不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓冲区。该缓冲区位于企业内部网络和外部网络之间的小网络区域内。在这个小网络区域内可以放置一些必须公开的服务器设施,如企业Web服务器、FTP服务器和Mail服务器等。另一方面,通过这样一个DMZ区域,更加有效地保护了内部网络。
防火墙作IP路由器位于一个内网和Inernet之间,只允许特定的流量通过。一种常见的配置是允许所有内网到外网的流量通过,但相反的方向只允许小部分的流量。当使用一个DMZ时,只允许从Internet访问其中的某些特定服务。
(2)包过滤防火墙的过滤规则
包过滤防火墙是一种特殊编程的路由器,能够过滤(丢弃)网络流量。它们一般都可以配置为丢弃或转发数据包头中符合或者不符合标准的数据包,这些标准称为过滤器。
简单的过滤器包括网络层或传输层报头中各个部分的范围比较。最流行的过滤器包括IP地址或者选项、ICMP报文的类型,以及根据数据包中端口号确定的各种UDP或TCP服务。网络管理员回安装过滤器或者访问控制列表(Access Control List,ACL),配置ACL后,可以限制网络流量,允许特定设备访问,指定转发特定端口数据包等。如可以配置ACL,禁止局域网内的设备访问外部公共网络,或者只能使用FTP服务。ACL既可以在路由器上配置,也可以在具有ACL功能的业务软件上进行配置。
包过滤防火墙既可以是无状态的,即独立处理每一个分组。也可以是有状态的,即要跟踪每个连接或会话的通信状态。
无状态的包过滤防火墙:最简单的包过滤防火墙都是无状态的,它单独处理每一个数据报。
有状态的包过滤防火墙:能够通过关联已经或者即将到达的数据包来推断流或者数据报的信息,即那些属于同一个传输关联的数据包或构成同一个IP数据报的IP分片。IP分片使得防火墙的工作变得更加复杂,无状态的包过滤防火墙极易被其混淆。
2.代理防火墙
(1)代理防火墙的原理
代理防火墙并不是真正意义上的互联网路由器,它是一个运行一个或多个应用层网关(Application-Layer Gateways, ALG)的主机,也叫应用网关防火墙,该主机有多个网络接口,能够在应用层中继两个连接之间的特定类型的流量。它通常不像路由器那样做IP转发,但现如今也出现了结合了各种功能的更复杂的代理防火墙。
所以进出网络的应用程序报文都必须通过应用网关。当某应用客户进程向服务器发送一份请求报文时,先发送给应用网关,应用网关在应用层打开该报文,查看该请求是否合法(可根据应用层用户标识ID或其他应用层信息来确定)。如果请求合法,应用网关以客户进程的身份将请求报文转发给原始服务器。如果不合法,报文则被丢弃。例如,一个邮件网关在检查每一个邮件时,根据邮件地址,或邮件的其他首部,甚至是报文的内容(如,有没有“核弹头”,“导弹”等敏感词)来确定该邮件能否通过防火墙。
虽然这种类型的防火墙是很安全的,但它是以脆性和缺乏灵活性为代价的,因为这种类型的防火墙必须为每个传输层服务设置一个代理,任何要使用新服务必须安装一个相应的代理,并通过该代理来操作发起连接。每个应用都需要一个不同的应用网关(可以运行在同一台主机上)。其次,在应用层转发和处理报文,处理负担比较重。另外,对应用程序不透明,需要在应用程序客户端配置应用网关地址。
(2)两种常见的代理防火墙
第一种是HTTP代理防火墙,也称为Web代理,只能用于HTTP和HTTPS协议(Web),这些代理对于内网用户来说就像是Web服务器,对于被访问的外部网站来说就像是Web客户端。这种代理往往提供Web缓存功能。这些缓存保存网页的副本,以便以后访问可以直接从缓存中获取,而不再访问原始的服务器,从而减少网页的延迟。一些Web代理也经常被用来当做过滤器,能够基于“黑名单”来阻止用户访问某些网站。
第二种是基于SOCKS协议的防火墙,目前socks有两个版本:第4版为代理传输提供了基本的支持,第5版增加了强大的认证,UDP传输和IPv6寻址。为使用SOCKS代理,应用程序开发时必须添加SOCKS代理支持功能,同时配置应用程序能够获知代理的位置和版本。一旦配置完成,客户端使用SOCKS协议请求代理进行网络连接,也可以选择性的进行DNS查找。
QQ登录的SOCKS代理: