来源(豆豆技术网制作)

From: http://www.ddhome.net/safe/syssafe/21.htm

IIS服务器检查列表

豆豆技术网制作 legume 制作 修改于:2003-4-7 投稿信箱:web@ddhome.net

1.--首先要注意以下讲述的内容有些是在成员服务器里安全检查列表中已经描述过的,所以在下面就这些重复的内容将一句话带过。
2.--定制你的安全策略,阅读IIS资源手册中关于安全的部分,订阅microsoft的安全公告板。
3.--安装最新的Service Pack和Hot-Fix,格式化硬盘为NTFS,设置NTFS的ACL,删除OS/2和POSIX子系统,审核那些失败的登陆信息,隐藏最后登陆名,登陆窗口屏蔽关机键,设置密码长度,改变Administrator帐户的名字,给Admin帐户设置一个十分强壮的密码,防止未经授权的访问Registry,,运行SAM加密工具Syskey,解除NetBIOS协议。

4.--关闭NTFS 8.3的命名系统,NTFS自动执行8.3文件名的命名,这是为了和以前的软件的兼容,如果把他关闭,这样会更安全一些,需要修改下表的Registry.
Hive --HKEY_LOCAL_MACHINE\SYSTEM
Key --\CurrentControlSet\Control\FileSystem
Name --NtfsDisable8dot3NameCreation
Type --REG_DWORD
Value --1

5.设置域控制器的类型,一般情况下设置IIS服务器为独立服务器,这样就把暴露全域用户的可能性降低到最少。

6.删除所有的网络共享,你可以通过命令 net share /d 来删除共享,对于那些重新启动就自动安装的管理用共享例如ADMIN$,C$,D$等等可以通过修改下面的键值来实现。
Hive --HKEY_LOCAL_MACHINE\SYSTEM
Key --CurrentControlSet\Services\LanmanServer\Parameters
Name --AutoShareServer
Type --REG_DWORD
Value --0

7.--设置系统启动等待时间为零,控制面板---系统---启动/关闭中设置
8.--查组,成员,和特权的发放,特别是调试,备份等特权。通常情况下是下列的特权颁发需要注意:
Access this computer from network------你信任的并且需要这个服务的用户。
Act as part of the operating system------不要付与任何用户
Add workstation to domain------域管理员
Backup files and Directories-----你信任的用户(Backup operators)
ByPass Traverse checking------认证用户
Change the system time-------你信任的用户(server operators)
Create a Pagefile--------你信任的用户(server operators)
Creat a token Object--------不要付与任何用户
Creat Permanent shared objects-------no one
DEBUG programs--------no one
Force shutdown from remote sys------信任的用户(server operators)
Generate security audits-------不要付与任何用户
Increase quotas-------信任的用户(server operators)
Increase scheduling priority------信任的用户(server operators)
Load and unload device driver-----信任的用户(server operators)
Lock pages in memory-----no one
Log on as batch job------信任的用户
Log on as service-------信任的用户
Log on locally--------信任的用户
Manage auditing and security log-------信任的用户(Domain admins)
Modify firmware environment value------信任的用户(Domain admins)
Profile single process----信任的用户
Profile system performance---信任的用户
Replace a process level token----不要付与任何用户
Restore files and directories----信任的用户(Backup operators)
Shutdown the system-------信任的用户(server operators)
Take ownship of files and objects-----信任的用户(Domain admins)

9.--设置administrator网络安全,缺省情况下,administrator帐户在受到字典攻击的时候是不能锁定帐户的,但是在NT的资源工具箱里有个工具Passprop可以实现这个功能,而且administrator本地登陆没有影响。

10.--限制匿名网络访问,NT有个特征就是允许没有经过认证的用户来列举NT域中的用户,下面的修改可以改变这个缺省设定。
Hive --HKEY_LOCAL_MACHINE\SYSTEM
Key --CurrentControlSet\Control\LSA
Name --RestrictAnonymous
Type --REG_DWORD
Value --1

