当前位置:文档之家› Windows NT2000服务器安全技术指南

Windows NT2000服务器安全技术指南

?

Windows NT/2000服务器安全技术指南

安全问题一直是最受到关注的问题。因为网络系统的运行经常涉及到非常敏感或非常有价值的数据,所以任何在安全问题上的漏洞都可能造成巨大的损失。

在计算机环境的安全性问题上,主要有三个需要解决的问题:

(1) 用户身份的安全首先需要保证正在使用系统的人就是你所授权可以使用系统的那个人,必须有方法防止有人冒名顶替或欺骗;

(2) 数据存储的安全要有完整的安全策略来保护敏感的数据,只有得到特定授权的人才可以对数据进行指定的操作;

(3) 数据通讯的安全数据肯定需要在网络上传输,必须防止有人偷听和非法修改在网络上传递的数据,必须对数据进行加密。

同时,好的安全系统还要求为设置和维护安全性提供简单而有效的方法。在Windows 2000服务器家族中,提供了一系列的内置的安全特性和服务,来实现网络系统的安全性。

5.4.1 Windows 2000主要的安全功能

?Active Directory为所有域安全策略和帐户信息提供了存储区。Active Directory 为多个域控制器提供了用户信息的副本和可用性,并可用于远程管理。

?Active Directory支持用户、组和计算机帐户信息使用分层名称空间。帐户可按部门进行分组,而不像Windows NT早期版本那样只提供扁平的域帐户名称空

间。

?创建和管理用户或组帐户的管理员权限可以委派到部门一级。访问权限可以授予用户对象的个别属性,例如,这样可以让特定的个人或组有权重设密码,但

无权修改其他帐户信息。

?Active Directory 复制允许帐户在任何域控制器下进行更新,而不是只能在主域控制器(PDC) 下进行更新。在其他域控制器(这种域控制器过去常被称作备份

域控制器(BDC) )下进行的Active Directory 多主控复制,会自动地进行更新并保持同步。

?Windows 2000 采用了新的域模型,它使用Active Directory 支持域的多层结构树。通过整个域树内的信任关系传递,简化了域间的信任关系管理。

?公钥基础结构(PKI)是Windows 2000系统的分布式安全性的基础。公共密钥

?

·182·

系统使用的是一对密钥,其中一个是用户的私有密钥,由用户保存在安全的地方;另一个是用户的公共密钥,公开给其他人。使用用户的公钥加密的数据,必须用用户的私钥才能解开。在Windows 2000环境中,公共密钥系统可以用于Web用户身份验证、Web服务器身份验证、安全电子邮件、IPSec、代码签名、加密文件系统等。

?除支持Windows NT LAN Manager 的身份验证协议以利于兼容之外,Windows 安全还加入了新的基于Internet 标准安全协议的身份验证,这些协议包括分布式安全协议的Kerberos版本5和传输层安全(TLS)。

?安全信道安全协议(SSL 3.0/TLS) 将用户凭据以公钥证书的形式映射到原有Windows NT帐户,从而提供了强大的客户身份验证功能。一些公用管理工具,可以通过使用共享机密身份验证,或是使用公钥安全,来管理帐户信息和访问控制。

?除使用密码外,Windows 2000 还支持选用智能卡用于交互式登录。智能卡支持对私钥和证书的加密及安全存储,使从桌上型电脑到域的强大身份验证成为可能。

?Windows 2000为各单位提供了Microsoft Certificate Server (Microsoft 证书服务器),可用来将X.509版本3证书颁发给员工或商业伙伴。它引入了用于证书管理的CryptoAPI以及处理公钥证书的模块,其中包括可以管理由商业证书颁发机构(CA)、第三方CA或Windows中的Microsoft Certificate Server 颁发的标准格式证书。系统管理员可以决定在他们的环境中哪些CA可信,从而决定客户身份验证和资源访问时哪些证书可以接受。

?对于没有Windows 2000帐户的外部用户,可以使用公钥证书进行身份验证,然后映射到一个现有Windows帐户。为Windows帐户定义的访问权限决定了外部用户使用系统资源的权限。客户身份验证允许Windows 2000基于可信证书颁发机构颁发的证书,对外部用户进行身份验证。

