Win2003服务器安全终级配置
演示一下服务器权限的设置，实现目标是系统盘任何一个目录asp网马不可以浏览,事件查看器完全无错,所有程序正常运行. 
这个不同于之前做的两个演示，此演示基本上保留系统默认的那些权限组不变，保留原味,以免取消不当造成莫名其妙的错误. 
看过这个演示，之前的"超详细web服务器权限设置,精确到每个文件夹"和"超详细web服务器权限设置,事件查看器完全无报错"就不用再看了.这个比原来做的有所改进.操作系统用的是雨林木风的ghost镜像,补丁是打上截止11.2号最新的 
Power Users组是否取消无所谓 
具体操作看演示 
windows下根目录的权限设置： 
C:\WINDOWS\Application Compatibility Scripts 不用做任何修改，包括其下所有子目录 
C:\WINDOWS\AppPatch    AcWebSvc.dll已经有users组权限,其它文件加上users组权限 
C:\WINDOWS\Connection Wizard    取消users组权限 
C:\WINDOWS\Debug users组的默认不改 
C:\WINDOWS\Debug\UserMode默认不修改有写入文件的权限,取消users组权限,给特别的权限，看演示 
C:\WINDOWS\Debug\WPD不取消Authenticated Users组权限可以写入文件，创建目录. 
C:\WINDOWS\Driver Cache取消users组权限,给i386文件夹下所有文件加上users组权限 
C:\WINDOWS\Help取消users组权限 
C:\WINDOWS\Help\iisHelp\common取消users组权限 
C:\WINDOWS\IIS Temporary Compressed Files默认不修改 
C:\WINDOWS\ime不用做任何修改，包括其下所有子目录 
C:\WINDOWS\inf不用做任何修改，包括其下所有子目录 
C:\WINDOWS\Installer   删除everyone组权限，给目录下的文件加上everyone组读取和运行的权限 
C:\WINDOWS\java   取消users组权限,给子目录下的所有文件加上users组权限 
C:\WINDOWS\MAGICSET 默认不变 
C:\WINDOWS\Media 默认不变 
C:\WINDOWS\Microsoft.NET不用做任何修改，包括其下所有子目录 
C:\WINDOWS\msagent 取消users组权限，给子目录下的所有文件加上users组权限 
C:\WINDOWS\msapps   不用做任何修改，包括其下所有子目录 
C:\WINDOWS\mui取消users组权限 
C:\WINDOWS\PCHEALTH    默认不改 
C:\WINDOWS\PCHEALTH\ERRORREP\QHEADLES 取消everyone组的权限 
C:\WINDOWS\PCHEALTH\ERRORREP\QSIGNOFF 取消everyone组的权限 
C:\WINDOWS\PCHealth\UploadLB 删除everyone组的权限，其它下级目录不用管，没有user组和everyone组权限 
C:\WINDOWS\PCHealth\HelpCtr    删除everyone组的权限，其它下级目录不用管，没有user组和everyone组权限(这个不用按照演示中的搜索那些文件了，不须添加users组权限就行) 
C:\WINDOWS\PIF   默认不改 
C:\WINDOWS\PolicyBackup默认不改,给子目录下的所有文件加上users组权限 
C:\WINDOWS\Prefetch   默认不改 
C:\WINDOWS\provisioning 默认不改,给子目录下的所有文件加上users组权限 
C:\WINDOWS\pss默认不改,给子目录下的所有文件加上users组权限 
C:\WINDOWS\RegisteredPackages默认不改,给子目录下的所有文件加上users组权限 
C:\WINDOWS\Registration\CRMLog默认不改会有写入的权限，取消users组的权限 
C:\WINDOWS\Registration取消everyone组权限.加NETWORK SERVICE 给子目录下的文件加everyone可读取的权限, 
C:\WINDOWS\repair取消users组权限 
C:\WINDOWS\Resources取消users组权限 
C:\WINDOWS\security users组的默认不改，其下Database和logs目录默认不改.取消templates目录users组权限,给文件加上users组 
C:\WINDOWS\ServicePackFiles    不用做任何修改，包括其下所有子目录 
C:\WINDOWS\SoftwareDistribution不用做任何修改，包括其下所有子目录 
C:\WINDOWS\srchasst   不用做任何修改，包括其下所有子目录 
C:\WINDOWS\system 保持默认 
C:\WINDOWS\TAPI取消users组权限，其下那个tsec.ini权限不要改 
C:\WINDOWS\twain_32取消users组权限，给目录下的文件加users组权限 
C:\WINDOWS\vnDrvBas   不用做任何修改，包括其下所有子目录 
C:\WINDOWS\Web取消users组权限给其下的所有文件加上users组权限 
C:\WINDOWS\WinSxS 取消users组权限，搜索*.tlb，*.policy，*.cat，*.manifest,*.dll，给这些文件加上everyone组和users权限 
给目录加NETWORK SERVICE完全控制的权限 
C:\WINDOWS\system32\wbem 这个目录有重要作用。如果不给users组权限，打开一些应用软件时会非常慢。并且事件查看器中有时会报出一堆错误。导致一些程序不能正常运行。但为了不让webshell有浏览系统所属目录的权限，给wbem目录下所有的*.dll文件users组和everyone组权限。 
*.dll 
users;everyone 
我先暂停。你操作时挨个检查就行了 
C:\WINDOWS\#$#%^$^@!#$%$^S#@\#$#$%$#@@@$%!!WERa   (我用的temp文件夹路径)temp由于必须给写入的权限，所以修改了默认路径和名称。防止webshell往此目录中写入。修改路径后要重启生效。 

