安全配置

这一部分我们讨论和运行与INTERNET相连的网络服务器相关的一些安全事项。 虽然有好几项我们已经谈过了，但是，新的问题总是不停地备发现。 要象成为一个好的网络管理员就必须学习现存于INTERNET上的无数的危险。

网络安全

对于一个基于INTERNET的网络服务器来说， 防止那些非授权的闯入是最重要而又是最困难的，他们经常会干一些损害网络计算机的事情。 他们中的某些人只是为了好玩或挑战自己的能力， 而另一些人则有一些更阴险的目的。

虽然，没有一个系统能提供100％的安全保护，但是你可以采取措施把这种危险减少到最小的地步。以下介绍几条预防措施。

注意

下文介绍了有关防止安全侵入的很多重要信息， 但是这不能算作一个全面的安全策略，新的安全问题经常会在使用的过程中发现。 我们应该在使用的过程中随时发现问题， 并及时向微软的站点(www.microsoft.com)或CERT网络站点(www.cert.org)进行反馈。

数据加密

当数据在网络服务器和浏览器之间进行传输时很容易被中途截取，为了保护这些重要的数据， 最常用也最有效的方法就是进行数据加密。

Secure Socket Layer(SSL)在为了服务器和客户端之间提供了一种高效的集成数据加密方法。这种技术使用了公用关键字和对称关键字密文， 同时还使用了数字标识和认证技术。 这就使得服务器端和客户端能以一种加密的方式进行通讯，同时确保参与通讯者确实是他所宣称的身份。

SSL只能保护某种类型的INTERNET通讯。 这种保护只有在HTTPS传输过程中才有效。 HTTPS是一种加密的HTTP协议，它用于客户网页向服务器传输数据和从服务器传输数据时使用。另外两个没有经过加密的协议是FTP和GOPHER。 由于没有进行加密，这些使用这些协议的通讯很容易被别人非法闯入。

SSL能提供多种不同等级的加密服务。最高等级的加密使用128位的加密方法。128位SSL加密方法的密码是2128 种组合中的一个（这个数字连你的计算机也表示不出来）。 专家们认为这种加密方法在理论上是解不开的。由于128位SSL提供的高等级加密保护， 美国政府把它作为军事专用，不允许向国外出口。但是40位SSL也提供了足够的加密保护， 这是可以向国外出口的。虽然40位SSL曾今被破解过，但是这个漏洞已经被补上了。 现在，破解一个40位SSL的密码需要计算机运算31个小时。因此， 只要不是特别重要的数据， 使用这种加密措施已经足够了。

注意
近来美国政府已经允许在某些领域输出128位SSL，由于这些规则正改变， 我建议你最好去查以下最近的联邦政府关于加密技术的出口条例。

有一个关于使用SSL的问题就是要使系统与之配套。 由于使用SSL过程中的数据加密和INTERNET上的同步数据的传输，需要花费计算机系统的很多时间。 你用的加密关键字越大，你的处理器所化的时间就会越长。 当你的服务器要使用SSL加密时你一定要确保你的带宽和处理器的速度能满足要求。

关于SYN攻击

有很多的方法可以攻击基于INTERNET的服务器。 其中的一种容易检查到的就是SYN攻击。 SYN攻击使用INTERNET握手时的SYN（同步字节）。通常在TCP/IP连接的初始化过程中， 首先要发出SYN，或同步的请求。这种请求会得到一个发送给客户端的反应信号SYN_ACK。如果用一个错误的返回地址发送同步字节，服务器端的反应信息就不会到达客户端，而且这个连接就会保持半开状态。

SYN攻击使服务器充满无效的半开的TCP/IP连接， 妨碍了服务器的正常服务。 一个这样的请求就会造成一个半开的TCP连接， 当服务器的连接数目达到了服务器所允许的最大数目时， 其他的正常用户请求就不能得到响应。这种拒绝连接会使正常的用户从服务器上得到一个出错信息。

如果没有附加的防火墙或代理服务器是无法防止SYN攻击的 ，这些攻击造成的损害只有提供系统监视和随时测试来消除。