?Windows 2000提供了使用方便的工具和通用界面对话框,用户可用来管理访问Internet资源所使用的私/公钥对及证书。个人安全凭据的存储使用了安全的、基于磁盘的存储载体,可以通过推荐的行业标准协议(即Personal Information Exchange (个人信息交换))方便地进行传输。操作系统还集成了对智能卡设备的支持。

加密技术已用多种方式加入到操作系统中,可以利用数字签名来提供经身份验证的

数据流。除了签名ActiveX? 控制和用于Internet Explorer 的Java 类之外,Windows 2000 还使用数字签名保证多种程序组件的图像完整性。内部开发人员也可以创建签名

·183·

软件,以便于分发和病毒保护。

5.4.2 解决方案

1. 用户身份安全

Active Directory是Windows 2000中的目录服务,也是Windows 2000最核心的服务之一。在Windows 2000的网络环境中,Active Directory的最主要的功能就是实现用户身份的验证。Windows 2000的用户身份验证使用的是Kerberos V5协议,这种验证方法最大的好处是可以实现单一注册,也就是允许用户通过在网络中的一个地方的一次登录就可以使用网络上他可以获得的所有资源。对于非Windows 2000的用户,也可以使用原来的NTLM的身份验证方式。

在身份验证时,用户需要提供他的有效的用户名和口令。但是作为对这种传统的身份验证的增强,在Windows 2000中还可以使用智能卡进行身份验证。在智能卡中存放了用户的个人信息和他的私钥,用户登录时必须在读卡机中插入他的智能卡,同时输入对应的个人识别码(PIN),才能通过身份验证。相对于口令验证,智能卡有更强的安全性。因为口令比较容易被不怀好意的人得到,被猜测到的可能性也较大。而智能卡就像一把无法复制的钥匙,只有拿在手里才能打开大门。用智能卡进行身份验证需要Windows 2000 PKI的支持。

对于用户身份验证的管理,Active Directory还提供的进一步的配置。在Active Directory中设置了一系列的安全模板,可以方便的配置特定的Windows 2000系统的安全性。在安全模板中,详细地设定了各方面的安全配置,包括用户账户、用户操作的审核、各类事件的记录、对系统服务的配置,对注册表和文件系统的安全管理。

在应用系统中,某些情况下是无法通过Active Directory实现用户身份验证的,例如用户是通过Internet而不是Intranet访问电子商务系统。一般情况下用户使用的由证书颁发机构颁发给他的证书来递交身份的验证。此时Active Directory允许将指定的证书映射到对应的用户账户,也可以将多个证书指定的一个用户账户。这样通过Internet 访问的用户也具有了Active Directory验证的身份,同时具有对各种对资源访问的权力。

用户所拥有和使用的证书,可以是由Windows 2000内置的证书服务Certificate Service颁发,也可以是由其他受信任的证书颁发机构颁发的证书。

Windows 2000SERVER给用户或组授予的三种能力:权力,共享,权限。

(1) 权力。权力适用于对整个系统范围内的对象和任务的操作,通常是用来授权用户执行某些系统任务。当用户登录到一个具有某种权力的账号时,用户就可以执行与该权力相关的任务。

?

·184·

下面列出了用户的特定权力:

?Access this computer from network 可使用户通过网络访问该计算机。

?Add workstation to a domain 允许用户将工作站添加到域中。

?Backup files and directories 授权用户对计算机的文件和目录进行备份。

?Change the system time 用户可以设置计算机的系统时钟。

?Load and unload device drive 允许用户在网络上安装和删除设备的驱动程序。?Restore files and directories 允许用户恢复以前备份的文件和目录。

?Shutdown the system 允许用户关闭系统。

以上这些权力一般已经由系统授给内置组,在日常维护过程中很少及到,在具体需

要时也可以由管理员将其扩大到组和用户上。

(2) 共享。共享只适用于文件夹(目录),如果文件夹不是共享的,那么在网络上就不会有用户看到它,也就更不能访问。网络上的绝大多数服务器主要用于存放可被网络用户访问的文件和目录,要使网络用户可以访问在NT Server服务器上的文件和目录,必须首先对它建立共享。共享权限建立了通过网络对共享目录访问的最高级别。

表5.1列出从最大限制到最小限制的共享权限。

表5.1 共享权限

共享权限级别允许的用户动作

No Access(不能访问) 禁止对目录和其中的文件及子目录进行访问但允许查看文件名和

子目录名,改变共享

Read(读) 目录的子目录,还允许查看文件的数据和运行应用程序