至此，系统盘任何一个目录是不可浏览的，唯一一个可写入的C:\WINDOWS\temp，又修改了默认路径和名称变成C:\WINDOWS\#$#%^$^@!#$%$^S#@\#$#$%$#@@@$%!!WERa 
这样配置应该相对安全了些。 
我先去安装一下几款流行的网站程序，先暂停.几款常用的网站程序在这样的权限设置下完全正常。还没有装上sql2000数据库，无法测试动易2006SQL版了。肯定正常。大家可以试试。 
服务设置： 
1.设置win2k的屏幕保护,用pcanywhere的时候,有时候下线时忘记锁定计算机了，如果别人破解了你的pcanywhere密码，就直接可以进入你计算机，如果设置了屏保，当你几分钟不用后就自动锁定计算机，这样就防止了用pcanyhwerer直接进入你计算机的可能，也是防止内部人员破坏服务器的一个屏障 
2.关闭光盘和磁盘的自动播放功能，在组策略里面设.这样可以防止入侵者编辑恶意的autorun.inf让你以管理员的身份运行他的木马，来达到提升权限的目的。可以用net share 查看默认共享。由于没开server服务,等于已经关闭默认共享了,最好还是禁用server服务。 
附删除默认共享的命令： 
net share c$Content$nbsp;/del 
net share d$Content$nbsp;/del 
net share e$Content$nbsp;/del 
net share f$Content$nbsp;/del 
net share ipc$Content$nbsp;/del 
net share admin$Content$nbsp;/del 
3.关闭不需要的端口和服务，在网络连接里，把不需要的协议和服务都删掉，这里只安装了基本的Internet协议（TCP/IP），由于要控制带宽流量服务，额外安装了Qos数据包计划程序。在高级tcp/ip设置里--"NetBIOS"设置"禁用tcp/IP上的NetBIOS 。 
修改3389远程连接端口(也可以用工具修改更方便) 
修改注册表.   
开始--运行--regedit   
依次展开 HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTROLSET/CONTROL/   
TERMINAL SERVER/WDS/RDPWD/TDS/TCP   
右边键值中 PortNumber 改为你想用的端口号.注意使用十进制(例 1989 )   
HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTROLSET/CONTROL/TERMINAL SERVER/   
WINSTATIONS/RDP-TCP/   
右边键值中 PortNumber 改为你想用的端口号.注意使用十进制(例 1989 )   
注意：别忘了在WINDOWS2003自带的防火墙给+上10000端口 
修改完毕.重新启动服务器.设置生效. 
这里就不改了,你可以自己决定是否修改.权限设置的好后,个人感觉改不改无所谓 
4.禁用Guest账号   
在计算机管理的用户里面把Guest账号禁用。为了保险起见，最好给Guest加一个复杂的密码。你可以打开记事本，在里面输入一串包含特殊字符、数字、字母的长字符串，然后把它作为Guest用户的密码拷进去.我这里随便复制了一段文本内容进去. 
如果设置密码时提示：工作站服务没有启动     先去本地安全策略里把密码策略里启动密码复杂性给禁用后就可以修改了 
5.创建一个陷阱用户   
即创建一个名为“Administrator”的本地用户，把它的权限设置成最低，什么事也干不了的那种，并且加上一个超过10位的超级复杂密码。这样可以让那些 Hacker们忙上一段时间，借此发现它们的入侵企图。 
6.本地安全策略设置 
　　开始菜单—>管理工具—>本地安全策略 
　　A、本地策略——>审核策略   
　　审核策略更改　　　成功　失败　　 
　　审核登录事件　　　成功　失败 
　　审核对象访问　　　　　　失败 
     审核过程跟踪　　　无审核 