监视基于INTERNET的服务器是系统管理员所承担的一项重要的工作。 检查系统的负载，反应速度，和容量，还有跟踪访问系统的客户， 这些工作都能从正确配置的WINDOWS NT系统获得。 监视TCP连接将对检测SYN攻击有帮助。

NETSTAT命令可以用来看现存的TCP连接。使用NETSTAT， 打开一个COMMAND PROMPT然后键入：

NETSTAT -n -p TCP x

这里x 表示你希望系统更新统计数据的时间间隔（以秒为单位）， 例如， 如果你需要连续地更新系统的TCP连接的统计数目，就应该如下键入：

NETSTAT -n -p TCP 1

这个命令将初始化NETSTAT命令，而且每隔1秒更新显示的内容。如果只需要看一次TCP统计，可以忽略时间间隔参数。

NETSTAT -n -p TCP

使用NETSTAT可以通过检测非正常的大量的SYN_RECEIVED状态来帮助你判别是否存在SYN攻击。也可以参考微软的站点去获得补丁软件来解决这个问题。

在TCP/IP上的NETBIOS

WINDOWS NT还为提供了对TCP/IP网络的其他的远程管理支持。 当管理员设置好了LMHOST文件和和必要的管理员密码以后， 就可以连接到一个服务器， 映射网络驱动器， 使用管理员工具（用户管理，服务器管理，等等），而且还可以启动和停止某项服务。 这项支持在基于INTERNET的系统上显然是应该具备的。但是，就象精明的管理员一样， 精明的黑客知道如何配置自己的系统来获得服务器的权限。 取消这种远程管理在WINDOWS NT 4.0上是很容易的。这也涉及到了在协议层的块数据的认证。

WINDOWS NT通过把NetBIOS信息压入TCP/IP数据报中来支持远程管理和与WAN的连接。 这样就可以使用户使用远程网络的资源就好象是在使用当地的网络资源。为了减少相关的安全隐患， 限制WINDOWS NT的接收基于NeBIOS的数据的容量是很有必要的。 你可以要么用限制作为为NETBIOS信息保留的TCP和UDP端口数，要么删除NetBIOS和TCP/IP的连接。

TCP和UDP协议都要通过端口和其他的系统进行通讯。这些端口定义了被初始化的通讯的类型， 某一个特定的应用程序在这个端口上侦听，当有客户端程序发出请求时，他就作出反应。例如，HTTP协议使用TCP端口号80，而FTP协议使用TCP端口好21。 攻击者通常使用一种叫做端口侦听技术， 用来确定INTERNET系统上安装了那种类型的协议。这种端口侦听可以发现系统的WWW服务，FTP服务，等等。 在TCP/IP基础上的NETBIOS使用TCP和UDP的端口号139，138和137。 我们应该封锁那些不必要的TCP和UDP端口来减少端口侦听的危险，尤其是那些被NETBIOS使用的端口。 封锁这项端口可以大大地减少被非法远程侵入的危险。

封锁不必要的TCP和UDP端口可以通过在网络控制面板的IP地址对话框中进行配置来完成。 点击Advanced 按钮激活Advanced IP地址对话框， 然后点击Enable Secury 对话框，然后点击Configure按钮激活TCP/IP安全对话框， 那里列出了那些TCP和UDP端口被允许了（见图1）。

另一种消除远程管理所带来的危险的非法就是断开TCP/IP和NETBIOS接口之间的连接。这项操作应该在网络控制面板的Bindings Page 框中来配置完成。 在Bindings page

中列出了WINDOWS NT网络组件之间的连接（见图1.2）。 我们可以这样来取消NETBIOS和TCP/IP接口的连接， 点击NETBIOS前面的加号图标，然后选择WINS Client(TCP/IP)选项，然后点击Disable按钮。 当这个连接被取消时，对话框会反馈应该可视化的表示。 然后点击OK按钮完成这项配置。

图1.1 允许IP安全保护

图1.2 取消网络协议的连接

取消CMD和BAT映射

