系统安全之Win2000Server安全配置入门

 
系统安全之 Win2000Server 安全配置入门
 
目前,Windows2000 SERVER是比较流行的服务器操作系统之一,但是要想安全的配置微软的这个操作系统,却不是一件容易的事。本文试图对Windows2000 SERVER的安全配置进行初步的探讨。
 
一、 定制自己的Windows2000 SERVER
 
1.     版本的选择:
Windows2000有各种语言的版本,对于我们来说,可以选择英文版或简体中文版,我强烈建议:在语言不成为障碍的情况下,请一定使用英文版。要知道,微软的产品是以Bug & Patch而著称的,中文版的Bug远远多于英文版,而补丁一般还会迟至少半个月(也就是说一般微软公布了漏洞后你的机子还会有半个月处于无保护状况)
 
2.     组件的定制:
Windows2000在默认情况下会安装一些常用的组件,但是正是这个默认安装是极度危险的(米特尼科说过,他可以进入任何一台默认安装的服务器,我虽然不敢这么说,不过如果你的主机是Windows2000 SERVER的默认安装,我可以告诉你,你死定了)你应该确切的知道你需要哪些服务,而且仅仅安装你确实需要的服务,根据安全原则,最少的服务+最小的权限=最大的安全。典型的WEB服务器需要的最小组件选择是:只安装IIS的Com Files,IIS Snap-In,WWW Server组件。如果你确实需要安装其他组件,请慎重,特别是:Indexing Service, FrontPage 2000 Server Extensions, Internet Service Manager (HTML)这几个危险服务。
 
3. 管理应用程序的选择
 
选择一个好的远程管理软件是非常重要的事,这不仅仅是安全方面的要求,也是应用方面的需要。Windows2000的Terminal Service是基于RDP(远程桌面协议)的远程控制软件,他的速度快,操作方便,比较适合用来进行常规操作。但是,Terminal Service也有其不足之处,由于它使用的是虚拟桌面,再加上微软编程的不严谨,当你使用Terminal Service进行安装软件或重起服务器等与真实桌面交互的操作时,往往会出现哭笑不得的现象,例如:使用Terminal Service重起微软的认证服务器(Compaq, IBM等)可能会直接关机。所以,为了安全起见,我建议你再配备一个远程控制软件作为辅助,和Terminal Service互补,象PcAnyWhere就是一个不错的选择。
 
二、 正确安装Windows2000 SERVER
 
1. 分区和逻辑盘的分配
有一些朋友为了省事,将硬盘仅仅分为一个逻辑盘,所有的软件都装在C驱上,这是很不好的,建议最少建立两个分区,一个系统分区,一个应用程序分区,这是因为,微软的IIS经常会有泄漏源码/溢出的漏洞,如果把系统和IIS放在同一个驱动器会导致系统文件的泄漏甚至入侵者远程获取ADMIN。推荐的安全配置是建立三个逻辑驱动器,第一个大于2G,用来装系统和重要的日志文件,第二个放IIS,第三个放FTP,这样无论IIS或FTP出了安全漏洞都不会直接影响到系统目录和系统文件。要知道,IIS和FTP是对外服务的,比较容易出问题。而把IIS和FTP分开主要是为了防止入侵者上传程序并从IIS中运行。(这个可能会导致程序开发人员和编辑的苦恼,管他呢,反正你是管理员J)
 
2.安装顺序的选择:不要觉得:顺序有什么重要?只要安装好了,怎么装都可以的。错!Windows2000在安装中有几个顺序是一定要注意的:
 
首先,何时接入网络:Windows2000在安装时有一个漏洞,在你输入Administrator密码后,系统就建立了ADMIN$的共享,但是并没有用你刚刚输入的密码来保护它,这种情况一直持续到你再次启动后,在此期间,任何人都可以通过ADMIN$进入你的机器;同时,只要安装一完成,各种服务就会自动运行,而这时的服务器是满身漏洞,非常容易进入的,因此,在完全安装并配置好Windows2000 SERVER之前,一定不要把主机接入网络。
 
其次,补丁的安装:补丁的安装应该在所有应用程序安装完之后,因为补丁程序往往要替换/修改某些系统文件,如果先安装补丁再安装应用程序有可能导致补丁不能起到应有的效果,例如:IIS的HotFix就要求每次更改IIS的配置都需要安装(变不变态?)
 
三、 安全配置Windows2000 SERVER
 
即使正确的安装了Windows2000 SERVER,系统还是有很多的漏洞,还需要进一步进行细致地配置。
 
1. 端口:
端口是计算机和外部网络相连的逻辑接口,也是计算机的第一道屏障,端口配置正确与否直接影响到主机的安全
 
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.账号安全:
 
Windows2000的账号安全是另一个重点,首先,Windows2000的默认安装允许任何用户通过空用户得到系统所有账号/共享列表,这个本来是为了方便局域网用户共享文件的,但是一个远程用户也可以得到你的用户列表并使用暴力法破解用户密码。很多朋友都知道可以通过更改注册表Local_Machine/System/CurrentControlSet/Control/LSA-RestrictAnonymous = 1来禁止139空连接,实际上Windows2000的本地安全策略(如果是域服务器就是在域服务器安全和域安全策略中)就有这样的选项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这个值是在Windows2000中才支持的,需要注意的是,如果你一旦使用了这个值,你的共享估计就全部完蛋了,所以我推荐你还是设为1比较好。
 
