第8章Web安全重点和难点SSL和TLS协议的结构和功能特点Web应用系统的安全隐患、安全策略和安全使用掌握SSL的基本原理和所提供的安全保护功能保护Web应用系统安全的基本方法了解Web应用系统所面临的主要威胁和安全需求实践技能结合具体的Web应用系统,通过配置或设计安全插件增强Web应用系统的安全性8.1Web的安全需求根据目前的技术水平,Web服务所面临的威胁有以下几种:1.对Web的依赖起来越多的人和公司在日常生活和工作中依赖Web系统。由于Web服务器的复杂性,使依赖这些服务器的系统经常面临一些无法预测的风险和缺陷。8.1.1Web面临的威胁2.黑客的攻击黑客的攻击行动是无时无刻不在进行的,而且会利用系统和管理的一切可能利用的漏洞。若Web服务器存在漏洞,则黑客可以轻易地骗过Web服务器的软件,从而得到操作系统的口令(例如UNIX系统的口令文件),并将它送回。黑客还能够开发欺骗程序,然后装入UNIX服务器中,用以监听登录会话。当发现有用户登录时,便开始存储文件,这样黑客就有了他的账号和口令。3.病毒的干扰近几年来,计算机病毒的种类层出不群,它们的破坏威力也越来越强,而且这些新型病毒大多是通过网络进行传播的,这就增加了网络受威胁和破坏的程度。4.工业间谍公司的员工或黑客可能被其他公司或组织收买为其服务,这就是工业间谍。被盗的信息中具有破坏力的包括制造和产品开发信息,销售和支出数据,客户名单和计划信息等。5.恶意代码恶意代码不仅限于病毒、蠕虫、特洛伊木马和逻辑炸弹,还有其他未经授权的软件。6.舞弊与盗窃Web技术事实上是信息技术,在为人们带来利益的同时,也日益被用于舞弊和盗窃。7.发泄不满有些人为了发泄不满情绪,可能在Web站点上开些玩笑,甚至捣鬼和破坏。8.错误或失误Web的主管、设计者、操作者和程序员,或者是上级专家,有时也可能出现失误,这会给Web带来安全问题。9.网关接口的漏洞许多Web页面显示文件和指向其他站点的超链接,然而有些站点用到这些超链接所指的站点寻找特定信息。搜索引擎是通过通用网关接口(CGI)脚本执行的方式实现的。黑客可修改这些CGI脚本,以执行他们的非法任务。10.机密性缺口政府、信用卡机构以及其他电子部门收集了许多有关个人和公司的信息。从作者版权到捐献者名单,Web已经拥有几个运行巨大数据库的站点。11.跳板攻击者非法侵入目标主机,并以此为基地,进一步攻击其它的目标,从而使这些被利用的目标主机成为“替罪羊”,遭受困扰甚至法律制裁。8.1.2Web的安全体系结构Web的安全体系结构非常复杂,主要包括以下几个方面:1)客户端软件(既Web浏览器软件)的安全;2)运行浏览器的计算机设备及其操作系统的安全;3)客户端的局域网(LAN);4)Internet;5)服务器端的局域网(LAN);6)服务器端的计算机设备及操作系统的安全;7)服务器上的Web服务器软件。8.1.3Web的安全需求Web的服务器端和客户端是分别针对网络服务器和网络工作站(客户机)设计的,同时也承担着对当前服务器/工作站上病毒的实时监控、检测和清除,自动向系统中心报告病毒监测情况,以及自动进行升级的任务。1.Web服务器的安全需求为了满足Web服务器的安全需求,必须对各类用户访问Web资源的权限作严格管理;维持Web服务的可用性,采取积极主动的预防、检测措施,防止他人破坏,造成设备、操作系统停运或服务瘫痪;确保Web服务器不被用做跳板来进一步侵入内部网络和其他网络,使内部网免遭破,同时避免不必要的麻烦甚至法律纠纷。所以要真正做到安全,就需要考虑安全需求,主要有以下几个方面:1)维护公布信息的真实完整Web服务器在一定程度上是站点拥有者的代言人,代表拥有者的形象。如果公布的信息被人篡改,可能会使得信息遭到破坏,无法实现真正的提供信息服务,甚至会导致用户和站点拥有者的矛盾或者影响站点拥有者的形象。2)维持Web服务的安全可用为确保Web服务的确实有效,一方面要确保用户能够获得Web服务,防止系统本身可能出现的问题以及他人的恶意的破坏;另一方面,要确保所提供的服务是可信的,尤其是像金融或者电子商务这样的重要站点。3)保护Web访问者的隐私在服务器上一般保留着用户的个人信息,一般情况下,用户不希望自己的隐私被别人发现甚至利用,保护Web访问者的隐私是取得用户的信赖和使用Web服务器的前提。Web服务器应确保这些信息的存储安全、不被泄漏。4)保证Web服务器不被入侵者作为“跳板”使用首先,Web服务器不能被作为“跳板”来进一步侵入内部网络系统;其次,要保证Web服务器不被用作“跳板”来进一步危害其他网络。2.Web浏览器的安全需求一般情况下,用户使用Web浏览器获取信息时,安全需求有以下几方面:1)确保运行浏览器的系统不被病毒或者其他恶意程序侵害而遭受破坏。2)确保个人安全信息不外泄。3)确保所交互的站点的真实性,以免得被骗,遭受损失。3.Web服务器设备和相关软件的安全考虑3.Web服务器设备和相关软件的安全考虑在选择Web服务器主机设备和相关软件时,除了考虑价格、功能、性能和容量等因素外,安全是一个不容忽视的因素,因为有些服务器用于提供某些网络服务时存在安全漏洞。挑选Web服务器技术通常要在一系列有冲突的需求之间作出折中的选择,要同时考虑建立网站典型的功能需求和安全要求。对于Web服务器,最基本的性能要求是响应时间和吞吐量。响应时间指服务器在单位时间内最多允许的链接数目;吞吐量指服务器在单位时间内传输到网络上的字节数。典型的功能需求有:提供静态页面和多种动态页面服务的能力;接受和处理用户信息的能力;提供站点搜索服务的能力;远程管理的能力。典型的安全需求有:在已知的Web服务器(包括软、硬件)漏洞中,针对该类型Web服务器的攻击最少;对服务器的管理操作只能由授权用户执行;拒绝通过Web访问Web服务器上不公开的内容;能够禁止内嵌在操作系统或Web服务器软件中的不必要的网络服务;有能力控制对各种形式的执行程序的访问;能对某些Web操作进行日志记录,以便与入侵检测和入侵企图分析;具有适当的容错功能。8.2安全套接层(SSL)和传输层安全(TLS)协议1.SSL简介SSL(SecureSocketLayer,安全套接层协议)提供了一种介于应用层和传输层间的数据安全套接层协议机制。它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。SSL能使客户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对客户进行认证。8.2.1SSL结构SSL协议要求建立在可靠的传输层协议之上,并且高层的应用层协议能透明地建立于SSL协议之上。SSL协议提供的安全信道有以下三个特性:1)私密性:在握手协议定义了会话密钥后,所有的消息都被加密。2)确认性:尽管会话的客户端认证是可选的,但是服务器端始终是被认证的。3)可靠性:传送的消息包括消息完整性检查。2.SSL的结构SSL的设计目标是在TCP基础上提供一种可靠的端到端的安全服务,其服务对象一般是Web应用。在SSL的体系结构中包含两个协议子层,其中底层是SSL记录协议层(SSLrecordprotocollayer);高层是SSL握手协议层(SSLhandshakeprotocollayer)。SSL的协议栈如图8-1所示。握手密码参数修改报警应用数据(HTTP)SSL记录协议TCPIP图8.1TCP/IP协议栈中的安全机制SSL协议由SSL记录协议和SSL握手协议两部分组成。1)SSL记录协议在SSL协议中,所有的传输数据都被封装在记录中。记录是由记录头和长度不为0的记录数据组成的。所有的SSL通信包括握手消息、安全空白记录和应用数据都使用SSL记录层。SSL记录协议包括了记录头和记录数据格式的规定。①SSL记录头格式:SSL的记录头可以是两个或三个字节长的编码。SSL记录头的包含的信息包括:记录头的长度、记录数据的长度、记录数据中是否有粘贴数据。②SSL记录数据的格式SSL的记录数据包含三个部分:MAC数据、实际数据和粘贴数据。MAC数据用于数据完整性检查。计算MAC所用的散列函数由握手协议中的CIPHER-CHOICE消息确定。若使用MD2和MD5算法,则MAC数据长度是16个字节。当会话的客户端发送数据时,密钥是客户的写密钥(服务器用读密钥来验证MAC数据);而当会话的客户端接收数据时,密钥是客户的读密钥(服务器用写密钥来产生MAC数据)。2)SSL握手协议SSL握手协议层包括SSL握手协议(SSLhandshakeprotocol)、SSL密码参数修改协议(SSLchangecipherspecprotocol)、应用数据协议(applicationdataprotocol)和SSL报警协议(SSLalertprotocol)。SSL握手协议包含两个阶段,第一个阶段用于建立私密性通信信道,是通信的初始化阶段,通信双方都发出HELLO消息。当双方都接收到HELLO消息时,就有足够的信息确定是否需要一个新的密钥。第二阶段的主要任务是对客户进行认证,此时服务器已经被认证了。服务器方向客户发出认证请求消息:REQUEST-CERTIFICATE。当客户收到服务器方的认证请求消息,发出自己的证书,并且监听对方回送的认证结果。而当服务器收到客户的认证,认证成功返回SERVER-FINISH消息,否则返回错误消息。客户方发出CLIENT-HELLO消息需要新密钥?Y产生新的密钥发出CLIENT-MASTER-KEY消息等待SERVER-HELLO消息等待SERVER-VERIFY消息第二阶段N服务器方等待CLIENT-HELLO消息发出SEVER-HELLO消息需要新密钥?等待CLIENT-MASTER-KEY消息解开密钥发出SERVER-VERIFY消息第二阶段YN图8.2SSL握手协议的第一阶段8.2.2SSL的安全功能1.SSL安全概述SSL是一种用于web的安全通信标准,位于应用层和传输层之间,建立用户与服务器之间的加密通信,确保信息传递的安全性。数据经过它流出的时候被加密,再往TCP/IP送,而数据从TCP/IP流入之后先进入它这一层被解密,同时它也能够验证网络连接两端的身份。SSL工作在公共密钥和私人密钥基础上,任何用户都可以获得公共密钥来加密数据,但解密数据必须要通过相应的私人密钥。使用SSL安全机制时,首先客户端与服务器建立连接,服务器把它的数字证书与公共密钥一并发送给客户端,客户端随机生成会话密钥,用从服务器得到的公共密钥对会话密钥进行加密,并把会话密钥在网络上传递给服务器,而会话密钥只有在服务器端用私人密钥才能解密,这样,客户端和服务器端就建立了一个安全通道。SSL协议的优点是它提供了连接安全性,具有以下3个基本属性:1)连接的私有性:在初始握手定义了一个会话密钥后,使用会话密钥进行加密通信。2)连接的认证性:通过密码技术(如RSA和DSS)来验证对等实体的身份。3)连接的可靠性:消息传输使用一个带密钥的MAC(消息认证码),包括了消息完整性检查。其中MAC是通过把密钥和消息一起经安全哈希函数(如SHA和MD5)处理后得到的。2.SSL中使用的加密技术在SSL中,分别采用了对称密码、公钥密码和公钥密码中的数字签名技术。公钥密码技术用于初始化SSL连接,对称密码技术用于SSL连接后的安全通信。使用SSL的Web服务器持有私钥和带有公钥信息的证书。当Web浏览器请求获取Web服务器上的服务时,一个初始化SSL连接的过程便开始了,这个初始化过程如下:1)客户端通过HTTPS向Web服务器发出对某个页面的请求。2)Web服务器把含有服务器公钥的证书发送给客户端。3)客户端进行一系列的检查,包括:①证书是否过期;②签发此证书的CA(安全认证中心)是否存在于浏览器的