大部分的计算机都支持批处理文件和脚本， 他们用于那些自动反复执行的那些任务。 这些文件是有服务器执行的， 他们也考虑造成破坏。 因为IIS 已经作了映射， 使服务器能执行以.BAT 和.CMD为后缀的文件。

你可以取消这些文件的映射，使NT的命令解释器不能执行这些类型的文件。 你可以点击START按钮，然后选择RUN，输入REGEDIT，并回车。文件映射的关键字在这条设置里：

HKEY_LOCAL_MACHINE/SYSTEM/CurrentSet/Services/W3SVC/Parameters/Scripts Map

在这里删除以 .BAT 和.CMD开头的关键字，然后重新启动IIS。 如果没有以 .BAT 和.CMD开头的关键字， 那么就不需要修改。

注意

注册表编辑器是应该很有用的工具。 但是不正确地修改了注册表会造成严重的问题， 甚至使系统完全崩溃。当你修改注册表时应该特别小心。

不要安装FTP和GOPHER服务

安装FTP和GOPHER 会增加被恶意攻击的机会。 这些服务会在不同方面对攻击者有帮助， 例如， 使攻击得到有关的系统配置的重要信息， 或者使攻击者有用野蛮的方法破解用户的ID 和PASSWORD的机会。 例如， WINDOWS NT的FTP服务在登陆是被认为是有关WINDOWS NT的服务项目。这就使黑客很容易就发现了你的机器的操作系统的类型和版本。图1.3表示了WINDOWS NT 操作系统是如何对任何一个连接者显示系统的信息。

图1.3 WINDOWS NT FTP的反应

把不必要和危险的程序改名

有几个程序在在WINDOWS NT的安装过程中会被自动地安装。这些应用程序可以帮助那些潜在的攻击者来破坏系统的资源。象PCP.EXE（远程拷贝）和FTP.EXE（FTP 客户端程序） 应该改名，防止被别人执行。 例如， 把PCP.EXE改成PCP.APP来防止被远程攻击者执行。

计算机的安全配置

好的服务器系统配置就意味着自己有了一个安全的公文包。 WINDOWS NT 就提供了一些集成的工具来帮助保护这些重要的信息和检测可疑的活动。

]

文件系统和磁盘分区

WINDOWS NT 支持两种不同的文件系统： FAT和NTFS。 FAT兼容性比较好， 它可以被DOS和WINDOWS 95访问， 然而NTFS则具有很好的安全性。 NTFS是new technology file system 的缩写， 它在好几个方面都具有由于FAT文件系统的功能。

n 由于NTFS 跟踪了使用的目录和文件的更新，所以它是可恢复的。 当正在进行数据更新时，如果硬盘或电源出现故障，NTFS也能进行恢复。

n NTFS 支持热安装。 它可以在操作系统往坏的物理扇区上存储数据时，进行及时的恢复。 也就是说， NTFS能使操作系统及时地补救向坏扇区上写的数据，并把它存储到同样大小的另一个地方。

n NTFS满足POSIX.1标准的要求。 一个遵从POSIX.1标准的文件系统， 使系统的文件命名能够区分大小写字母， 而且提供一个标志，记录这个文件最后一次访问的时间。还有, 它还支持硬连接，它允许两个不同的文件指向相同的数据。

n NTFS支持WINDOWS NT的安全模式， 它能实现文件级的校验和权限检查。

n NTFS支持更大的分区， 最大为64 exabytes。 这也许远远超过了你所需要的分区大小。

n NTFS所支持的文件长度最大为255字节， 包括后缀名。 NTFS保持文件名的 大小写，但对大小写进行区分。

n NTFS分区可以减少文件的碎片。 只要有足够大的空间可以存储下文件，NTFS算法总是分配邻近的硬盘空间。

n 文件在NTFS下的可以通过NTFS压缩来进行压缩。 这种压缩方法是很有效的， 它的性能和商用的压缩程序相似。

NTFS的这么多的提高确实要付出代价。 NTFS分区需要一部分的空间用来存储文件的安全信息和关键字，所以微软公司建议NTFS分区至少要有50M 以上的空间。