　　审核目录服务访问　　　　失败 
　　审核特权使用　　　　　　失败 
　　审核系统事件　　　成功　失败 
　　审核账户登录事件　成功　失败 
　　审核账户管理　　　成功　失败 
　　B、本地策略——>用户权限分配 
　　关闭系统：只有Administrators组、其它全部删除。   
　　通过终端服务允许登陆：只加入Administrators,Remote Desktop Users组，其他全部删除 
     运行 gpedit.msc 计算机配置 > 管理模板 > 系统 显示“关闭事件跟踪程序” 更改为已禁用 
     用户管理，建立另一个备用管理员账号，防止特殊情况发生。安装有终端服务与SQL服务的服务器停用TsInternetUser, sQLDebugger这两     个账号 
　　C、本地策略——>安全选项 
　　交互式登陆：不显示上次的用户名　　　　　　　启用 
　　网络访问：不允许SAM帐户和共享的匿名枚举　    启用 
　　网络访问：不允许为网络身份验证储存凭证　　　启用 
　　网络访问：可匿名访问的共享　　　　　　　　　全部删除 
　　网络访问：可匿名访问的命　　　　　　　　　　全部删除 
　　网络访问：可远程访问的注册表路径　　　　　　全部删除   
　　网络访问：可远程访问的注册表路径和子路径　　全部删除   
　　帐户：重命名来宾帐户　　　　　　　　　　　　重命名一个帐户   
　　帐户：重命名系统管理员帐户　　　　　　　　　重命名一个帐户 
7.禁止dump file的产生 
dump文件在系统崩溃和蓝屏的时候是一份很有用的查找问题的资料。然而，它也能够给黑客提供一些敏感 
信息比如一些应用程序的密码等。控制面板>系统属性>高级>启动和故障恢复把 写入调试信息 改成无。 
关闭华医生Dr.Watson 
在开始-运行中输入“drwtsn32”，或者开始-程序-附件-系统工具-系统信息-工具-Dr Watson，调出系统 
里的华医生Dr.Watson ，只保留“转储全部线程上下文”选项，否则一旦程序出错，硬盘会读很久，并占 
用大量空间。如果以前有此情况，请查找user.dmp文件，删除后可节省几十MB空间。

在命令行运行drwtsn32 -i 可以直接关闭华医生,普通用户没什么用处 
8.禁用不必要的服务 开始-运行-services.msc 
     TCP/IPNetBIOS Helper提供 TCP/IP 服务上的 NetBIOS 和网络上客户端的 NetBIOS 名称解析的支持而使用户能够共享 
     文件、打印和登录到网络 
     Server支持此计算机通过网络的文件、打印、和命名管道共享 
　　Computer Browser 维护网络上计算机的最新列表以及提供这个列表   
     Task scheduler 允许程序在指定时间运行   
     Messenger 传输客户端和服务器之间的 NET SEND 和 警报器服务消息   
　　Distributed File System: 局域网管理共享文件，不需要可禁用   
　　Distributed linktracking client：用于局域网更新连接信息，不需要可禁用   
　　Error reporting service：禁止发送错误报告   
　　Microsoft Serch：提供快速的单词搜索，建议禁用****不禁用移动*.msc文件后启动系统时会报错。禁用后没影响   
　　NTLMSecuritysupportprovide：telnet服务和Microsoft Serch用的，不需要可禁用   
　　PrintSpooler：如果没有打印机可禁用   
　　Remote Registry：禁止远程修改注册表   
　　Remote Desktop Help Session Manager：禁止远程协助   
     Workstation    关闭的话远程NET命令列不出用户组 