好了,入侵者现在没有办法拿到我们的用户列表,我们的账户安全了……慢着,至少还有一个账户是可以跑密码的,这就是系统内建的administrator,怎么办?我改改改,在计算机管理->用户账号中右击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,隐藏上次登陆控制台的用户名。(哇,世界清静了)
 
5.安全日志:我遇到过这样的情况,一台主机被别人入侵了,系统管理员请我去追查凶手,我登录进去一看:安全日志是空的,倒,请记住:Windows2000的默认安装是不开任何安全审核的!那么请你到本地安全策略->审核策略中打开相应的审核,推荐的审核是:
账户管理 成功 失败
 
登录事件 成功 失败
 
对象访问 失败
 
策略更改 成功 失败
 
特权使用 失败
 
系统事件 成功 失败
 
目录服务访问 失败
 
账户登录事件 成功 失败
 
审核项目少的缺点是万一你想看发现没有记录那就一点都没辙;审核项目太多不仅会占用系统资源而且会导致你根本没空去看,这样就失去了审核的意义。
 
与之相关的是:
 
在账户策略->密码策略中设定:
 
密码复杂性要求 启用
 
密码长度最小值 6位
 
强制密码历史 5次
 
最长存留期 30天
 
在账户策略->账户锁定策略中设定:
 
账户锁定 3次错误登录
 
锁定时间 20分钟
 
复位锁定计数 20分钟
 
同样,Terminal Service的安全日志默认也是不开的,我们可以在Terminal Service Configration(远程服务配置)-权限-高级中配置安全审核,一般来说只要记录登录、注销事件就可以了。
 
6.目录和文件权限:
 
为了控制好服务器上用户的权限,同时也为了预防以后可能的入侵和溢出,我们还必须非常小心地设置目录和文件的访问权限,NT的访问权限分为:读取、写入、读取及执行、修改、列目录、完全控制。在默认的情况下,大多数的文件夹对所有用户(Everyone这个组)是完全敞开的(Full Control),你需要根据应用的需要进行权限重设。
 
在进行权限控制时,请记住以下几个原则:
 
(1)、 权限是累计的:如果一个用户同时属于两个组,那么他就有了这两个组所允许的所有权限;
 
(2)、 拒绝的权限要比允许的权限高(拒绝策略会先执行)如果一个用户属于一个被拒绝访问某个资源的组,那么不管其他的权限设置给他开放了多少权限,他也一定不能访问这个资源。所以请非常小心地使用拒绝,任何一个拒绝;
 
(3)、 文件权限比文件夹权限高(这个不用解释了吧?)
 
(4)、 利用用户组来进行权限控制是一个成熟的系统管理员必须具有的优良习惯之一;
 
(5)、 仅给用户真正需要的权限,权限的最小化原则是安全的重要保障;
 
(6)、 预防DoS。
 
在注册表HKLM/SYSTEM/CurrentControlSet/Services/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 主机比较头疼的攻击方法,其实应付的方法也很简单, Windows2000 自带一个 Routing & Remote Access 工具,这个工具初具路由器的雏形(微软真是的,什么都要做?听说最近又要做防火墙了)在这个工具中,我们可以轻易的定义输入输出包过滤器,例如,设定输入 ICMP 代码 255 丢弃就表示丢弃所有的外来 ICMP 报文(让你炸?我丢、丢、丢) 
Windows 2000 安全配置 本模块内容 目标 适用范围 如何使用本模块 内置组 帐户策略 本地策略 其他安全设置 其他注册表设置 删除 OS/2 和 POSIX 子系统 限制空话访问 限制对已命名管道和共享空话访问 从网络浏览列表中隐藏该计算机 Service Pack 3 注册表项 移除默认的 IPSec 免除 更改 DLL 搜索顺序 防止应用程序生成的输入干扰话锁 当审核日志满到一定百分比阈值时生成审核事件 强化 TCP/IP 堆栈以防止拒绝服务攻击 检查时间服务身份验证 禁止 LMHash 创建 禁用自动运行 LDAP 绑定命令请求设置 当审核日志满时生成管理警报 关闭文件夹中的 Web 视图 加强 NTLM SSP 审核日志管理 默认组帐户 默认用户帐户 系统服务 确保文件系统安全 共享文件夹权限 确保注册表的安全 IPSec 策略 对文件系统加密 启用自动屏幕锁定保护 更新系统紧急修复盘 参考 本模块内容 本模块详细介绍了可完善 Microsoft® Windows® 2000 操作系统安全性的各种安全设置。模块中的表格描述了各设置所能达到的安全目标,以及实现这些目标所需采取的配置操作。其中的设置是按照 SCE 界面中的类别分类的。 返回页首 目标 使用本模块可以实现: • 识别可确保 Windows 2000 系统安全的策略设置。 • 找到可确保 Windows 2000 系统安全的注册表设置。 • 安全配置 Windows 2000 系统以实现其网络角色。 • 找到有关 Windows 2000 安全性的参考资料。 返回页首 适用范围 本模块适用于下列产品和技术: • Microsoft Windows 2000 操作系统安全性 • 组策略 • 安全模板 • Microsoft Windows 2000 Professional 操作系统 • 域成员工作站 • 域成员便携式计算机 • 独立工作站 • Microsoft Windows 2000 Server操作系统 • 域控制器 • 域成员服务器 • 独立服务器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值