Win2000操作系统的一个主要特色就是将IIS融入其内核之中,并提供一些用来配置和维护软件的向导工具,使构建一个Internet网站轻松易得。但是,如果要创建一个安全可靠的Internet网站,实现“地面部分”-Win2K操作系统和“空中部分”-IIS的双重安全,还需要更加全面和深入的工作。本文就对这些稳固工作中的地面部分-Win2K操作系统进行讨论,旨在帮助管理员一步步地实施网站安全构建工作。
一、安全思想先行
所谓兵马未发,粮草先行,在安装和配置一个Internet服务器之前,首先要从思想上对安全工作有个全局认识,至少应该考虑好以下几个方面的内容:
1、编制计划
编制安装计划的过程本身就可以作为一篇论文深加论述,这里只做概要介绍。保护Internet服务器安全需要详尽的计划,这不是指在安装过程中弹出菜单时确定选择哪一个项目,而是要仔细确定系统的功能和目标,最终成为安装的路标、排除故障的向导、服务器安装及网络边界情况的基础文档。如果需要安装计划编制方面的基础性方针资料,可以参考 RFC手册之2196项“站点安全手册”,地址是:http://www.faqs.org/rfcs/rfc2196.html。
2、设计策略
除了确定服务器将执行那些功能,还需要确定谁能访问服务器、在服务器上存储什么数据以及在出现各种情况时应该采取哪些措施。这就是策略的制定。实际上,策略定义了一个组织的服务器与接受它的服务和数据的Internet公众之间的交互作用细节。真正安全的站点必须具有适当的策略。关于策略的设计,同样请参考RFC手册之2196项“站点安全手册”。
3、访问控制
这方面是指对服务器的访问权,主要包括三类:
物理访问控制:指实际接触和操作服务器控制台的能力。如果攻击者取得了物理访问权,就可以绕过许多安全措施,整个安全计划将出现一个大大的漏洞!
系统访问控制:确定哪些组或个人账号对系统拥有何种权限,例如备份和恢复数据、向Web 服务器发布文档、管理账户或组。
网络访问控制:网络访问控制规定了内部网与Internet相互作用的权限,例如端口访问、数据读取、服务使用等等。不仅仅要考虑到外部的入侵行为,还要设想到内部的敌人攻击。为此,一般将服务器放于DMZ区域内。一个DMZ(Demilitarized Zone)就是一个孤立的网络,可以把不信任的系统放在那里。例如,我们希望任何人都能访问Web和Email服务器,所以它们就是不能信任的;将它们放在DMZ中特别关照,就可对来自内部和外部的访问都进行限制。
二、Win2K安装时要重点考虑的安全配置信息
安装Win2K时,直到配置网络协议时才需要考虑安全问题。对于一个Internet网站,配置网络协议时一定要关闭一个很大的安全漏洞:NetBIOS协议!就是说,在“本地连接属性”窗口中,只选中“Microsoft网络客户端”和“Internet协议(TCP/IP)”两项:
选中“Microsoft网络客户端”的原因在于NTLM (NT/LAN 管理器)安全支持供应(Security Support Provider)组件是嵌入在操作系统中的,如果没有这个组件,IIS将无法运行。
你可能要问了:“只配置这两个协议,需要其他的功能怎么办”?解决方法很简单:为服务器安装配置两个网卡,第一个用于Internet连接,其上只绑定那两个服务协议;第二个用于从本地网络访问服务器,根据需要添加其他的服务协议,例如“Microsoft网络的文件和打印机共享”等:
接下来,我们要设置TCP/Ip协议的属性内容。除了确定网卡IP地址以及默认网关地址外,还需要点击“高级”按钮进入“WINS”选项卡设置“禁止TCP/IP上的NetBIOS”,以阻止网卡向Internet发送和接收NetBIOS信息:
NetBIOS是简单友好的机器名表达法,例如\servernameshareresource。如果打开这个功能,攻击者就可以使用端口扫描器等软件测试出具有端口137 和139监听的机器,从而进一步使用其NetBIOS 名尝试获取系统资源的访问权。
三、Win2K安装后要重点考虑的安全配置信息
操作系统安装完毕后,建议执行如下安全配置:
1、安装微软高级加密包(Microsoft High Encryption Pack),将服务器升级为128位加密。
默认状态下,服务器软件的加密状态处于较低级别,我们必须手工将其配置为128位加密。而且,这项工作应该在创建帐号和组之前进行,这样就可以保证在服务器上创建的所有项目都是128位加密级别的。
2、安装最新的SP软件包和Hotfixes
微软的产品是老裁缝做的,不打补丁不漂亮的,所以管理员们要经常访问以下地址看看是否又有新补丁面世:http://www.microsoft.com/windows2000/downloads/default.asp
这个地址包含了大量关于Win2K的信息,对日常管理Win2K服务器非常有参考价值。关于HotFixes有一点需要注意:只在系统需要的时候才安装相应HotFix。因为,并不是每个服务器都需要所有的HotFix,其中有一些hotfix修复的漏洞只存在于某些特定配置中。
3、对系统服务的启动方式重新进行规划
默认状态下,许多服务都随系统启动而启动。但由于有些服务因为启动帐号身份的权限过大,有可能埋下安全隐患地雷,因此必须对所有服务的启动方式进行重新规划。规划的原则应该是:除非绝对必要,关闭该服务。
以下是我们认为应该处于“自动”启动状态的基本服务:
DNS Client:如果服务器需要主动与其它服务器进行通信,就需要这个服务。许多Web服务器仅仅是对请求进行应答而自身并不发出请求,这时就不需要DNS Client了。
Event Log:事件日志,用于记录程序和 Windows 发送的事件消息。事件日志包含对诊断问题有所帮助的信息,可以在“事件查看器”中查看报告。
Logical Disk Manager:逻辑磁盘管理器监视狗服务,用于管理本地磁盘驱动器和可移动设备。
Network Connections:管理“网络和拨号连接”文件夹中对象,在其中可以查看局域网和远程连接。
Protected Storage:提供对敏感数据(如私钥)的保护性存储,以便防止未授权的服务、过程或用户对其的非法访问。
Remote Procedure Call (RPC):远程过程调用服务,用于在一个系统上使用程序执行远程系统上的指令或程序。
Security Accounts Manager (SAM):安全帐号管理服务,用于维护本地用户帐户的安全信息。
Windows Management Instrumentation(WMI):Windows管理器,提供系统管理信息,如果没有它,就没有可访问的管理控制台来执行系统管理。
Windows Management Instrumentation Driver Extensions:Windows管理器驱动器扩展,也是MMC所要求的,用于与驱动程序间交换系统管理信息。
以下是我们认为应该处于“手动”启动状态的基本服务:
Logical Disk Manager Administrative Service:逻辑硬盘管理器管理服务,是磁盘管理请求的系统管理服务。
World Wide Web Publishing Service:WWW发布服务,用于向Web 站点设置的特定端口(通常是80)发布Web内容。
4、强化SAM数据库的保护
SAM数据库就是系统账户数据库,其中的内容属于一等机密,再怎么保护也不为过。默认状态下,SAM 是用本地存储的启动关键字来加密的,这个关键字中包含一个杂乱信息代码,它在启动过程中被处理进而将账户数据库解密并存储在内存中,从而被系统访问。加密关键字的默认存储地点可以用Win2K命令行工具syskey.exe来修改:
因此,为了保护SAM数据库的安全,管理员可以使用这个工具将杂乱信息代码转移到软盘上,并注意为这个软盘制作多个备份,放置到一个非常安全的地方。如果这个软盘丢失或损坏,就无法重新启动服务器了,因为再没有其它办法可以对用户账户和口令数据库进行解密。
另外,我们还应该对SAM数据库添加口令复杂性的要求,这是通过启动“本地安全策略”工具并启用其中的“密码必须符合复杂性要求”来完成的:
5、确定Web站点的口令访问策略
访问Web 站点的不同内容可能需要不同的口令,考虑到相应的行为并设计好对策将极大地减少许多安全隐患。例如:服务器是只作为公共信息站点使用吗?它允许不同权限的用户访问受保护的数据吗?站点要求用户向其提交数据吗?......通常,我们可以对所有的Internet服务器都执行相同的基本安全配置,然后再根据具体服务类型,进一步做出特殊安全设置。比如:如果服务器只是为公司提供一个Web上的存在,那最好就只允许匿名访问,这样就避免了服务器与客户之间的口令传递,并降低了攻击者探测服务器口令的可能性。
6、消除空连接安全漏洞
在Win2K中存在一种可能性:攻击者可以使用一个所谓的空帐号登录到系统、建立一个空对话,从而获取服务器上用户和组帐号情况列表以及服务器上的所有共享资源列表。呵呵,空手套帐号啊!让这个“空手”真正落空的方法是修改注册表相关项目,方法分别是:
禁止空连接获取帐号信息:修改的键值及取值是
HKEY_LOCAL_MACHINESystemCurrentControlSetControlLSA,REG_DWORD,1
注意:有些服务可能要使用空连接在网络上完成与其它服务器和系统通信的任务,所以如果修改注册表后发现这些服务工作不正常了,那就再修改回来吧。摸着石头过河吗!
禁止空连接获取共享资源:修改的键值及取值是
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanManServerParametersRestrictNullSessAccess,REG_DWORD,1
当这个值设置为1时,空连接用户将不能访问任何共享;如果设置为0,那么空连接用户就可以连接到所有对Everyone组共享的程序或打印机上。
注意:修改这个键值可能会影响空连接对Named Pipes(名字管道)的访问。Named Pipes就是一个系统上的程序与另一个不同系统上的程序通讯的功能。在Win2K中设置了许多named pipes,例如Winreg以IPC机制允许在一个客户机器上运行Regedit并访问远程服务器的注册表文件,Netlogon通过一个named pipe使用RPC连接来进行登录认证,SMB (Server Message Blocks)使用named pipes进行网络上服务器之间的通讯。注册表中有关于空连接可以使用的named pipes列表,键值如下:
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanManServerParametersNullSessionPipes
我们可以根据需要对以上列表中的字符串进行去除,但同样请注意:如果发现有些服务工作不正常,请再修改回来。
7、去除对其他操作系统的支持
Win2K可以很好地支持其他操作系统,允许例如OS/2和POSIX的应用程序向服务器发送请求以执行代码。这种功能通常叫做Win2K的子系统。Win2K的子系统一般情况下不会用到,但却是一个很大的安全漏洞,应该采取措施堵住它。关闭这个漏洞的最简单方法是去掉这个子系统,使它们无法使用。放心,这不会给Win2K服务器或IIS带来任何问题,因为它们是在Win32子系统中运行的。
禁止OS/2和POSIX要通过删除相关文件和改写相关注册表键值来完成,步骤如下:
删除“\%systemroot%system32os2”文件夹及其中所有内容。
删除“HKLMSoftwareMicrosoftOS/2 Subsystem for NT”下面所有的子键。
删除“HKLMSystemCurrentControlSetControlSession ManagerEnvironment”中的值Os2LibPath。
清除“HKLMSystemCurrentControlSetControlSession ManagerSubsystems”中Optional的内容,但是保留值Optional的名字。
删除“HKLMSystemCurrentControlSetControlSession ManagerSubSystems ”中的值Os/2 和Posix。
重新启动。
8、合理调整页面文件的设置
需要处理的另一个问题是页面文件(page file)在系统上的存放位置。当应用程序或系统程序需要访问物理RAM时,Win2K使用页面文件作为应用程序代码的临时保存区。因此,硬盘驱动器上必须有足够的空间供页面文件使用,否则就会导致系统崩溃。避免出现这种情况的方法有:
在系统上尽可能多安装RAM。可用的物理RAM越多,系统运行的效率越高。
将所有的操作系统文件放置在自己的分区。这个分区中应该只包含操作系统文件和一个至少相当于物理RAM大小的页面文件。当系统遭遇一个STOP错误时,这个页面文件允许系统创建一个crashdump文件。
至少在另外一个分区上创建一个页面文件,其大小大约为物理RAM + 11 MB。如果可能的话,将这个页面文件放置在一个单独的物理驱动器上,这样系统执行I/O操作就更加有效。
配置系统服务和生成日志文件及扩展数据的应用程序,使它们写入的文件不在操作系统所在的驱动器上。
四、结 语
以上详细论述了使用Win2K和IIS5构建安全Internet网站的Win2K操作系统安全配置指南部分,如果是严格按照这些步骤装扮了Win2K,就可以说基本上做到了从“地面部分”全力堵截入侵者的攻击。要做到从“空中部分”拦截入侵,请看“Win2K Internet服务器安全构建指南(IIS篇)”。