　　以上是在Windows Server 2003 系统上面默认启动的服务中禁用的，默认禁用的服务如没特别需要的话不要启动。 
看下我开了些什么服务,大家可以参考设置一下.如果把不该禁用的服务禁了，事件查看器可能会出现一些报错. 
9.设置IP筛选，只开放你所要用到的端口，这样可以防止别人的木马程序连接，因为任何一个网络程序要和你服务器通信，都要通过端口。查看本机所开的端口是用netstat -na 命令,这儿我们开放了80 1989 21 1433(sqlserver),5631(pcanywhere)和ip6端口,这样设置后，一般的后门程序就无法连接到本机了，注意要重新启动了才有效果 
附常用服务的各个端口： 
IIS 80 
FTP 21 启用后需要FTP客户端关闭PSAV才能连接 
SMTP 25 
POP3 110 
MS SQL 1433 
Mysql 3306 
PcAnywhere 5631 
Windows远程客户端 3389 
10.修改相关注册表，个人感觉这样的效果不大。没去修改，仅供参考： 
A、防止SYN洪水攻击   
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters   
新建DWORD值，名为SynAttackProtect，值为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 03. 禁止响应ICMP路由通告报文   
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface   
新建DWORD值，名为PerformRouterDiscovery 值为0   
B、防止ICMP重定向报文的攻击   
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters   
将EnableICMPRedirects 值设为0   
C、不支持IGMP协议   
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters   
新建DWORD值，名为IGMPLevel 值为0 
D、禁止IPC空连接： 
cracker可以利用net use命令建立空连接，进而入侵，还有net view，nbtstat这些都是基于空连接的，禁止空连接就好了。 
Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous 把这个值改成”1”即可。 
E、更改TTL值 
cracker可以根据ping回的TTL值来大致判断你的操作系统，如：   
TTL=107(WINNT);   
TTL=108(win2000);   
TTL=127或128(win9x);   
TTL=240或241(linux);   
TTL=252(solaris);   
TTL=240(Irix);   
实际上你可以自己改的：HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters：DefaultTTL REG_DWORD 0-0xff(0-255 十进制,默认值128)改成一个莫名其妙的数字如250 
11.把系统Administrator账号改名,我的已经改成了 中央人民政府 。可以把硬盘的其它分区或重要目录设置成仅这个用户可以访问。这样即使入侵者把自己提升成了超级管理员组成员。也无法访问这些地方。 将Administrators组改名为其他，这样即使系统出现了溢出漏洞，但系统盘下的net.exe程序已被转移删除，想加入管理员组基本难以实现。何况Administrators组已被改名，用那个net localgroup administrators xxx /add，不知道管理员组的名字，会提示指定的本地组不存在。这样即使net命令可用也加不上了。 
最后给你的管理员帐户设定一个非常复杂的密码. 
设置本地用户帐号，把管理员和来宾帐号重新命名，禁止不必用的帐号，最好还要建立一个管理员备用帐号,以防万一(提示：养成经常看一看本地用户帐号属性的习惯，以防后门帐号) 
12.控制面板的设置： 
修改*.cpl(控制面板文件)的权限为只有管理员可以访问 
移动所有*.msc（管理控制台文件)到你的一个固定目录，并设置这个目录的访问权限(只有管理员可以防问，比如上面11中说的，把这个目录加上只有中央人民政府这个用户可以访问.这样就是别人进入你服务器也没办法操作,还有就是把net.exe改名或者移动.搜索net.exe;net1.exe只给管理员可以访问的权限 
设置arp.exe;attrib.exe;cmd.exe;format.com;ftp.exe;tftp.exe;net.exe;net1.exe;netstat.exe;ping.exe;regedit.exe;regsvr32.exe;telnet.exe;xcopy.exe;at.exe的权限只有管理员权限可以访问(注意net1.exe与net同样作用)搜索这些文件时注意选择其它高级选项，勾选搜索隐藏的文件和文件夹。 
13.卸载wscript.shell对象(强烈建议卸载.命令行执行组件.可以通过上传cmd.exe到网站目录下或直接调用服务器上的从而运行相关命令) 
在cmd下运行：regsvr32 WSHom.Ocx    /u 
    卸载FSO对象(不建议卸载.文件操作组件.一般虚拟主机服务提供商都开放着,禁用后一些asp程序不能正常运行) 
在cmd下运行：regsvr32.exe scrrun.dll /u 
禁用Workstation服务,如果不禁用,asp网马可以查看系统用户与服务,知道你的所有用户名称 
14.IIS站点设置： 
1、将IIS目录数据与系统磁盘分开，保存在专用磁盘空间内。 
2、启用父级路径 
3、在IIS管理器中删除必须之外的任何没有用到的映射(保留asp等必要映射即可) 
4、在IIS中将HTTP404 Object Not Found出错页面通过URL重定向到一个定制HTM文件 
5、Web站点权限设定(建议) 
读                  允许 
写                  不允许 
脚本源访问         不允许 
目录浏览         建议关闭 
日志访问         建议关闭 
索引资源         建议关闭 
执行              推荐选择 “仅限于脚本” 
经过以上的设置后，服务器基本上已经安全了。注意常更新系统安全补丁，关注一些最新漏洞的危害，并做相应的预防。好了，结束。