Change(更改) 具有“读”权限中允许的操作,另外允许往目录中添加文件和子

目录,更改文数据,删除文件和子目录

Full control(完全控制) 具有“更改”权限中允许的操作,另外还允许更改权限(只适用于NTFS卷)和获所有权(只适用于NTFS卷)

(3) 权限。权限适用于对特定对象如目录和文件(只适用于NTFS卷)的操作,指定允许哪些用户可以使用这些对象,以及如何使用(如把某个目录的访问权限授予指定的用户)。权限分为目录权限和文件权限,每一个权级别都确定了一个执行特定的任务组合的能力,这些任务是:Read(R)、Execute(X)、Write(W)、Delete(D)、Set Permission(P)和Take Ownership(O)。表5.2和表5.3显示了这些任务是如何与各种权限级别相关联的。

·185·

表5.2

权限级别RXWDPO 允许的用户动作

No Access 用户不能访问该目录

List RX 可以查看目录中的子目录和文件名,也可以进入其子目录

Read RX 具有List权限,用户可以读取目录中的文件和运行目录中的

应用程序

Add XW 用户可以添加文件和子录

Add and Read RXW 具有Read和Add的权限

Change RXWD 有Add和Read的权限,另外还可以更改文件的内容,删除文

件和子目录

Full control RXWDPO 有Change的权限,另外用户可以更改权限和获取目录的所有

注意:如果对目录有Execute(X)权限,表示可以穿越目录,进入其子目。

表5.3

权限级别RXWDPO 允许的用户动作

No Access 用户不能访问该文件

Read RX 用户可以读取该文件,如果是应用程序可以运行

Change RXWD 有Read的权限,还可用修和删除文件

Full control RXWDPO 包含Change的权限,还可以更改权限和获取文件的有权

2. 域和委托

域是Windows 网络安全系统的基本组成单元,委托是复杂的网络中域之间的基本

关系。Windows 2000通过域的委托关系为大型或复杂系统提供了更为灵活和简便的管理方法。

域指的是一组共享数据库并具有共同安全策略的计算机。在一个域中至少有一个服务器设计为主域控制器(称为PDC),可以(在大多数情况下应该)带有一个或多个备份域控制器(称为BDC),在PDC中维护着一个域内适用于所有服务器的中心账号数据库。用户账号数据库只能在PDC中更改,然后再自动送到BDC中,在BDC中保留着用户账号数据库的只读备份。如果PDC出现了重大错误而不能运行,就可以把BDC 变成PDC,使得网络继续正常工作。

在有两个或多个域组成的网络中,每个域都作为带有其自身账号数据库的一个独立

?

·186·

网络来工作。缺省时域之间是不能相互通信的,如果某个域的一些用户需要访问另一个域中的资源,就需要建立域之间的委托关系。委托关系打开了域之间的通信渠通。托域B中的用户就可以访问委托域A中的资源。

委托关系可以是双向的,即域A委托域B,域B委托域A,这样域B中的用户就可以访问域A中的资源,域A中的用户就可以访问域B的源。

用户组是指具有相同用户权力的一组用户。以组的形式组织用户只通过一次操作就能更改整个组的权力和权限,从而可以更快速方便地为多个用户授权对网络资源的访问,简化网络的管理维护工作。

?全局组:包含来自该全局组创建时所在域的用户账号,运用域之的委托关系可以给全局组授予在其他委托域中的资源的权力和权限。

?局部组:可以包含该组所在域和其他受托域中的用户账号,也可包含该组所在域和其他受托域中的全局组。只能给局部组授予该组所在域中的资源的权力和

权限。

(1) 数据存储安全

在Windows 2000系统中,数据存储在NTFS 5.0格式的分区或卷中。在NTFS的文件系统中,每个文件和文件夹都有相应的用户访问控制列表(Access Control List)。任何一个通过了身份验证的用户,如果需要访问一个文件,必须是在这个文件的访问控制列表中已经有了相应的赋予这个用户的许可。对于没有获得许可的用户,Windows 2000将禁止他对这个文件的操作。在NTFS 5.0文件系统中,对访问控制的配置是可继承的,也就是在上一级文件夹上配置的访问控制可以一直向下作用到它包含的文件和子文件夹中。这个功能可以使文件系统的安全配置更加简单。

