WIN2000 Server安全配置入门

Author: 猎枪 Date: 2001年 11期

    目前,WIN2000 Server是比较流行的服务器操作系统之一,但是要想安全地配置微软的这个操作系统,却不是一件容易的事。
  #1    定 制
      1. 版本的选择:WIN2000有各种语言的版本,在语言不成为障碍的情况下,请一定使用英文版。要知道,微软的产品是以Bug & Patch而著称的,中文版的Bug远远多于英文版,而发布补丁一般至少迟半个月。
      2. 组件的定制:WIN2000在默认情况下会安装一些常用的组件,但正是这个默认安装是极度危险的。你应该确切知道你需要哪些服务,而且仅仅安装你确实需要的服务。根据安全原则,最少的服务+最小的权限=最大的安全。如果你确实需要安装其他组件,请慎重,特别是:Indexing Service,FrontPage 2000 Server Extensions,Internet Service Manager(HTML)这几个危险服务。
  #1    安装
      1.分区和逻辑盘的分配:建议最少建立两个分区,一个系统分区,一个应用程序分区,这是因为,微软的IIS经常会有泄漏源码/溢出的漏洞,如果把系统和IIS放在同一个驱动器会导致系统文件的泄漏甚至入侵者远程获取ADMIN。推荐的安全配置是建立三个逻辑驱动器,第一个大于2G,用来装系统和重要的日志文件,第二个放IIS,第三个放FTP,这样无论IIS或FTP出了安全漏洞都不会直接影响到系统目录和系统文件。要知道,IIS和FTP是对外服务的,比较容易出问题。而把IIS和FTP分开主要是为了防止入侵者上传程序并从IIS中运行。
      2.安装顺序的选择:WIN2000在安装中有几个顺序是一定要注意的:
      首先,何时接入网络:WIN2000在安装时有一个漏洞,在你输入Administrator密码后,系统就建立了ADMIN$的共享,但是并没有用你刚刚输入的密码来保护它,这种情况一直持续到你再次启动后,在此期间,任何人都可以通过ADMIN$进入你的机器。同时,只要安装一完成,各种服务就会自动运行,而这时的服务器是满身漏洞,非常容易进入的,因此,在完全安装并配置好WIN2000 Server之前,一定不要把主机接入网络。
      其次,补丁的安装:补丁的安装应该在所有应用程序安装完之后,因为补丁程序往往要替换/修改某些系统文件,如果先安装补丁再安装应用程序有可能导致补丁不能起到应有的作用。
  #1    安全配置
      IIS:IIS是微软的组件中漏洞最多的一个,平均两三个月就要出一个漏洞,而微软的IIS默认安装又实在不敢恭维,所以IIS的配置是我们的重点:
      首先,把C盘Inetpub目录彻底删掉,在D盘建一个Inetpub在IIS管理器中将主目录指向D:/Inetpub;
      其次,那个IIS安装时默认的scripts等虚拟目录一概删除,如果你需要什么权限的目录可以自己慢慢建,需要什么权限开什么。
      应用程序配置:在IIS管理器中删除必须之外的任何无用映射,必须指出的是ASP ASA和其他你确实需要用到的文件类型,实际上90%的主机有了上面两个映射就够了,其余的映射几乎每个都有一个凄惨的故事。接着在应用程序调试书签内将脚本错误消息改为发送文本,错误文本写什么?随便你喜欢,自己看着办。点击确定退出时别忘了让虚拟站点继承你设定的属性。
      为了对付日益增多的cgi漏洞扫描器,还有一个小技巧可以参考,在IIS中将HTTP404 Object Not Found出错页面通过URL重定向到一个定制HTM文件。大多数CGI扫描器在编写时为了方便,都是通过查看返回页面的HTTP代码来判断漏洞是否存在的,例如,著名的IDQ漏洞一般都是通过取1.idq来检验,如果返回HTTP200,就认为是有这个漏洞,反之如果返回HTTP404就认为没有,如果你通过URL将HTTP404出错信息重定向到HTTP404.htm文件,那么所有的扫描无论存不存在漏洞都会返回HTTP200,90%的CGI扫描器会认为你什么漏洞都有,结果反而掩盖了你真正的漏洞,让入侵者茫然无处下手。
      最后,为了保险起见,你可以使用IIS的备份功能,将刚刚的设定全部备份下来,这样就可以随时恢复IIS的安全配置。
  #1    账号安全
      WIN2000的账号安全是另一个重点,首先,WIN2000的默认安装允许任何用户通过空用户得到系统所有账号/共享列表,这个本来是为了方便局域网用户共享文件的,但是一个远程用户也可以得到你的用户列表并使用暴力法破解用户密码。很多朋友都知道可以通过更改注册表Local_Machine/System/CurrentControlSet/Control/LSA/RestrictAnonymous = 1来禁止139空连接,实际上WIN2000的本地安全策略(如果是域服务器就是在域服务器安全和域安全策略中)就有这样的选项RestrictAnonymous(匿名连接的额外限制),这个选项有三个值:
      0:None. Rely on default permissions(无,取决于默认的权限)
      1:Do not allow enumeration of SAM accounts and shares(不允许枚举SAM账号和共享)
      2:No access without explicit anonymous permissions(没有显式匿名权限就不允许访问)
      0这个值是系统默认的,什么限制都没有,远程用户可以知道你机器上所有的账号、组信息、共享目录、网络传输列表NetServerTransportEnum等等,对服务器来说这样的设置非常危险。
      “1”这个值是只允许非NULL用户存取SAM账号信息和共享信息。
      “2”这个值是在WIN2000中才支持的,需要注意的是,如果你一旦使用了这个值,你的共享估计就全部完蛋了,所以我推荐你还是设为1比较好。
      此外,在计算机管理→用户账号中右击administrator然后改名,一般人就不知道你的账户名了。
      不对不对,我都已经改了用户名了,怎么还是有人跑我管理员的密码?嗯,那肯定是在本地或者Terminal Service的登录界面看到的,好吧,我们再来把HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/winlogon项中的Don’t Display Last User Name串数据改成1,这样系统不会自动显示上次的登录用户名。
      将服务器注册表HKEY_LOCAL_ MACHINE/SOFTWARE/Microsoft/ WindowsNT/CurrentVersion/Winlogon项中的Don’t Display Last User Name串数据修改为1,隐藏上次登录控制台的用户名。
      安全日志:我遇到过这样的情况,一台主机被别人入侵了,系统管理员请我去追查凶手,我登录进去一看:安全日志是空的,WIN2000的默认安装是不开任何安全审核的!那么请你到本地安全设置→本地策略→审核策略中打开相应的审核。注意:审核项目太多不仅会占用系统资源而且会导致你根本没空去看,这样就失去了审核的意义。
      与之相关的是:在账户策略→密码策略和在账户策略→账户锁定策略中作相应的设置。同样,Terminal Service的安全日志默认也是不开的,我们可以在Terminal Service Configration(远程服务配置)→权限-高级中配置安全审核,一般来说只要记录登录、注销事件就可以了。
  #1    目录和文件权限
      为了控制好服务器上用户的权限,同时也为了预防以后可能的入侵和溢出,我们还必须非常小心地设置目录和文件的访问权限,NT的访问权限分为:读取、写入、读取及执行、修改、列目录、完全控制。在默认的情况下,大多数的文件夹对所有用户(Everyone这个组)是完全敞开的(Full Control),你需要根据应用的需要进行权限重设。
      实际上,安全和应用在很多时候是矛盾的,因此,你需要在其中找到平衡点,毕竟服务器是给用户用而不是做OPEN HACK的,如果安全原则妨碍了系统应用,那么这个安全原则也不是一个好的原则。