目前,实现Web开发的核心技术之一是ASP.NET 2.0。这种技术能够帮助企业快速开发出功能强大的Web应用程序,深受开发人员喜爱。然而,在开发人员实现业务逻辑的同时,由于各种原因的影响,应用程序的安全性总是不能让人满意。本文的主要目的就是帮助开发维护人员强化ASP.NET应用程序的安全性。众所周知,提高ASP.NET应用程序的安全性涉及很多方面的内容,例如安全代码和操作系统、通讯协议与Microsoft ASP.NET自身的经过强化的配置。因此,本文将从总体指导原则、操作系统、数据库服务器、Web服务器以及ASP.NET等五个方面进行讲解。
总体指导原则
下面列出了一些有关安全强化的总体指导原则。遵守这些规则通常会使系统和应用程序更安全,反之则会降低安全性。
(1)为服务器进行准确单一的定位。很多时候都会看到,一个服务器担当了多个角色,其既要提供Web服务,又要支持邮件、DNS服务器等其它角色。这种做法是非常不安全的。首先,如果一个服务器必须支持多个角色,那么就会使配置更加复杂,而复杂的事物是安全的天敌。其次,如果在允许系统级访问的组件中发现一个弱点,那么会危及同一计算机中的所有其它服务的安全。再次,如果在一个服务器中配置许多功能,那么由于某些原因造成其死机,就会丧失多个网络服务。
(2)最小化服务器中的软件和服务。在确定了服务器在网络中的角色后,应该删除不属于这个角色的所有软件和服务。特别是那些打开端口,并处理网络信息包的服务。这种做法的优点是使整个系统的配置变得更加简单。由于只要更新实际使用的服务,所以补丁被极大地简化。同时,这样还能够减少潜在的、易受攻击的代码和程序。
(3)设置最少的权限。也就是说,系统中的每个用户或进程应只有完成工作所必须的权限。此外,Web应用程序应始终运行在最少权限的安全环境中,并应该只访问它们需要访问的资源。这可能会涉及内建的NETWORK SERVICE帐户或自定义用户帐户。不要使用高权限的帐户,例如管理员或SYSTEM帐户。
(4)及时全面的安装补丁。服务器上的所有组件(例如操作系统、数据库和Microsoft .NET Framework)应及时安装最新的安全补丁。这种做法的必要性和重要性是显而易见的。
(5)配置多方面的防御实体。这意味着应该始终保有多个防御措施。例如,安装防火墙,杀毒软件,信息包过滤器等等。即使维护人员配置了这样的防御措施,也不能认为就万事大吉了。可能在维护人员得意洋洋的时候,那些不怀好意的人也在冷笑。
(6)重点防御,保护最脆弱的连接。识别应用程序或系统中最脆弱的连接,在其周围放上额外的防御措施。例如,ASP.NET中的登陆页面或网络上的远程访问网关。因为这些区域都是首选攻击目标,并且难于防御,因此通常必须增加更多的监测和防御措施。
(7)提供强大的身份验证功能。如果通过身份验证来访问到应用程序或系统,那么这个身份验证应始终是强大的。例如,设置强制密码策略,高的密码复杂度等。同时,要考虑使用多因素身份验证或替代的技术,例如使用一次性密码等。
加强操作系统安全
根据总体指导原则,首先要做的是,当安装新服务器的操作系统时,要列出所有的要求和必须提供给它们的服务。在这方面,Windows Server 2003做得很不错,它是第一个根据初始安装设置安装基本系统组件和服务的操作系统。不知道Windows Server 2008是否会采取相同策略。在做好这个方面的工作之后,还要注意完成以下安全措施。
(1)打开自动更新功能。在安装所有必需的组件后(例如,IIS和ASP.NET),应该确定安全最新的补丁。Windows操作系统提供了自动更新服务,该服务能够定期检查新的重要补丁更新。通过在控制面板中启用自动更新选项,就可以启用这个功能。这样,所有的安全补丁都会被自动下载。需要记住的是,在初始安装完成和安装完所有的必要补丁之间,操作系统处于最易受攻击的阶段。此时,流行的蠕虫等病毒能够迅速感染这个新系统。为此在安装时,不要将服务器直接连接到对外公开的或不受信任的网络上。
(2)禁用服务和协议。在了解了服务器必须提供的服务后,可以终止其它的服务和协议。最难的是找出需要那些服务和可以安全终止的服务。对于单纯的Web服务器角色而言(只提供HTTP(s)服务,远程桌面功能只用于管理),可以中止的服务包括:Computer Browser、DHCP Client、Distributed File System、Distributed Link Tracking Client、、Distributed Transaction Coordinator、Error Reporting Service、Help and Support、Print Spooler、Remote Registry、Secondary Logon、Server、TCP/IP NetBIOS Helper、Wireless Configuration、Workstation、Application Management、File Replication、Portable Media Serial Number Service、Remote Access Auto Connection Manager、Remote Access Connection Manager、Remote Desktop Help Session Manager、Resultant Set of Policy Provider、Smart Card、Special Administration Console Helper、Telephony、Upload Manager、Windows Installer、WinHTTP Web Proxy Auto-Discovery Service、File and print sharing、NetBIOS over TCP/IP等。可以看到,默认情况下,操作系统启用了很多服务,而Web服务器不需要这些服务。停止这些服务,那么性能、自由内存和稳定性都可以得到提升,并且服务器更不容易受到攻击。这是考虑最小化服务器中软件和服务的规则的结果。