在Windows 2000中,还可以配置对指定文件的审核。审核可以让管理员看到有哪些用户对这个文件进行了什么样的操作。对于一些关键的文件,审核可以增加系统的安全性。

NTFS文件系统提供了用户对文件访问的控制,但是存放在物理设备(硬盘等)上的数据是没有加密的。所以仍然存在可能绕过Windows 2000操作系统而直接访问物理设备上的数据,从而造成泄密。对于这种情况,Windows 2000提供了加密文件系统(EFS)。加密文件系统也是使用了PKI,存放在物理设备上的数据都是经过加密的数据,只有文件的所有者(用户)才能使用这些文件。数据的加密和解密需要用户的公钥和私钥,但是整个过程对用户来讲是透明的,用户感觉不到数据的加解密处理。

(2) 数据传输的安全性

对于网络系统来讲,数据在公共网络上的传输是不可避免的。于是数据在传输过程

·187·

中就很可能被窃听、拦截和欺骗。要保证数据传输的安全,必须对传输中的数据进行加密。

当我们用IIS 5.0作为Web服务器平台,用Internet Explorer来连接到这个站点时,为了获得安全性,可以使用Web服务器的安全套接字层(Security Sockets Layer, SSL)。

SSL在Web浏览器(IE)和Web服务器(IIS)之间建立安全(https://)的通信连接,使用公共密钥技术对通信的数据进行加密。默认情况下加密使用40位长度的密钥,受到密钥出口长度的限制,在中国不能使用128位长度的密钥。但是IIS 增加了服务器网关加密(SGC),可以使用128位的密钥专门为金融机构提供全球范围的安全数据传递。

数据加密传输的另一种方法是可以使用虚拟私有网(VPN)。VPN可以在公共的网络(Internet)上建立一个安全的数据传输隧道,这样用户在使用公共网络时就可以象使用自己的内部网络一样。Windows 2000支持的VPN方式为点对点隧道协议(PPTP)和第二层隧道协议(L2TP)。

其中PPTP使用Microsoft点对点加密(MPPE)方式对数据进行加密,而L2TP则使用IPSec。IPSec直接对IP包进行加密,还可以用于在两台计算机之间的直接的数据加密传输。在某些基于Intranet/Extranet形式的系统中,经常会采用某种形式的VPN让远程的用户连接到内部网络。

5.4.3 安全性设置

首先考虑整个网络域的划分,具体模型有4种:单域模型、单主控域模型、多主控域模型和完全信任的多主控域模型。对于用户不多,需要进行逻辑分割便可管理的网络,同时需要保持最少的管理工作量,那么最好采用单域模型。在这种模型中,所有的服务器和工作站都一个域中,局部组和全局组是一回事,不存在需要管理的委托关系,但采用这种模型也有一些缺点,比如在性能上随着资源的增加而降低,浏览的速度会随着服务器的增加而变慢。如果网络规模比较大,同时又要高度的安全性,那么就应该采用多域模型,进行合理的域的划分。划分域时,可以采用多种划分原则,比如按机构部门划分、按地理位划分等。在规划域的过程中,最好把域的数目减到最少,因为网络管理的复杂性会随着域数目的增加呈几何级数增长,每个增加的域都会引新的问题,产生新的困难。由于一个域中的一些用户要访问另一个域中的资源,所以要建立所有可能的委托关系。

其次,在域中建立组(包括全局组和局部组),把拥有类似的作业资源访问需求以及完成类似功能的用户集合起来,只需对组授权即可。组简化了对资源的管理,因为可

?

·188·

以用整体的方式来控制和分配访问权。

最后进行共享权限和权限的分配,在设置这些权限时,要使得对系的操作尽可能简单,尽可能将有关权限分配给组,而不是分配给单个户,除非必要,否则不要按文件分配权限,权限的集中管理可以简化理维护工作。

一个文件夹(目录)要想供多个用户访问使用,首先要共享,对FAT卷再以共享权限的形式添加约束,但是这些约束仅限于目录级(而不是文件级)。对NTFS卷上的目录具有与FAT卷上的目录相同的共享权限,但它们还可以使用权限设置,在这种卷上每个目录都有“安全”属性页,可以对它们进行更加详细的权限限制,同时对每个文件也可以通该文件的“安全”属性页进行权限的限制。

共享权限决定了通过网络对资源的最大访问权。举例来说,如果将共享权限设置成Change(更改),那么用户通过网络能进行的最高访问权是Change,这就意味着如果用户通过“安全”属性页获取的权限级别比Change高(比如Full Control),那么用户通过网络能进行的最高访问权是Change;如果用户通过“安全”属性页获取的权限级别比Change低(比如Read),那么这时用户通过网络能进行的最高访问权限以通过“安全”属性页获取的权限级别为准;如果没有通过“安全”属性页获取权限,那么用户通过网络就打不开这个目录,无法访问该目录。

作为一种规划,一般是将共享权限保留为默认设置,即每个用户都能完全控制(Full Control),然后根据具体需要使用目录或文件权限进行安全性控制(只适用于NTFS卷)。

最后说明一点,对FAT卷上的目录只能通过共享权限进行限制,对NTFS卷上的目录不仅可以进行共享权限限制,还可以进行权限的限制(对NTFS卷上的文件也可进行权限限制)。

5.4.4 IIS5系统安全

IIS是微软的组件中漏洞最多的一个,平均一两个月就要出一个漏洞,为确保运行Microsoft Windows 2000和Internet信息服务(IIS) 5的Web服务器的安全性,本文列出了一些建议和最佳做法。

1. 一般安全注意事项

(1) 设计安全策略。拥有安全策略是极为重要的。您必须回答以下问题

?如何应对非法闯入;

?备份存放在何处;

?允许什么人访问服务器;

?

·189·

?如何保证数据存储。

(2) 订阅Microsoft Security Notification Service。可以跟踪最新的与Microsoft相关

的安全问题和补丁程序,

(3) 当出现新的安全问题时,必须随时掌握其动向。现实中,大家很容易忽略这一点,不能不加以充分强调。

2. IIS 5安全注意事项和安全配置

本节涵盖IIS5所特有的安全问题,同时微软的IIS默认安装实在不敢恭维,所以IIS 的配置是也将是重点。

(1) 在虚拟目录上设置ACL。尽管该步骤与应用程序稍微有些关系,但是经验仍适用,正如表5.4中列出的那样。

文件类型:访问控制列表

CGI (.exe, .dll, .cmd, .pl)Everyone (X)

Administrators(完全控制)

System(完全控制)

脚本文件(.asp)Everyone (X)

Administrators(完全控制)

System(完全控制)

Include 文件(.inc, .shtm, .shtml) Everyone (X)

Administrators(完全控制)

System(完全控制)

静态内容(.txt, .gif, .jpg, .html) Everyone (R)

Administrators(完全控制)

System(完全控制)

①按文件类型推荐使用的默认ACL。

无需在每个文件上设置ACL,最好为每个文件类型创建一个新目录、在每个目录上设置ACL、允许ACL传给各个文件。例如,目录结构可为以下形式:?c:\inetpub\wwwroot\myserver\static (.html)

?c:\inetpub\wwwroot\myserver\include (.inc)

?c:\inetpub\wwwroot\myserver\script (.asp)

?c:\inetpub\wwwroot\myserver\executable (.dll)

?c:\inetpub\wwwroot\myserver\images (.gif, .jpeg)

?

·190·

同样,请特别注意以下两个目录:

?c:\inetpub\FTProot(FTP 服务器)

?c:\inetpub\mailroot(SMTP 服务器)

在这两个目录上的ACL是Everyone(完全控制),并且应被更紧密的事物所覆盖(取

决于您的功能级别)。如果打算支持Everyone(写入),则将该文件夹放在IIS服务器以外的不同卷上,或使用Windows 2000磁盘配额限制可写入这些目录的数据量。

②设置适当的IIS日志文件ACL

请确保IIS产生的日志文件(%systemroot%\system32\LogFiles) 上的ACL是

?Administrators(完全控制)

?System(完全控制)

?Everyone (RWC)

这有助于防止恶意用户为隐藏他们的踪迹而删除文件。

当您希望确定服务器是否被攻击时,日志记录是极其重要的。应使用W3C 扩展日志记录格式,步骤如下:

①装载Internet Information Services工具。

②右键单击所述站点,然后从上下文菜单中选择“属性”。

③单击“Web 站点”选项卡。

④选中“启用日志记录”复选框。

⑤从“活动日志格式”下拉列表中选择“W3C扩展日志文件格式”。

⑥单击“属性”。

⑦单击“扩展属性”选项卡,然后设置客户IP地址、用户名、方法、URI资源、HTTP状态、Win32 状态、用户代理、服务器IP地址、服务器端口。

如果在一台计算机上有多个Web服务器,则后两种属性非常有用。Win32状态属性对于调试非常有用。检查日志时,密切注意错误5,这意味着访问被拒绝。在命令行上输入net helpmsg err,可找出其他Win32错误的含义,其中err是要查找的错误号。

(2) 设置IP地址/DNS 地址限制。这不是常用选项,但是如果您希望限制某些用户对Web 站点的访问,则这是可采用的选项。请注意,如果您输入IIS拥有的域名系统(DNS) 名称以执行DNS 查找,则这将非常耗时。

(3) 验证可执行内容的可靠性。很难知道可执行内容是否可靠。一个试验就是使用DumpBin工具查看可执行内容是否调用某些API。DumpBin 包括在多种Win32开发工具中。例如,如果要查看名为MyISAPI.dll的文件是否调用RevertToSelf,请使用以下语法:

?

·191·

dumpbin /imports MyISAPI.dll | find "RevertToSelf"

如果屏幕上未显示任何结果,则MyISAPI.dll不直接调用RevertToSelf。它可能通

过LoadLibrary调用API,在这种情况下,也可使用类似的命令搜索它。

(4) 在IIS服务器上更新根CA证书。这个过程分为两步:第一步,添加任何您信任的新根证书颁发机构(CA) 证书- 特别是,使用Microsoft证书服务2.0创建的根CA 证书。第二步,删除您不信任的所有根CA证书。请注意,如果您不知道颁发根证书的公司名,千万别信他们。

IIS 使用的所有根CA证书都驻留在计算机的机器存储中。可通过以下步骤访问该存储:

?打开Microsoft 管理控制台(MMC)。

?从“控制台”菜单中选择“添加/删除管理单元”,然后单击“添加”。

?选择“证书”,然后单击“添加”。

?单击“计算机帐户”选项按钮。

?单击“下一步”。

?选择所述机器。

?单击“完成”。

?依次单击“关闭”和“确定”。

?扩展“证书”节点。

?打开“受信任的根证书颁发机构”。

?选择“证书”。

右窗格上将显示当前可信的全部根CA证书。如果愿意,可以删除多个证书。

(5) 禁用或删除所有的示例应用程序。示例只是示例;在默认情况下,并不安装它们,且从不在生产服务器上安装。请注意一些示例安装,它们只可从http://localhost或127.0.0.1访问;但是,它们仍应被删除。

表5.5列出一些示例的默认位置。

表5.5

示例虚拟目录位置

IIS 示例\IISSamples c:\inetpub\iissamples

IIS 文档\IISHelp c:\winnt\help\iishelp

数据访问\MSADC c:\program files\common files\system\msadc 示例文件包括在Internet Information Server 5中。

?

·192·

(6) 启用或删除不需要的COM组件。某些COM组件不是多数应用程序所必需的,

应加以删除。特别是,应考虑禁用文件系统对象组件,但是要注意这将也会删除Dictionary 对象。切记某些程序可能需要您禁用的组件。例如,Site Server 3.0使用File System Object。以下命令将禁用File System Object:

regsvr32 scrrun.dll /u

(7) 删除IISADMPWD 虚拟目录。该目录可用于重置Windows NT 和Windows 2000 密码。它主要用于Intranet 情况下,并不作为IIS 5 的一部分安装,但是IIS 4 服务器升级到IIS 5 时,它并不删除。如果您不使用Intranet 或如果将服务器连接到Web 上,则应将其删除。有关该功能的详细信息,请参阅Microsoft 知识库文章Q184619。

(8) 删除无用的脚本映射。IIS 被预先配置为支持常用的文件名扩展如.asp 和.shtm 文件。IIS 接收到这些类型的文件请求时,该调用由DLL 处理。如果您不使用其中的某些扩展或功能,则应删除该映射,步骤如下:

?打开Internet服务管理器。

?右键单击Web服务器,然后从上下文菜单中选择“属性”。

?主属性

?选择WWW 服务| 编辑| 主目录| 配置

删除这些引用:

表5.6

如果您不使用... 删除该项:

基于Web 的密码重设.htr

Internet 数据库连接器(所有的IIS 5 Web 站点应

使用ADO 或类似的技术)

.idc

服务器端包括.stm、.shtm 和.shtml

Internet 打印.printer

索引服务器.htw、.ida 和.idq

(9) 要从IIS 5删除的扩展。除非您特别需要使用.htr 功能,否则应删除.htr 扩展。

(10) 少用或不用CGI程序。使用CGI程式时,因为处理程序(Process)须不断地产生与摧毁,造成执行效率不佳。一般而言,执行效率比较如下:静态网页(Static):100ISAPI:50 ASP:10 CGI:1换句话说,ASP比CGI可能快10倍,因此勿使用CGI程式可以改善IIS的执行效率。以弹性(Flexibility)而言:ASP > CGI > ISAPI > 静态网页(Static)。以安全(Security)而言:ASP(独立)= ISAPI(独立)=

·193·

CGI > ASP(非独立)= ISAPI(非独立)= 静态网页(Static)。

当然有时不得不用CGI程序。因此这里提供了一个小技巧来对付日益增多的cgi漏洞扫描器。在IIS中将HTTP404 Object Not Found出错页面通过URL重定向到一个定制HTM文件,可以让目前绝大多数CGI漏洞扫描器失灵。其实原因很简单,大多数CGI 扫描器在编写时为了方便,都是通过查看返回页面的HTTP代码来判断漏洞是否存在的,例如,著名的IDQ漏洞一般都是通过取1.idq来检验,如果返回HTTP200,就认为是有这个漏洞,反之如果返回HTTP404就认为没有,如果你通过URL将HTTP404出错信息重定向到HTTP404.htm文件,那么所有的扫描无论存不存在漏洞都会返回HTTP200,90%的CGI扫描器会认为你什么漏洞都有,结果反而掩盖了你真正的漏洞,让入侵者茫然无处下手。

(11) 检查ASP代码中的

和查询字符串输入。许多站点使用用户的输入以调用其他代码或直接创建SQL 语句。换句话说,它们将该输入视作有效的、格式正确的、非恶意的输入。不应这样看待;仍存在许多攻击,用户的输入被误以为是有效的输入,而该用户仍可获得对服务器的访问权或引起破坏。应对每一个 输入和查询字符串进行检查,然后才能将它转到另一个可能使用外部资源(如文件系统或数据库)的进程或方法调用。

可用JScript V5和VBScript V5 正规表达式功能执行文本检查。以下示例代码可除去包含所有无效(不是0-9a-zA-Z或_ 的字符)字符串:

Set reg = New RegExp

reg.Pattern = "\W+" ' One or more characters which

' are NOT 0-9a-zA-Z or '_'

strUnTainted = reg.Replace(strTainted, "")

以下示例可除去| 操作符后面的所有文本:

Set reg = New RegExp

reg.Pattern = "^(.+)\|(.+)" ' Any character from the start of

' the string to a | character.

strUnTainted = reg.Replace(strTainted, "$1")

同样,在用Scripting File System Object打开文件或创建文件时要千万小心。如果文件名是基于用户的输入的,则该用户可能试图打开一个串口或打印机。以下JScript代码可除去无效的文件名:

var strOut = strIn.replace(/(AUX|PRN|NUL|COM\d|LPT\d)+\s*$/i,"");

(12) 禁用父路径。“父路径”选项允许您在对诸如MapPath函数调用中使用“..”。

?

·194·

在默认情况下,该选项处于启用状态,应该禁用它。禁用该选项的步骤如下:?右键单击该Web站点的根,然后从上下文菜单中选择“属性”。

?单击“主目录”选项卡。

?单击“配置”。

?单击“应用程序选项”选项卡。

?取消选择“启用父路径”复选框。

(13) 禁用-内容位置中的IP地址。“内容-位置”标头可暴露通常在网络地址转换(NAT) 防火墙或代理服务器后面隐藏或屏蔽的内部IP地址。

(14) 彻底删掉C盘Inetpub目录彻底删掉。在D盘建一个Inetpub(要是你不放心用默认目录名也可以改一个名字,但是自己要记得)在IIS管理器中将主目录指向D:\Inetpub。

(15) 备份。为了保险起见,你可以使用IIS的备份功能,将刚刚的设定全部备份下来,这样就可以随时恢复IIS的安全配置。还有,如果你怕IIS负荷过高导致服务器满负荷死机,也可以在性能中打开CPU限制,例如将IIS的最大CPU使用率限制在70%。

相关主题
文本预览
相关文档 最新文档