11.--观察下列registry并且设定合适的权限,下表的注册表一般被用来安放木马程序,所以合适的权限应该是administrator(full control), system(full control),creator owner(full control),everyone(read).
HiveKey --HKEY_LOCAL_MACHINE\SOFTWAREMicrosoft\Windows\CurrentVersion\Run
Hive Key --HKEY_LOCAL_MACHINE\SOFTWAREMicrosoft\Windows\CurrentVersion\RunOnce
HiveKey --HKEY_LOCAL_MACHINE\SOFTWAREMicrosoft\Windows\CurrentVersion\RunOnceEx
Hive Key --HKEY_LOCAL_MACHINE\SOFTWAREMicrosoft\Windows NT\CurrentVersion\AeDebug
Hive Key --HKEY_LOCAL_MACHINE\SOFTWAREMicrosoft\Windows NT\CurrentVersion\WinLogon

12.改变可以匿名从网络访问机器的策略到只有经过认证的用户才能从网络上访问机器。可以通过用户管理器----策略-----用户权力,选择从网络访问本机,然后删除everyone组,加入认证用户。

13.--闭ip routing,开启它你要承担Internet和Intranet之间传输数据的风险。

14.--开启一个简单的ip过滤,控制面板----网络-----协议----TCP/IP—高级----安全选项来设置,一般是下面的规则,只允许TCP协议的80和443端口开放(如果有SSL服务的话),不开放任何的UDP端口,只允许通过IP协议6(也就是TCP)。

15.--把一些常用的管理员工具放入一个设定好的目录,赋予这个目录只有管理员才能full control,下面是这些工具的列表。
xcopy.exe--wscript.exe--cscript.exe--net.exe--ftp.exe--telnet.exe
arp.exe--edlin.exe--ping.exe--route.exe--at.exe--finger.exe
posix.exe--rsh.exe--atsvc.exe--qbasic.exe--runonce.exe--syskey.exe
cacls.exe--ipconfig.exe--rcp.exe--secfixup.exe--nbtstat.exe--rdisk.exe
debug.exe--regedt32.exe--regedit.exe--edit.com--netstat.exe--tracert.exe
nslookup.exe--rexec.exe--cmd.exe-- -- --

16.--在你管理多个WEB服务器的时候,同步时间。

17.--删除不必要的ODBC和OLE-Db数据源和驱动。

18.--装最小化的internet服务,要使IIS正常运做,以下的服务是必须的:Event Log ,License Logging Service ,Windows NTLM Security Support Provider ,Remote Procedure Call (RPC) Service ,Windows NT Server or Windows NT Workstation ,IIS Admin Service ,MSDTC ,World Wide Web Publishing Service ,Protected Storage

19.--设置适当的认证方法,IIS支持的认证有Anonymous,basic, Windows NT Challenge/Response, Client Certificates。

20.--设置适当的虚拟目录和WEB程序目录的权限
File Type --ACL
CGI etc .EXE, .DLL, .CMD, .PL --Everyone (RX) Administrators (Full Control) System (Full Control)
Script Files .ASP etc --Everyone (RX) Administrators (Full Control) System (Full Control)
Include Files .INC, .SHTML, .SHTM --Everyone (RX) Administrators (Full Control) System (Full Control)
Static Content .HTML, .GIF, .JPEG --Everyone (R) Administrators (Full Control) System (Full Control)
不同的内容应该使用不同的目录和权限,下面的目录设置只是一个小示范。
c:\inetpub\wwwroot\myserver\static (.html)
c:\inetpub\wwwroot\myserver\include (.inc)
c:\inetpub\wwwroot\myserver\script (.asp)
c:\inetpub\wwwroot\myserver\executable (.dll)
c:\inetpub\wwwroot\myserver\images (.gif, .jpeg)
当然还有FTP和SMTP服务的目录也要密切注意,最好把他们放到另外的地方,因为他们的缺省的权限是everyone(full control)。

21.--设置适当的IIS日志文件的权限,对于IIS产生的日志(%systemroot%\system32\LogFiles)设定他的文件权限为administrators(fullcontrol),system(fullcontrol),everyone(RWC)。这个步骤将防止一些有恶意的用户通过删除日志信息来掩盖他的记录。
22.--开启IIS日志系统.

