1、Web安全应用入门一、 web安全模型为了解决Web 服务安全通信问题, 微软和IBM共同定义了一个Web 服务安全模型, 该模型以WS- Security 规范为核心, 保证了SOAP 消息的安全性, 通过定义WS- Policy、WSTrust等规范, 保证了上层应用系统的安全性。1Web 服务安全性模型引入了一个由各个相互联系的规范组成的集合,这些规范描述了把安全性功能程序放到 Web 服务环境中的方法。体系结构被设计成允许对规范进行混合匹配,使实现者能够仅部署他们需要的那部分。这些规范中的第一个 Web 服务安全性(Web Security)文档 提供了把消息完整性和机密性功能程序添加
2、到 Web 服务中所必需的基本元素,并且提供把安全性令牌(例如,数字证书和 Kerberos 票据)关联到 SOAP 消息的方法。WS-Security 为正提议的 Web 服务安全性模型打下了基础。随着时间的推移,除安全性外,还将引入其它规范来解决安全性策略、信任、隐私权和授权。 图1 Web 服务安全性指南1、WS- Security 规范2WS- Security 规范提出了一套标准的SOAP 安全扩展方法, 通过对消息的加密、数字签名以及认证, 保证了消息端对端的安全传输。(1) 身份验证: 通过在SOAP 标头传递安全性令牌( SecurityToken) 验证用户身份。(2) 消息
3、加密: 使用XML Encryption 技术保证传输消息的机密性。(3) 消息数字签名: 使用XML Signature 技术实现消息的完整性和一致性。2、WS- Policy 和WS- SecurityPolicy规范2(1)WS- Policy 定义了Web 服务策略模型和策略引用包含机制。策略由策略表达式表示。其他Web 服务规范可以使用WS- Policy 提供的框架来定义相应的策略机制用以描述相应的服务需求、偏好和能力。(2) WS- SecurityPolicy 以WS- Policy 规范为基础, 定义了可用于指定安全策略的XML 元素, 元素明确指定策略。换句话说, WS-
4、SecurityPolicy 指定了如何用WS- Policy 语言表达WSSecurity策略。这些策略阐明了针对特殊情况的特定安全需求,比如采用何种验证手段, 客户端接受哪种数字签名算法, 服务器端支持哪些加密算法等。WS- SecurityPolicy 定义的安全策略XML 元素包括: 指定安全令牌类型。: 指定数字签名的手段。: 指定加密算法。: 指定需解密的消息片断。3、 其它协议3(1) WS-Trust:该规范描述了如何在 Web 服务环境中建立企业之间的信任关系。 (2) WS-Privacy:该规范描述了如何把隐私权策略以及首选项与 Web 服务相关联。 (3) WS-Sec
5、ureConversation:描述了如何将集合消息作为更复杂的企业事务的一部分安全地交换。 (4) WS-Federation:描述了一个模型,该模型用于把不兼容的安全性机制,或部署在不同域中的、类似的机制集成在一起。例如,如果两个 IBM 业务伙伴都实现基于 PKI 的身份基础架构,或者如果其中一个伙伴碰巧实现了 Kerberos 系统,WS-Federation 规范将提供一个关于如何应用 Web 服务技术把那些系统联系到一起的指南。 (5) WS-Authorization:描述了如何在 Web 服务基础架构中提供应用程序授权请求和决定(例如,允许 Sally 访问 Employee
6、数据库)。4、可以在三个级别应用 Web 服务安全性:4平台/传输级(点对点)安全性应用程序级(自定义)安全性消息级(端对端)安全性每一种方法都具有各自的优缺点,这些会在下面详细地说明。选择哪一种方法在很大程度上取决于消息交换中所涉及的体系结构和平台的特点。注意:本章着重讨论平台和应用程序级安全性。消息级安全性将在全局 XML Web 服务体系结构 (GXA) 提案中以及专门在 WS-Security 规范中进行介绍。在编写本指南时,Microsoft 刚刚发布了 Web 服务开发工具包的技术预览版本。它可用于开发符合 WS-Security 规范的消息级安全性解决方案。有关详细信息,请参见平
7、台/传输级(点对点)安全性两个终结点之间的传输通道(Web 服务客户端和 Web 服务)可以用于提供点对点的安全性。图 10.1 中说明了这种情况。图 10.1平台/传输级安全性当您使用平台级安全性时(它假定在公司 Intranet 上安装了紧密集成的 Microsoft Windows 操作系统环境):Web 服务器 (IIS) 提供基本、摘要式、集成和证书身份验证。ASP.NET Web 服务继承了某些 ASP.NET 身份验证和授权功能。可以使用 SSL 和/或 IPSec 提供消息的完整性和机密性。何时使用传输级安全模型简单明了,并且可用于许多(主要是基于 Intranet 的)方案;
8、在这些方案中,可以严格地控制传输机制和终结点配置。传输级安全性的主要问题有:安全性取决于基本平台、传输机制和安全服务提供程序(NTLM、Kerberos 等等)并与它们紧密集成。安全性是在点对点的基础上应用的,无法通过中间应用程序节点提供多个跃点和路由。应用程序级安全性使用这种方法时,应用程序负责提供安全性并使用自定义的安全功能。例如:应用程序可以使用自定义的 SOAP 标头传递用户凭据,以便根据每个 Web 服务请求对用户进行身份验证。常用的方法是在 SOAP 标头中传递票证(或者用户名或许可证)。应用程序可以灵活生成其包含角色的IPrincipal对象。该对象可以是自定义类或 .NET F
9、ramework 提供的GenericPrincipal类。应用程序可以有选择地加密需要保密的内容,但是这需要使用安全密钥存储,并且开发人员必须了解相关加密 API 的知识。另一种方法是使用 SSL 提供机密性和完整性,并将它与自定义的 SOAP 标头结合起来以执行身份验证。何时使用在以下时候使用此方法:您想要利用在现有应用程序中使用的用户和角色的现有数据库架构。您想要加密消息的一部分,而非整个数据流。消息级(端对端)安全性这是一种灵活性最大而且功能最强的方法,GXA 提案(特别是在 WS-Security 规范中)使用的就是这种方法。图 10.2 说明了消息级安全性。图 10.2消息级安全性
10、WS-Security 规范说明了 SOAP 消息传递的增强功能,这些功能提供了消息完整性、消息机密性以及单次消息身份验证。身份验证是由在 SOAP 标头中传递的安全令牌提供的。WS-Security 不要求使用任何特定类型的令牌。安全令牌可以包括 Kerberos 票证、X.509 证书或自定义的二进制令牌。安全通信是通过数字签名提供的,以便确保消息的完整性,并使用 XML 加密以确保消息的机密性。何时使用可以使用 WS-Security 构造框架以便在异类 Web 服务环境中交换安全消息。它非常适合于不能直接控制终结点和中间应用程序节点配置的异类环境和方案。消息级安全性:可以不依赖于基本传
11、输。支持异类安全体系结构。提供端对端的安全性并通过中间应用程序节点提供消息路由。支持多种加密技术。支持不可否认性。Web 服务开发工具包Web 服务开发工具包提供管理安全性所需的 API 以及路由和消息级检索等其他服务。该工具包符合最新的 Web 服务标准(例如 WS-Security 规范),因此,它支持与遵守相同规范的其他供应商之间的互操作性。更多信息有关 Web 服务开发工具包和 WS-Security 规范的最新消息,请参见 MSDN 中的以下“XML 开发人员中心”页面:有关 GXA 的详细信息,请参见 MSDN 上的文章Understanding GXA(了解 GXA)。有关该主题
12、的讨论,请参见 MSDN 上的“GXA 互操作性新闻组”。5、根据Web 服务的安全需求, 结合WS- Security和WS- Policy 规范, 可以构造了一个Web 服务的安全模型系统,如图所示:2 该系统实现安全的基础主要是基于SOAP 头的扩展, 分别实现SOAP 加密、SOAP 签名、SOAP 认证与授权、SOAP 安全属性扩展( 时间戳等) 。对于访问控制, 设计了Web 服务访问控制器, 该控制器的实现主要基于X- RBAC 模型, 动态的控制用户对Web 服务的访问权限。遗留系统包括一个私有CA 中心, 这方便了安全模型的实现, 主要负责密钥和证书的生成和管理。此外, 安全
13、日志也保证了模型系统具备审计的功能。安全策略管理器则是负责对安全策略文件的管理, 安全策略库保存着Web 服务所对应的特定安全策略文件。二、 web服务器端的安全漏洞5攻击者能够进行远程攻击这一事实使 Web 服务器成为很有吸引力的目标。理解 Web 服务器所面临的威胁,而且能够找出适当的对策,使您能够预期许多攻击并阻止攻击者数目的不断增长。1、Web 服务器的主要威胁是: 分析 拒绝服务 未授权访问 任意代码执行 特权提升 病毒、蠕虫,和特洛伊木马 图 1 总结了更主要的攻击和常见漏洞。图 1. 主要的 Web 服务器威胁和常见漏洞 2、分析 分析(也称为主机枚举)是用来收集 Web 站点信
14、息的探索性过程。攻击者使用这些信息攻击已知的弱点。漏洞 使服务器易受分析影响的常见漏洞包括: 不必要的协议 打开的端口 Web 服务器在旗标中提供配置信息 攻击 常见的用于分析的攻击包括: 端口扫描 Ping 扫射 NetBIOS 和服务器消息块 (SMB) 枚举 对策 对策包括阻塞所有不必要的端口,阻塞 Internet 控制消息协议 (Internet Control Message Protocol, ICMP) 流量,以及禁用不必要的协议(例如 NetBIOS 和 SMB)。3、拒绝服务 在您的服务器被服务请求所淹没时,发生了拒绝服务攻击。其威胁在于,您的 Web 服务器将由于被淹没而
15、无法对合法客户端请求做出响应。漏洞 增加拒绝服务攻击可能性的漏洞包括: 脆弱的 TCP/IP 堆栈配置 未安装修补程序的服务器 攻击 常见的拒绝服务攻击包括: 网络级 SYN 洪水 缓冲区溢出 用来自分布位置的请求洪水攻击 Web 服务器 对策 对策包括加固 TCP/IP 堆栈和不断对系统软件应用最新的软件修补程序和更新。4、未授权访问 在没有正确权限的用户获取了访问受限信息或者执行受限操作所需权限的时候,就发生了未授权的访问。漏洞 导致未授权访问的常见漏洞包括: 脆弱的 IIS Web 访问控制,包括 Web 权限 脆弱的 NTFS 权限 对策 对策包括使用安全的 Web 权限、NTFS 权
16、限,和 .NET Framework 访问控制机制(包括 URL 授权)。5、任意代码执行 当攻击者在服务器上运行恶意代码以威胁服务器资源的安全或者对下游系统实施其他攻击时,就发生了代码执行攻击。漏洞 可能导致恶意代码执行的漏洞包括: 脆弱的 IIS 配置 未安装修补程序的服务器 攻击 常见的代码执行攻击包括: 路径遍历 导致代码注入的缓冲区溢出 对策 对策包括将 IIS 配置为拒绝带有“./”的 URL 以防止路径遍历,用限制性访问控制列表 (ACL) 锁定系统命令和实用工具,以及安装新的修补程序和更新。6、特权提升 当攻击者通过使用特权进程帐号运行代码时,就发生了特权提升攻击。漏洞 使您的
17、 Web 服务器容易遭受特权提升攻击的常见漏洞包括: 特权过高的进程帐号 特权过高的服务帐号 对策 对策包括使用最低特权帐号以及使用最低特权服务和用户帐号运行进程。7、病毒、蠕虫,和特洛伊木马 恶意的代码有几种变种,包括: 病毒。旨在执行恶意操作并导致操作系统或者应用程序崩溃的程序。 蠕虫。可以自我复制和自我持续的程序。 特洛伊木马。看似有用但是实际上会进行破坏的程序。 在许多情况下,恶意的代码直至开始消耗系统资源并减慢或者阻碍了其他程序的执行时,才会被注意到。例如,红色代码蠕虫就是最臭名昭著的能够影响 IIS 的病毒之一,它依赖于 ISAPI 筛选器中的一个缓冲区溢出漏洞。漏洞 使您容易遭受
18、病毒、蠕虫和特洛伊木马攻击的常见漏洞包括: 未安装修补程序的服务器 运行不必要的服务 不必要的 ISAPI 筛选器和扩展 对策 对策包括提示应用最新的软件修补程序,禁用未用的功能(例如未用的 ISAPI 筛选器和扩展),用最低特权帐号运行进程以减小出现攻击时破坏的范围。三、 Web浏览器恶意代码防范6针对IE的恶意修改、攻击方法非常多,本文中介绍的十种反黑技巧,一定会对你有所帮助。1.管理好Cookie在IE6.0中,打开“工具”“Internet选项”“隐私”对话框,这里设定了“阻止所有Cookie”、“高”、“中高”、“中”、“低”、“接受所有Cookie”六个级别(默认为“中”),你只要
19、拖动滑块就可以方便地进行设定,而点击下方的“编辑”按钮,在“网站地址”中输入特定的网址,就可以将其设定为允许或拒绝它们使用Cookie。2.禁用或限制使用Java程序及ActiveX控件在网页中经常使用Java、Java Applet、ActiveX编写的脚本,它们可能会获取你的用户标识、IP地址,乃至口令,甚至会在你的机器上安装某些程序或进行其他操作,因此应对Java、Java小程序脚本、ActiveX控件和插件的使用进行限制。打开“Internet选项”“安全”“自定义级别”,就可以设置“ActiveX控件和插件”、“Java”、“脚本”、“下载”、“用户验证”以及其它安全选项。对于一些不
20、太安全的控件或插件以及下载操作,应该予以禁止、限制,至少要进行提示。3.防止泄露自己的信息缺省条件下,用户在第一次使用Web地址、表单、表单的用户名和密码后,同意保存密码,在下一次再进入同样的Web页及输入密码时,只需输入开头部分,后面的就会自动完成,给用户带来了方便,但同时也留下了安全隐患,不过我们可以通过调整“自动完成”功能的设置来解决。设置方法如下:依次点击“Internet选项”“内容”“自动完成”,打开“自动完成设置”对话框,选中要使用的“自动完成”复选项。提醒:为发安全起见,防止泄露自己的一些信息,应该定期清除历史记录,方法是在“自动完成设置”对话框中点击“清除表单”和“清除密码”
21、按钮。4.清除已浏览过的网址在“Internet选项”对话框中的“常规”标签下单击历史记录区域的“清除历史记录”按钮即可。若只想清除部分记录,单击IE工具栏上的“历史”按钮,在左栏的地址历史记录中,找到希望清除的地址或其下网页,单击鼠标右键,从弹出的快捷菜单中选取“删除”。5.清除已访问过的网页为了加快浏览速度,IE会自动把你浏览过的网页保存在缓存文件夹“C:/Windows/Temporary Internet Files”下。当你确认不再需要浏览过的网页时,在此选中所有网页,删除即可。或者在“Internet选项”的“常规”标签下单击“Internet临时文件”项目中的“删除文件”按钮,在
22、打开的“删除文件”对话框中选中“删除所有脱机内容”,单击“确定”,这种方法会遗留少许Cookie在文件夹内,为此IE6.0在“删除文件”按钮旁边增加了一个“删除Cookie”的按钮,通过它可以很方便地删除遗留的。6.永远不怕IE主页地址被修改众所周知,修改IE默认主页地址是恶意网页常用的一招。IE被修改后,会自动连接到恶意网页的地址。大家常用的方法是修改注册表,其实,只要简单给IE加个参数,就再也不害翴E主页地址被修改了。下面是具体的方法和步骤。首先,打开“我的电脑”,找到IE的安装目录,这里假设你的IE安装在C:Program FilesInternet Explorer下。进入该文件夹,找
23、到Iexplore.exe文件,对着它点击鼠标右键,在弹出的快捷菜单中选择“发送到桌面快捷方式”,这样就在桌面上建立了一个Iexplore.exe文件的快捷方式。如果你够仔细的话,你会发现你建立的这个快捷方式名字为“Iexplore.exe”,而桌面上原来的IE快捷方式名字为“Internet Explorer”,两者不仅名字不相同,而且“内涵”也不尽相同。继续我们的工作,用鼠标右键单击该快捷方式,选择“属性”,会弹出“Iexplore.exe 属性”对话框,选择其中的“快捷方式”标签,然后在“目标”框里填入:C:Program FilesInternet ExplorerIEXPLORE.E
24、XE -nohome,给Iexplore.exe加上参数“-nohome”,输入时请大家注意在参数“-nohome”前面有一个空格,不要忘了,输入完毕。点击“确定”退出即可。这样即使主页被修改也没有关系,打开IE就是一片空白,就连about:blank也不显示。而且这样能够加快启动速度,一点IE窗口马上就出蹦来了。对于IE在安装时自己建立的快捷方式,我们无法为它加上上述参数。如果不信可以试试,用鼠标右键点击桌面上原来IE自建的快捷方式,选“属性”,会发现“目标”栏、“起始位置”栏、“快捷键”栏和“运行方式”栏都是灰色不可选取状态。这就是它们之间最大的不同!也是本文的关键所在。7.挖出IE本地安
25、全配置选项在IE中可以通过点击“工具Internet选项安全”来设定电脑安全等级,之后会出现。从图中可以看出,在安全性设定中我们只能设定Internet、本地Intranet、受信任的站点、受限制的站点。不过,惯于隐藏其部分功能的微软(真不知微软是怎么想的,老和我们玩“捉迷藏”游戏),在这里又留了一手:其实这里还有一个隐藏的选项就是“我的电脑”的安全性设定,如果你想看到它,可以通过修改注册表的方法来达到目的。下面是具体的方法:打开“开始”菜单中的“运行”,在弹出的“运行”对话框中输入Regedit.exe,打开注册表编辑器,点击前面的“+”号顺次展开到:HKEY_CURRENT_USERSof
26、twareMicrosoftWindowsCurrentVersionInternet SettingsZones,在右边窗口中找到DWORD值“Flags”,默认键值为十六进制的21(十进制33),双击“Flags”,在弹出的对话框中将它的键值改为“1”即可,关闭注册表编辑器。无需重新启动电脑,重新打开IE,再次点击“工具Internet选项安全”标签,你就会看到多了一个“我的电脑”,在这里你可以对IE的本地安全进行配置。这个小技巧有什么用呢?把下面的代码保存为一个html文件,然后运行试试就知道了:运行上面的html文件,会打开你的计算机中c:/winnt/system32文件夹下的cal
27、c.exe文件!而且IE没有任何提示!即使在IE的安全设置中禁用ActiveX控件上述代码也能工作!如果不是calc.exe文件而是其他恶意文件又会怎么样?如果是在你浏览的网页中含有类似上面的代码又会怎么样?真危险啊!之所以会这样是由于IE存在两个可怕的漏洞:可本地执行任意命令,IE的ActiveX安全设置可被绕过。在上述代码中我们给IE指定了一个系统中并不存在的控件号(clsid:88888888-8888-8888-8888-888888888888),IE会试图从codebase指定的地址去下载并安装改控件。根据codebase于是IE找到了c:/winnt/system32/calc.
28、exe,接着IE开始“下载”并安装该程序。由于calc.exe是EXE文件,这样就等于是在运行该文件,所以calc.exe就被运行了!那么为什么IE在“下载安装控件”过程中不提示用户,也不应用IE安全设置中的限定进行检测呢?这就是IE的ActiveX安全设置可被绕过漏洞造成的!其主要原因是IE安全设置都是针对非本地的页面或交互的,对于本地的安全设置IE是最大信任的。如果你注意看IE的安全设置,都是对Internet和Intranet上WEB服务器而言的,根本就没有对本地文件的安全设置。概括说来就是IE对本地安全采用最大信任原则。解决的办法就是我们在开始说的那个技巧:挖出挖出IE本地安全配置选项
29、,即修改IE安全设置中有关“我的电脑”的设置,选定后,禁用ActiveX下载就万事大吉了。8.在DOS下打开“Internet属性”窗口有时在浏览了某些恶意网页后,会导致IE的“Internet属性”对话框无法打开,这时我们可以在DOS窗口下输入:RunDll32.exe shell32.dll,Control_RunDLL inetcpl.cpl命令,就可打开IE的“Internet属性”对话框。要注意“Control_RunDLL”的大小写以及它前面的逗号(,)不要忘记了。RunDll32.exe是Windows动态链接库(DLL)管理工具,可以用来在命令行下执行动态链接库中的某个函数(或
30、者功能模块)。RunDll32的使用方法如下:RunDll32.EXE , ,要注意以下几点:Dllname(就是制定DLL动态链接库所在位置和文件名)直接不能有空格;Dllname和entrypoint两者之间只能以“,”(逗号)分隔,逗号之后不能有空格,如果这里出错的话,你不会得到任何提示;optional arguments动态链接库调用参数,这个参数对大小写是很敏感的,注意不要写错。9.解除IE的分级审查口令有些时候,我们的IE会被人修改为设有分级审查口令,一旦被设置了分级审查口令,即使重新安装IE也是没有用的。怎么办呢?难道要格式化硬盘?千万不要!这里我有一个好办法,帮您解决这个问题
31、。进入注册表,找到HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionpoliciesRatings,这里有一个名为“key”的主键,这就是您设置的分级审查口令,直接将它删除即可。重新启动之后,点击“工具”“Internet选项”“内容”“分级审查”,您会发现分级审查口令已经被复位了。现在您只要输入新的分级审查口令即可。如果你用的是Windows 9x则更简单了,到C:Windowssystem目录里找到rating.pol文件,要注意这是一个隐藏文件,直接将它删除就可以解决问题了。10. 预防网页恶意代码许多恶意网页为防止有人查看其
32、代码内容,采取了各种各样的方法求防止我们查看其源代码。然而,他们的一切努力也许都是白费心机。因为用如下的方法可以轻易地查看其源代码。只要在IE地址栏中输入View-Source:URL即可。举个例子,你想查看网站的源代码,只要在IE地址栏中输入:View-Source:http:/xxx,稍等一下就会弹出一个窗口,里面就是你想看到的网页源代码。赶快仔细看看,里面是否有更改注册表或暗中下载文件的恶意代码,如果有那就别进该网页了,很简单吧?(但XPSP2中这个功能被屏蔽了,也可以使用firefox浏览器查看)这样做不仅可以学到别人的网页制作技术,更可以事先预防恶意代码,一举两得!1 2 Web 服务安全模型研究与实现,孟伟、张璟、李军怀、刘海玲3 456百度文档