ASP.NET 2.0应用程序的安全核心技术

分类: asp.net   出处:iocblog整理  更新时间:2009-05-04   添加到收藏  

  目前,实现web开发的核心技术之一是asp.net 2.0。这种技术能够帮助企业快速开发出功能强大的web应用程序,深受开发人员喜爱。然而,在开发人员实现业务逻辑的同时,由于各种原因的影响,应用程序的安全性总是不能让人满意。本文的主要目的就是帮助开发维护人员强化asp.net应用程序的安全性。众所周知,提高asp.net应用程序的安全性涉及很多方面的内容,例如安全代码和操作系统、通讯协议与microsoft asp.net自身的经过强化的配置。因此,本文将从总体指导原则、操作系统、数据库服务器、web服务器以及asp.net等五个方面进行讲解。

   总体指导原则

   下面列出了一些有关安全强化的总体指导原则。遵守这些规则通常会使系统和应用程序更安全,反之则会降低安全性。

   (1)为服务器进行准确单一的定位。很多时候都会看到,一个服务器担当了多个角色,其既要提供web服务,又要支持邮件、dns服务器等其它角色。这种做法是非常不安全的。首先,如果一个服务器必须支持多个角色,那么就会使配置更加复杂,而复杂的事物是安全的天敌。其次,如果在允许系统级访问的组件中发现一个弱点,那么会危及同一计算机中的所有其它服务的安全。再次,如果在一个服务器中配置许多功能,那么由于某些原因造成其死机,就会丧失多个网络服务。[来源 www.iocblog.net]

   (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服务器不需要这些服务。停止这些服务,那么性能、自由内存和稳定性都可以得到提升,并且服务器更不容易受到攻击。这是考虑最小化服务器中软件和服务的规则的结果。 [来源 www.iocblog.net]
 

  (3)配置实现包过滤。通过关闭所有不需要的服务,可关闭大多数的开放端口。这可以极大减低服务器的受攻击面。可是,有一些端口不能被关闭,例如 TCP/135,它是RPC,Windows操作系统非常依赖这个协议。另外,还有一些其它端口应只针对一部分网络。例如,远程管理和Terminal Services。通常,只允许从局域网、特定的子网或特定的IP地址上进行远程管理,但是不对互联网开放。在面对这种情况时,需要在Web服务器上本地安装一个信息包过滤器,这样能够额外增加一个深度安全防御实体。Windows操作系统有两个内建的信息包过滤器:Windows Firewall和Internet Protocol Security(IPSec)。Windows Firewall的优点是它提供了一个简单的接口来关闭端口,但是,它不限制对外的连接。IPSec可以控制内外通讯,但是设置比较复杂。

   (4)配置好Windows文件共享。很少有人知道Windows文件共享传输的数据完全没有保护措施。其默认情况下,数据是没有经过加密或完整性保护。管理人员可以开启内建的、签名机制来进行通信支持,这可以使恶意用户修改网络信息包更加困难,但是,如果使用Windows文件共享协议来传输敏感数据,那么应该进行额外地加密通信。管理人员可以在“本地安全策略”中开启签名。如果还要保密,建议使用IPSec来设置交换受保护数据的计算机的传输层安全。

   (5)启用审核功能。Windows操作系统内建有审核功能。它使操作系统能记录成功的或失败的登陆、策略修改和资源访问。启用审核分为两步。首先,必须启用系统级别的审核,然后,指定要审核的资源。管理人员使用安全配置向导能够自动地实现这两个步骤。另外,操作系统还允许管理人员手动修改配置,管理人员能够在本地安全策略窗口中实现人工配置。

[1] [2] [3] 下一页



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。