Username: Password:

精解??安全配置 Windows 2000服务器-数据库专栏,SQL Server
来源:作者: 发布时间:2007-12-25 13:47:01

 现在,win2000 server是比较流行的服务器操作系统之一,但是要想安全的配置微软的这个操作系统,却不是一件容易的事。本文试图对win2000 server的安全配置进行初步的探讨。  
  一、定制自己的win2000 server:   
  1.版本的选择:win2000有各种语言的版本,对于我们来说,能够选择英文版或简体中文版,我强烈建议:在语言不成为障碍的情况下,请一定使用英文版。要知道,微软的产品是以bug & patch而著称的,中文版的bug远远多于英文版,而补丁一般还会迟至少半个月(也就是说一般微软公开了漏洞后您的机子还会有半个月处于无保护状况)   
  2.组件的定制:  
  win2000在默认情况下会安装一些常用的组件,但是正是这个默认安装是极度危险的(米特尼科说过,他能够进入任何一台默认安装的服务器,我虽然不敢这么说,但是假如您的主机是win2000 server的默认安装,我能够告诉您,您死定了)   
  您应该确切的知道您需要哪些服务,而且仅仅安装您确实需要的服务,根据安全原则,最少的服务+最小的权限=最大的安全。   
  典型的web服务器需要的最小组件选择是:只安装iis的com files,iis snap-in,www server组件。假如您确实需要安装其他组件,请慎重,特别是:indexing service, frontpage 2000 server extensions, internet service manager (html)这几个危险服务。   
  3.管理应用程式的选择:   
  选择一个好的远程管理软件是很重要的事,这不但仅是安全面的需要,也是应用方面的需要。 
  win2000的terminal service是基于rdp(远程桌面协议)的远程控制软件,他的速度快,操作方便,比较适合用来进行常规操作。   
  但是,terminal service也有其不足之处,由于他使用的是虚拟桌面,再加上微软编程的不严谨,当您使用terminal service进行安装软件或重起服务器等和真实桌面交互的操作时,往往会出现哭笑不得的现象,例如:使用terminal service重起微软的认证服务器(compaq, ibm等)可能会直接关机。 
  所以,为了安全起见,我建议您再配备一个远程控制软件作为辅助,和terminal service互补,象pcanywhere就是个不错的选择。   
  二、正确安装win2000 server:   
  1.分区和逻辑盘的分配,有一些朋友为了省事,将硬盘仅仅分为一个逻辑盘,任何的软件都装在c驱上,这是很不好的,建议最少建立两个分区,一个系统分区,一个应用程式分区,这是因为,微软的iis经常会有泄漏源码/溢出的漏洞,假如把系统和iis放在同一个驱动器会导致系统文档的泄漏甚至入侵者远程获取admin。   
  推荐的安全配置是建立三个逻辑驱动器,第一个大于2g,用来装系统和重要的日志文档,第二个放iis,第三个放ftp,这样无论iis或ftp出了安全漏洞都不会直接影响到系统目录和系统文档。   
  要知道,iis和ftp是对外服务的,比较容易出问题。而把iis和ftp分开主要是为了防止入侵者上传程式并从iis中运行。(这个可能会导致程式研发人员和编辑的苦恼,管他呢,反正您是管理员)   
  2.安装顺序的选择:   
  不要觉得:顺序有什么重要?只要安装好了,怎么装都能够的。   
  错!win2000在安装中有几个顺序是一定要注意的:   
  首先,何时接入网络:win2000在安装时有一个漏洞,在您输入administrator密码后,系统就建立了admin$的共享,但是并没有用您刚刚输入的密码来保护他,这种情况一直持续到您再次启动后,在此期间,任何人都能够通过admin$进入您的机器;同时,只要安装一完成,各种服务就会自动运行,而这时的服务器是满身漏洞,很容易进入的,因此,在完全安装并配置好win2000 server之前,一定不要把主机接入网络。   
  其次,补丁的安装:补丁的安装应该在任何应用程式安装完之后,因为补丁程式往往要替换/修改某些系统文档,假如先安装补丁再安装应用程式有可能导致补丁不能起到应有的效果,例如:iis的hotfix就需要每次更改iis的配置都需要安装 
  三、安全配置win2000 server:   
  即使正确的安装了win2000 server,系统还是有很多的漏洞,还需要进一步进行细致地配置。   
  1.端口:   
  端口是电脑和外部网络相连的逻辑接口,也是电脑的第一道屏障,端口配置正确和否直接影响到主机的安全,一般来说,仅打开您需要使用的端口会比较安全,配置的方法是在网卡属性-tcp/ip-高级-选项-tcp/ip筛选中启用tcp/ip筛选,但是对于win2000的端口过滤来说,有一个不好的特性:只能规定开哪些端口,不能规定关闭哪些端口,这样对于需要开大量端口的用户就比较痛苦。   
  2.iis:   
  iis是微软的组件中漏洞最多的一个,平均两三个月就要出一个漏洞,而微软的iis默认安装又实在不敢恭维,所以iis的配置是我们的重点,现在大家跟着我一起来:    
  首先,把c盘那个什么inetpub目录完全删掉,在d盘建一个inetpub(要是您不放心用默认目录名也能够改一个名字,但是自己要记得)在iis管理器中将主目录指向d:\inetpub;   
  其次,那个iis安装时默认的什么scripts等虚拟目录一概删除(罪恶之源呀,忘了http://www.target.com/scripts/..%c1%1c../winnt/system32/cmd.exe了?我们虽然已把inetpub从系统盘挪出来了,但是还是小心为上),假如您需要什么权限的目录能够自己慢慢建,需要什么权限开什么。(特别注意写权限和执行程式的权限,没有绝对的必要千万不要给)   
  3: 应用程式配置:   
  在iis管理器中删除必须之外的任何无用映射,必须指的是asp, asa和其他您确实需要用到的文档类型,例如您用到stml等(使用server side include),实际上90%的主机有了上面两个映射就够了,其余的映射几乎每个都有一个凄惨的故事:htw, htr, idq, ida……想知道这些故事?去查以前的漏洞列表吧。   
  什么?很难找到在哪里删?   
  在iis管理器中右击主机->属性->www服务 编辑->主目录 配置->应用程式映射,然后就开始一个个删吧(里面没有全选的,嘿嘿)。接着在刚刚那个窗口的应用程式调试书签内将脚本错误消息改为发送文本(除非您想asp出错的时候用户知道您的程式/网络/数据库结构)错误文本写什么?随便您喜欢,自己看着办。点击确定退出时别忘了让虚拟站点继承您设定的属性。   
  为了对付日益增多的cgi漏洞扫描器,更有一个小技巧能够参考,在iis中将http404 object not found出错页面通过url重定向到一个定制htm文档,能够让现在绝大多数cgi漏洞扫描器失灵。其实原因很简单,大多数cgi扫描器在编写时为了方便,都是通过查看返回页面的http代码来判断漏洞是否存在的,例如,著名的idq漏洞一般都是通过取1.idq来检验,假如返回http200,就认为是有这个漏洞,反之假如返回http404就认为没有,假如您通过url将http404出错信息重定向到http404.htm文档,那么任何的扫描无论存不存在漏洞都会返回http200,90%的cgi扫描器会认为您什么漏洞都有,结果反而掩盖了您真正的漏洞,让入侵者茫然无处下手(武侠小说中常说全身漏洞反而无懈可击,难道说的就是这个境界?)但是从个人角度来说,我还是认为扎扎实实做好安全配置比这样的小技巧重要的多。   
  最后,为了保险起见,您能够使用iis的备份功能,将刚刚的设定全部备份下来,这样就能够随时恢复iis的安全配置。更有,假如您怕iis负荷过高导致服务器满负荷死机,也能够在性能中打开cpu限制,例如将iis的最大cpu使用率限制在70%。    
  4.账号安全:   
  win2000的账号安全是另一个重点,首先,win2000的默认安装允许任何用户通过空用户得到系统任何账号/共享列表,这个本来是为了方便局域网用户共享文档的,但是个远程用户也能够得到您的用户列表并使用暴力法破解用户密码。很多朋友都知道能够通过更改注册表local_machine ystem\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,怎么办?我改改改,在电脑管理->用户账号中右击administrator然后改名,改成什么随便您,只要能记得就行了。 
  不对不对,我都已改了用户名了,怎么还是有人跑我管理员的密码?幸好我的密码够长,但是这也不是办法呀?嗯,那肯定是在本地或terminal service的登录界面看到的,好吧,我们再来把hkey_local_machine oftware\microsoft\ windowsnt\currentversion\winlogon项中的don’t display last user name串数据改成1,这样系统不会自动显示上次的登录用户名。   
  将服务器注册表hkey_local_ machine oftware\microsoft\ windowsnt\currentversion\winlogon项中的don‘t display last user name串数据修改为1,隐藏上次登陆控制台的用户名。   
  5.安全日志:   
  我碰到过这样的情况,一台主机被别人入侵了,系统管理员请我去追查凶手,我登录进去一看:安全日志是空的,倒,请记住:win2000的默认安装是不开任何安全审核的!那么请您到本地安全策略->审核策略中打开相应的审核,推荐的审核是:   
  账户管理 成功 失败   
  登录事件 成功 失败   
  对象访问 失败   
  策略更改 成功 失败  
  特权使用 失败   
  系统事件 成功 失败   
  目录服务访问 失败   
  账户登录事件 成功 失败   
  审核项目少的缺点是万一您想看发现没有记录那就一点都没辙;审核项目太多不但会占用系统资源而且会导致您根本没空去看,这样就失去了审核的意义。    
  和之相关的是:   
  在账户策略->密码策略中设定:   
  密码复杂性需要 启用   
  密码长度最小值 6位   
  强制密码历史 5次   
  最长存留期 30天   
  在账户策略->账户锁定策略中设定:   
  账户锁定 3次错误登录  
  锁定时间 20分钟   
  复位锁定计数 20分钟    
  同样,terminal service的安全日志默认也是不开的,我们能够在terminal service configration(远程服务配置)-权限-高级中配置安全审核,一般来说只要记录登录、注销事件就能够了。    
  6.目录和文档权限:    
   为了控制好服务器上用户的权限,同时也为了预防以后可能的入侵和溢出,我们还必须很小心地配置目录和文档的访问权限,nt的访问权限分为:读取、写入、读取及执行、修改、列目录、完全控制。在默认的情况下,大多数的文档夹对任何用户(everyone这个组)是完全敞开的(full control),您需要根据应用的需要进行权限重设。   
  在进行权限控制时,请记住以下几个原则:   
  1>限是累计的:假如一个用户同时属于两个组,那么他就有了这两个组所允许的任何权限;   
  2>拒绝的权限要比允许的权限高(拒绝策略会先执行)假如一个用户属于一个被拒绝访问某个资源的组,那么不管其他的权限配置给他开放了多少权限,他也一定不能访问这个资源。所以请很小心地使用拒绝,任何一个不当的拒绝都有可能造成系统无法正常运行;   
  3>文档权限比文档夹权限高(这个不用解释了吧?)   
  4>利用用户组来进行权限控制是个成熟的系统管理员必须具备的优良习惯之一;   
  5>仅给用户真正需要的权限,权限的最小化原则是安全的重要保障;    
  7:预防dos:   
  在注册表hklm ystem\currentcontrolset ervices\tcpip\parameters中更改以下值能够帮助您防御一定强度的dos攻击   
  synattackprotect reg_dword 2   
  enablepmtudiscovery reg_dword 0   
  nonamereleaseondemand reg_dword 1   
  enabledeadgwdetect reg_dword 0   
  keepalivetime reg_dword 300,000   
  performrouterdiscovery reg_dword 0   
  enableicmpredirects reg_dword 0    
  icmp攻击:icmp的风暴攻击和碎片攻击也是nt主机比较头疼的攻击方法,其实应付的方法也很简单,win2000自带一个routing & remote access工具,这个工具初具路由器的雏形(微软真是的,什么都要做?听说最近又要做防火墙了)在这个工具中,我们能够轻易的定义输入输出包过滤器,例如,设定输入icmp代码255丢弃就表示丢弃任何的外来icmp报文。 
  四、需要注意的一些事:   
  实际上,安全和应用在很多时候是矛盾的,因此,您需要在其中找到平衡点,毕竟服务器是给用户用而不是做open hack的,假如安全原则妨碍了系统应用,那么这个安全原则也不是个好的原则。网络安全是一项系统工程,他不但有空间的跨度,更有时间的跨度。很多朋友(包括部分系统管理员)认为进行了安全配置的主机就是安全的,其实这其中有个误区:我们只能说一台主机在一定的情况一定的时间上是安全的,随着网络结构的变化、新的漏洞的发现,管理员/用户的操作,主机的安全状况是随时随地变化着的,只有让安全意识和安全制度贯穿整个过程才能做到真正的安全。 

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