把数据文件和系统分离对基于INTERNET的系统增加系统安全性是很有必要的。 解决这个问题的最好的方法是建立一个独立的分区，用来存储给INTERNET上的用户访问的数据。这种配置方法通过在分区上使用NTFS的安全机制，很容易就可以限制对系统的非法入侵。 这种分区级的配置也使系统很容易管理。详细内容见后面的章节“WINDOWS NT 安装”。

检查系统的事件

检测和防止非法入侵系统资源的最有效的方法之一就是WINDOWS NT自己的服务器检查机制，它能帮助发现可疑的活动。

为了从WINDOWS NT的检查机制得到最大的收益， 你必须定期地检查这些日志文件。 然而，如果你从来都不分析和使用这些检测的日志文件， IIS会把和WWW，FTP和GOPHER相关的请求信息存储在特定的文件里。 所有的WINDOWS NT的系统事件，例如， 文件的访问， 权限的改变，等等都可以WINDOWS NT的EVENT VIEWER里看到。 关于 EVENT VIEWER的详细用法见下一章“事件查看器”。 关于IIS的日志文件的详细介绍，见 第二章“安装和使用Internet Information server 。

使用WINDOWS NT的监督机制，你可以跟踪系统的每一个操作，甚至是进程级的操作。 由于WINDOWS NT的监督信息是那么的详细，以至于它会产生大量的日志文件。 EVENT VIEWER有一个最大的容量，它很快就会被充满。 选择一个合适的监督的范围是一个很好的主意。

以下是建议用EVENT VIEWER监督的事件

n 登陆和退出时发生的错误

n 文件或对象的访问失败

n 修改用户权限失败

n 用户和用户组管理的成功和失败

n 改变安全策略的成功和失败

n 重新启动，关闭和系统安全措施的成功和失败

IIS 日志文件包含了有IIS 执行的任何事务的详细信息。 你应该使用通常的文本编辑器，例如记事本，经常检查是否有可疑的活动。 以下就是一些可疑的活动的标志：

n Multi failed command attempts

n Attempts to Access CMD and BAT fles

n Unauthorized upload success failure

- Excessive requests a single IP address

注意

有一些其他软件包提供也可以用来帮助查看IIS 日志文件。 这些软件读出加密的日志文件，以报表的形式表示这些数据， 这使得这些数据更容易过滤和理解。

取消网络访问的权限

权限网络访问的权限是一个WINDOWS NT 的集成特征，它可以阻止用户从网络上访问文件，打印资源，和管理员服务。这不会影响IIS的传输能力，也就是说，客户端仍然可以通过World Wide Web ,FTP 和Gopher来传输信息， 因为这种方法是IIS对客户端的请求的反应。 在与IIS 通讯的过程中，远程用户相当于登陆到WINDOWS NT上。

用户的帐户策略

作为管理员， 有一种保护你的系统免受用户的危险操作的方法就是限制他们访问系统的权限。 这一部分向你介绍许多建立安全帐户的好方法。

防止WINDOWS NT缺省的帐户和用户组造成的危险

在安装的过程中， 会生成两个缺省的帐户， 他们是Administrator 和 Guest . 这就给那些恶意的远程客户提供了机会， 他们可以通过猜测这两个用户的密码， 来攻击这个系统。

幸运的是， 你可以采用几个步骤，解决WINDOWS NT的缺省帐户造成的问题。 管理员帐户是WINDOWS NT 所必须的，不能被删除，但是它可以改成一个不显眼的名字，例如：“George”。 管理员帐户可以通过使用用户管理器来改名， 如图1.4所示。

图1.4 给管理员帐户的USER ID 改名。

如同名字所表示的，GUEST 帐户是为以GUEST身份访问系统而设置的。 提供GUEST访问是系统的一个大弊端。 这使你无法跟踪谁访问了你的服务器，也使得某些人更容易对你的系统进行恶意的攻击。GUEST帐户绝对不能使用，应该取消它。 它可以提供用户管理器来取消；在用户属性对话框中（见图1.5），选择帐户禁止的按钮，然后，点击OK。

图1.5 取消GUEST 用户ID

