目前WIN SERVER是比较流行的服务器操作系统之一但是要想安全的配置微软的这个操作系统却不是一件容易的事本文试图对win SERVER的安全配置进行初步的探讨
一 定制自己的WIN SERVER
. 版本的选择
WIN有各种语言的版本对于我们来说可以选择英文版或简体中文版我强烈建议在语言不成为障碍的情况下请一定使用英文版要知道微软的产品是以Bug & Patch而着称的中文版的Bug远远多于英文版而补丁一般还会迟至少半个月(也就是说一般微软公布了漏洞后你的机子还会有半个月处于无保护状况)
. 组件的定制
win在默认情况下会安装一些常用的组件但是正是这个默认安装是极度危险的(米特尼科说过他可以进入任何一台默认安装的服务器我虽然不敢这么说不过如果你的主机是WIN SERVER的默认安装我可以告诉你你死定了)你应该确切的知道你需要哪些服务而且仅仅安装你确实需要的服务根据安全原则最少的服务+最小的权限=最大的安全典型的WEB服务器需要的最小组件选择是只安装IIS的Com FilesIIS SnapInWWW Server组件如果你确实需要安装其他组件请慎重特别是Indexing Service FrontPage Server Extensions Internet Service Manager (HTML)这几个危险服务
. 管理应用程序的选择
选择一个好的远程管理软件是非常重要的事这不仅仅是安全方面的要求也是应用方面的需要Win的Terminal Service是基于RDP(远程桌面协议)的远程控制软件他的速度快操作方便比较适合用来进行常规操作但是Terminal Service也有其不足之处由于它使用的是虚拟桌面再加上微软编程的不严谨当你使用Terminal Service进行安装软件或重起服务器等与真实桌面交互的操作时往往会出现哭笑不得的现象例如使用Terminal Service重起微软的认证服务器(Compaq IBM等)可能会直接关机所以为了安全起见我建议你再配备一个远程控制软件作为辅助和Terminal Service互补象PcAnyWhere就是一个不错的选择
二 正确安装WIN SERVER
.分区和逻辑盘的分配
有一些朋友为了省事将硬盘仅仅分为一个逻辑盘所有的软件都装在C驱上这是很不好的建议最少建立两个分区一个系统分区一个应用程序分区这是因为微软的IIS经常会有洩漏源码/溢出的漏洞如果把系统和IIS放在同一个驱动器会导致系统文件的洩漏甚至入侵者远程获取ADMIN推荐的安全配置是建立三个逻辑驱动器第一个大于G用来装系统和重要的日志文件第二个放IIS第三个放FTP这样无论IIS或FTP出了安全漏洞都不会直接影响到系统目录和系统文件要知道IIS和FTP是对外服务的比较容易出问题而把IIS和FTP分开主要是为了防止入侵者上传程序并从IIS中运行(这个可能会导致程序开发人员和编辑的苦恼管他呢反正你是管理员)
.安装顺序的选择
不要觉得顺序有什么重要?只要安装好了怎么装都可以的错!win在安装中有几个顺序是一定要注意的 首先何时接入网络Win在安装时有一个漏洞在你输入Administrator密码后系统就建立了ADMIN$的共享但是并没有用你刚刚输入的密码来保护它这种情况一直持续到你再次启动后在此期间任何人都可以通过ADMIN$进入你的机器同时只要安装一完成各种服务就会自动运行而这时的服务器是满身漏洞非常容易进入的因此在完全安装并配置好win SERVER之前一定不要把主机接入网络 其次补丁的安装补丁的安装应该在所有应用程序安装完之后因为补丁程序往往要替换/修改某些系统文件如果先安装补丁再安装应用程序有可能导致补丁不能起到应有的效果例如IIS的HotFix就要求每次更改IIS的配置都需要安装(变不变态?)
三 安全配置WIN SERVER 即使正确的安装了WIN SERVER系统还是有很多的漏洞还需要进一步进行细致地配置
.端口
端口是计算机和外部网络相连的逻辑接口也是计算机的第一道屏障端口配置正确与否直接影响到主机的安全一般来说仅打开你需要使用的端口会比较安全配置的方法是在网卡属性TCP/IP高级选项TCP/IP筛选中启用TCP/IP筛选不过对于win的端口过滤来说有一个不好的特性只能规定开哪些端口不能规定关闭哪些端口这样对于需要开大量端口的用户就比较痛苦
.IIS
IIS是微软的组件中漏洞最多的一个平均两三个月就要出一个漏洞而微软的IIS默认安装又实在不敢恭维所以IIS的配置是我们的重点现在大家跟着我一起来
首先把C盘那个什么Inetpub目录彻底删掉在D盘建一个Inetpub(要是你不放心用默认目录名也可以改一个名字但是自己要记得)在IIS管理器中将主目录指向D:\Inetpub
其次那个IIS安装时默认的什么scripts等虚拟目录一概删除(罪恶之源呀忘了%c%c/winnt/system/cmdexe了?我们虽然已经把Inetpub从系统盘挪出来了但是还是小心为上)如果你需要什么权限的目录可以自己慢慢建需要什么权限开什么(特别注意写权限和执行程序的权限没有绝对的必要千万不要给)
第三应用程序配置在IIS管理器中删除必须之外的任何无用映射必须指的是ASP ASA和其他你确实需要用到的文件类型例如你用到stml等(使用server side include)实际上%的主机有了上面两个映射就够了其余的映射几乎每个都有一个凄惨的故事htw htr idq ida……想知道这些故事?去查以前的漏洞列表吧什么?找不到在哪里删?在IIS管理器中右击主机>属性>WWW服务 编辑>主目录 配置>应用程序映射然后就开始一个个删吧(里面没有全选的嘿嘿)接着在刚刚那个窗口的应用程序调试书签内将脚本错误消息改为发送文本(除非你想ASP出错的时候用户知道你的程序/网络/数据库结构)错误文本写什么?随便你喜欢自己看着办点击确定退出时别忘了让虚拟站点继承你设定的属性
为了对付日益增多的cgi漏洞扫描器还有一个小技巧可以参考在IIS中将HTTP Object Not Found出错页面通过URL重定向到一个定制HTM文件可以让目前绝大多数CGI漏洞扫描器失灵其实原因很简单大多数CGI扫描器在编写时为了方便都是通过查看返回页面的HTTP代码来判断漏洞是否存在的例如着名的IDQ漏洞一般都是通过取idq来检验如果返回HTTP就认为是有这个漏洞反之如果返回HTTP就认为没有如果你通过URL将HTTP出错信息重定向到文件那么所有的扫描无论存不存在漏洞都会返回HTTP%的CGI扫描器会认为你什么漏洞都有结果反而掩盖了你真正的漏洞让入侵者茫然无处下手(武侠小说中常说全身漏洞反而无懈可击难道说的就是这个境界?)不过从个人角度来说我还是认为扎扎实实做好安全设置比这样的小技巧重要的多
最后为了保险起见你可以使用IIS的备份功能将刚刚的设定全部备份下来这样就可以随时恢复IIS的安全配置还有如果你怕IIS负荷过高导致服务器满负荷死机也可以在性能中打开CPU限制例如将IIS的最大CPU使用率限制在%
.账号安全
Win的账号安全是另一个重点首先Win的默认安装允许任何用户通过空用户得到系统所有账号/共享列表这个本来是为了方便局域网用户共享文件的但是一个远程用户也可以得到你的用户列表并使用暴力法破解用户密码很多朋友都知道可以通过更改注册表Local_Machine\System\CurrentControlSet\Control\LSARestrictAnonymous = 来禁止空连接实际上win的本地安全策略(如果是域服务器就是在域服务器安全和域安全策略中)就有这样的选项RestrictAnonymous(匿名连接的额外限制)这个选项有三个值 None Rely on default permissions(无取决于默认的权限) Do not allow enumeration of SAM accounts and shares(不允许枚举SAM帐号和共享) No access without explicit anonymous permissions(没有显式匿名权限就不允许访问) 这个值是系统默认的什么限制都没有远程用户可以知道你机器上所有的账号组信息共享目录网络传输列表(NetServerTransportEnum等等对服务器来说这样的设置非常危险 这个值是只允许非NULL用户存取SAM账号信息和共享信息 这个值是在win中才支持的需要注意的是如果你一旦使用了这个值你的共享估计就全部完蛋了所以我推荐你还是设为比较好 好了入侵者现在没有办法拿到我们的用户列表我们的账户安全了……慢着至少还有一个账户是可以跑密码的这就是系统内建的administrator怎么办?我改改改在计算机管理>用户账号中右击administrator然后改名改成什么随便你只要能记得就行了 不对不对我都已经改了用户名了怎么还是有人跑我管理员的密码?幸好我的密码够长但是这也不是办法呀?嗯那肯定是在本地或者Terminal Service的登录界面看到的好吧我们再来把HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\winlogon项中的Dont Display Last User Name串数据改成这样系统不会自动显示上次的登录用户名 将服务器注册表HKEY_LOCAL_ MACHINE\SOFTWARE\Microsoft\ WindowsNT\CurrentVersion\Winlogon项中的Dont Display Last User Name串数据修改为隐藏上次登陆控制台的用户名(哇世界清静了)