23.--可以通过MMC来设定某些IP地址或者FQDN名的机器不能访问这台机器,这种方法对一些已经确认的怀有恶意的远程用户是有效而且简便的方法。

24.--确定可执行的文件内容是否能被信赖,使用命令dumpbin可以检查Myisapi.dll是否有RevertToSelf():

25.--检查确认index server只是index文挡,而不是什么机密的核心代码。

26.--对Certificate server的asp登记页面进行权限检查,一般情况下这个目录%systemroot%/certsrv的权限是administrators(full control),certificate issuers(full control),system(full control),当然还要加入你信任的证书发行组和发行员。

27.--删除所有的例子文件,都是以下的一些目录。
Technology --Location
IIS --c:\inetpub\iissamples
IIS SDK --c:\inetpub\iissamples\sdk
Admin Scripts --c:\inetpub\AdminScripts
Data access --c:\Program Files\Common Files\System\msadc\Samples

28.--移除或关闭一些不需要的COM组成。

29.--移除IISADMPWD虚拟目录。

30.--移除对你没有用处的脚本影射,可以在MMC---WEB服务器---属性---主要属性----WEB服务---修改----家目录,然后就可以设置和删除下表提到的了。
If you don't use --Remove this entry
Web-based Password Reset --.htr
Internet Database Connector (new Web sites don't use this, they use ADO from Active Server Pages) --.idc
Server-side includes --.shtm, .stm, .shtml

31.--使..失效,缺省情况下符号“..”是被支持的,“..”代表父目录,我们可以通过设置使..不被支持,WEB服务器----属性----家目录----配置----应用选项就可以把这个父目录检查给废除掉。

32.--网页中的#EXEC可以用来执行任意的命令,你可以通过修改registry来屏蔽这个功能。
Hive --HKEY_LOCAL_MACHINE\SYSTEM
Key --CurrentControlSet\Services\W3SVC\Parameters
Name --SSIEnableCmdDirective
Type --REG_DWORD
Value --0

33.关闭RDS支持,这是十分重要的设置,错误的设置Remote Data Service服务将导致远程执行攻击和拒绝服务攻击,你可以移除这个能力,或者限制它的使用范围。可以通过下面的语句在log中查找攻击者的蛛丝马迹。
1999-10-24 20:38:12 - POST /msadc/msadcs.dll

34.检查在ASP代码中的
input格式,由于对ASP代码我不太熟悉,所以在这里就不在详细叙述了,但是你可以自己通过下面的地址来找到一些资料。
http://msdn.microsoft.com/workshop/languages/clinic/scripting051099.asp
http://www.microsoft.com/jscript

35.HTTP 头中的content-location可能暴露内部ip地址,在你使用NAT或者proxy的时候转发对WEB页面的请求的时候,内部网络的WEB服务器发出的回应中并没有改变HTTP头中的IP地址一栏。例如以下输出就是一个例子:
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Content-Location: http://10.1.1.1/Default.htm
Date: Thu, 18 Feb 1999 14:03:52 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Wed, 06 Jan 1999 18:56:06 GMT
ETag: "067d136a639be1:15b6"
Content-Length: 4325

解决方案可以是通过adsutil.vbs来转换HTTP头中的IP地址为FQDN,但是要注意,不正确使用这个工具可能会带来严重的问题,使得你不得不重新安装IIS,而且Microsoft不对使用这个工具后所产生的后果进行任何的担保。
首先你要开一个命令窗口CMD.然后转换目录到WINNT\system32\inetsrv\adminsamples,接着键入下面的语句adsutil set w3svc/usehostname true。缺省情况下这个值是false的,使这个值成为true以后就可以使得FQDN来代替IP地址了,当然我们推荐重新开始inetinfo service,可以通过下面的命令来实现net stop iisadmin /y关闭服务,然后再使用net start w3svc。
还有一句要提醒一下IIS 5.0的修改方法和这个方法类似,但是所使用的目录变成了inetpub\adminscripts。

Link: http://www.asm32.net/article_details.aspx?id=1462