用户策略

如俗语所说，一条链条的强度决定于它的最弱的环节。 这个原理在系统安全范畴里也是适用的。 通常在系统安全链里，最薄弱的环节就是用户端的密码。一般的合法用户都不理解密码的重要性。用户的密码通常和他们的配偶，子女，狗的名字，以及身份证号码，等等有关。这些黑客都明白这一点。

这个最弱的环节被恶意的黑客所破解已经不是偶然的事了。 密码破解程序可以不停地搜索那些可能成为密码的组合。有些程序甚至被设计成在英文或其他外文字典里搜索每一个单词。幸运的是，这里有几个方法可以用来减少用户密码被破解的危险。

首先但也是最主要的， 授权用户必须认识到密码的目的和当今计算机环境的危险性。在这种情况下，没有受过良好的教育就很难保证系统的安全。

另一个，当其他的方法失败时，好的密码和用户策略也能保证你保护系统。 所有有能力的用户都应该遵循已下的约定：

n 不能多个用户公用一个帐户和密码

n 密码必须定期改变

n 密码必须用密码破解程序进行试验（知道它不容易被破解）

n 用户帐号在一定数目的密码输入失败以后，应该被禁止使用

n 密码必须有足够的长度，防止系统密码的重复使用

n 所有的密码都应该在最短长度以上，而且尽可能地包含字母和数字

按以上提供的建议来生成密码，可以帮助你减少很多的这方面的危险。

关于Acceptable Use的陈述

作为好的密码和用户策略的补充，你必须告知用户什么是计算机系统的Acceptable use。Acceptable use策略由于系统的不同而不同，让所有授权客户知道和理解这些策略是很重要的。

假如不辛的事情发生了，系统被破坏了，发生了刑事或民事诉讼时， 是否存在一个公开的成功策略将决定它的成功和失败。

物理安全

保护系统防止基于网络的攻击只是工作的一半。 确保系统的网络安全是同样地重要。 一些常用的操作也可以减少非授权的系统访问。

- 确保系统存储在一个安全的区域，不能被客户端访问。 最好，把计算机系统装载在严格保护的计算机上。 这些设备应该拥有一些防火，防电源波动，以及对过热和湿度过大的保护。
- 如果这种保护是不可行的。 把服务器锁在柜子里，能帮助防止非法破坏服务器。 还有一些其他的预防措施，例如，锁住软盘驱动器减少被非授权用户偷存储在系统里的信息。

C2安全

C2安全规则是美国国防部在80年代研制的，现在变成了衡量系统安全的标准。C2标准是在DOD的可信计算机系统衡量标准中（或称黄皮书）中定义的许多不同等级的安全标准中的一种。 它是当今所有的公司和计算机系统中使用的最多的一种。

在这里要注明， WINDOWS NT只有在作为一个单一的工作站时才遵从C2标准。 当它和网络连接时它就不在满足C2标准。 微软公司遵从C2标准的检查器，叫做C2CONFIG，它可以用来衡量WINDOWS NT系统的C2标准（见图1.6）。 C2CONFIG检查服务器的配置及详细信息，发现那些不满足C2标准或安全性不好的组件。这个工具包括在WINDOWS NT 的资源工具包中，这是一个非常有用的工具包。

以下列出了包括在C2安全标准中的不同的组件

n 系统资源（文件，进程，等等）的所有者必须 可以控制这些资源的访问权限。

n 操作系统必须禁止非授权用户重复使用系统对象。 这系统对象包括内存，磁盘空间，等等。 这些标准的目的是为禁止别人在得到权限以前不停地尝试去访问系统资源。 例如，在NTFS分区内的文件就不允许被删除。

n 每一个用户都必须提高使用一个唯一的USERID和PASSWORD而成为系统的授权用户。而且，系统必须能够提供用户的USERID和PASSWORD的关联来跟踪用户的所有的操作。

n 系统必须支持系统安全事务的检查。 这些安全事务的数据一定不能让非授权的用户得到。

n 在物理配置上必须能防止外部的损伤。 例如： 封锁软盘驱动器，增加电源保护等等。