IIS安全配置教程

原理篇

我们将从***者***的各个环节来作出对应措施
一步步的加固windows系统.
加固windows系统.一共归于几个方面
1.端口限制
2.设置ACL权限
3.关闭服务或组件
4.包过滤
5.审计

我们现在开始从***者的第一步开始.对应的开始加固已有的windows系统.

1.扫描
这是***者在刚开始要做的第一步.比如搜索有漏洞的服务.
对应措施:端口限制
以下所有规则.都需要选择镜像,否则会导致无法连接
我们需要作的就是打开服务所需要的端口.而将其他的端口一律屏蔽

2.下载信息
这里主要是通过URL SCAN.来过滤一些非法请求
对应措施:过滤相应包
我们通过安全URL SCAN并且设置urlscan.ini中的DenyExtensions字段
来阻止特定结尾的文件的执行

3.上传文件
***者通过这步上传WEBSHELL,提权软件,运行cmd指令等等.
对应措施:取消相应服务和功能,设置ACL权限
如果有条件可以不使用FSO的.
通过 regsvr32 /u c:\windows\system32\scrrun.dll来注销掉相关的DLL.
如果需要使用.
那就为每个站点建立一个user用户
对每个站点相应的目录.只给这个用户读,写,执行权限,给administrators全部权限
安装杀毒软件.实时杀除上传上来的恶意代码.
个人推荐MCAFEE或者卡巴斯基
如果使用MCAFEE.对WINDOWS目录所有添加与修改文件的行为进行阻止.

4.WebShell
***者上传文件后.需要利用WebShell来执行可执行程序.或者利用WebShell进行更加方便的文件操作.
对应措施:取消相应服务和功能
一般WebShell用到以下组件
WScript.Network
WScript.Network.1
WScript.Shell
WScript.Shell.1
Shell.Application
Shell.Application.1
我们在注册表中将以上键值改名或删除
同时需要注意按照这些键值下的CLSID键的内容
从/HKEY_CLASSES_ROOT/CLSID下面对应的键值删除

5.执行SHELL
***者获得shell来执行更多指令
对应措施:设置ACL权限
windows的命令行控制台位于\WINDOWS\SYSTEM32\CMD.EXE
我们将此文件的ACL修改为
某个特定管理员帐户(比如administrator)拥有全部权限.
其他用户.包括system用户,administrators组等等.一律无权限访问此文件.

6.利用已有用户或添加用户
***者通过利用修改已有用户或者添加windows正式用户.向获取管理员权限迈进
对应措施:设置ACL权限.修改用户
将除管理员外所有用户的终端访问权限去掉.
限制CMD.EXE的访问权限.
限制SQL SERVER内的XP_CMDSHELL

7.登陆图形终端
***者登陆TERMINAL SERVER或者RADMIN等等图形终端,
获取许多图形程序的运行权限.由于WINDOWS系统下绝大部分应用程序都是GUI的.
所以这步是每个***WINDOWS的***者都希望获得的
对应措施:端口限制
***者可能利用3389或者其他的***之类的获取对于图形界面的访问.
我们在第一步的端口限制中.对所有从内到外的访问一律屏蔽也就是为了防止反弹***.
所以在端口限制中.由本地访问外部网络的端口越少越好.
如果不是作为MAIL SERVER.可以不用加任何由内向外的端口.
阻断所有的反弹***.

8.擦除脚印
***者在获得了一台机器的完全管理员权限后
就是擦除脚印来隐藏自身.
对应措施:审计
首先我们要确定在windows日志中打开足够的审计项目.
如果审计项目不足.***者甚至都无需去删除windows事件.
其次我们可以用自己的cmd.exe以及net.exe来替换系统自带的.
将运行的指令保存下来.了解***者的行动.
对于windows日志
我们可以通过将日志发送到远程日志服务器的方式来保证记录的完整性.
evtsys工具( [url]https://engineering.purdue.edu/ECN/Resources/Documents[/url] )
提供将windows日志转换成syslog格式并且发送到远程服务器上的功能.
使用此用具.并且在远程服务器上开放syslogd,如果远程服务器是windows系统.
推荐使用kiwi syslog deamon.

我们要达到的目的就是
不让***者扫描到主机弱点
即使扫描到了也不能上传文件
即使上传文件了不能操作其他目录的文件
即使操作了其他目录的文件也不能执行shell
即使执行了shell也不能添加用户
即使添加用户了也不能登陆图形终端
即使登陆了图形终端.拥有系统控制权.他的所作所为还是会被记录下来.

额外措施:
我们可以通过增加一些设备和措施来进一步加强系统安全性.
1.代理型防火墙.如ISA2004
代理型防火墙可以对进出的包进行内容过滤.
设置对HTTP REQUEST内的request string或者form内容进行过滤
将SELECT.DROP.DELETE.INSERT等都过滤掉.
因为这些关键词在客户提交的表单或者内容中是不可能出现的.
过滤了以后可以说从根本杜绝了SQL 注入
2.用SNORT建立IDS
用另一台服务器建立个SNORT.
对于所有进出服务器的包都进行分析和记录
特别是FTP上传的指令以及HTTP对ASP文件的请求
可以特别关注一下.

本文提到的部分软件在提供下载的RAR中包含
包括COM命令行执行记录
URLSCAN 2.5以及配置好的配置文件
IPSEC导出的端口规则
evtsys
一些注册表加固的注册表项.

实践篇

下面我用的例子.将是一台标准的虚拟主机.
系统:windows2003
服务:[IIS] [SERV-U] [IMAIL] [SQL SERVER 2000] [PHP] [MYSQL]
描述:为了演示,绑定了最多的服务.大家可以根据实际情况做筛减

1.WINDOWS本地安全策略 端口限制
A.对于我们的例子来说.需要开通以下端口
外->本地 80
外->本地 20
外->本地 21
外->本地 PASV所用到的一些端口
外->本地 25
外->本地 110
外->本地 3389
然后按照具体情况.打开SQL SERVER和MYSQL的端口
外->本地 1433
外->本地 3306
B.接着是开放从内部往外需要开放的端口
按照实际情况,如果无需邮件服务,则不要打开以下两条规则
本地->外 53 TCP,UDP
本地->外 25
按照具体情况.如果无需在服务器上访问网页.尽量不要开以下端口
本地->外 80
C.除了明确允许的一律阻止.这个是安全规则的关键.
外->本地 所有协议 阻止

2.用户帐号
a.将administrator改名,例子中改为root
b.取消所有除管理员root外所有用户属性中的
远程控制->启用远程控制 以及
终端服务配置文件->允许登陆到终端服务器
c.将guest改名为administrator并且修改密码
d.除了管理员root,IUSER以及IWAM以及ASPNET用户外.禁用其他一切用户.包括SQL DEBUG以及TERMINAL USER等等

3.目录权限
将所有盘符的权限,全部改为只有
administrators组 全部权限
system 全部权限
将C盘的所有子目录和子文件继承C盘的administrator(组或用户)和SYSTEM所有权限的两个权限
然后做如下修改
C:\Program Files\Common Files 开放Everyone 默认的读取及运行 列出文件目录 读取三个权限
C:\WINDOWS\ 开放Everyone 默认的读取及运行 列出文件目录 读取三个权限
C:\WINDOWS\Temp 开放Everyone 修改,读取及运行,列出文件目录,读取,写入权限
现在WebShell就无法在系统目录内写入文件了.
当然也可以使用更严格的权限.
在WINDOWS下分别目录设置权限.
可是比较复杂.效果也并不明显.

4.IIS
在IIS 6下.应用程序扩展内的文件类型对应ISAPI的类型已经去掉了IDQ,PRINT等等危险的脚本类型,
在IIS 5下我们需要把除了ASP以及ASA以外所有类型删除.
安装URLSCAN
在[DenyExtensions]中
一般加入以下内容
.cer
.cdx
.mdb
.bat
.cmd
.com
.htw
.ida
.idq
.htr
.idc
.shtm
.shtml
.stm
.printer
这样***者就无法下载.mdb数据库.这种方法比外面一些在文件头加入特殊字符的方法更加彻底.
因为即便文件头加入特殊字符.还是可以通过编码构造出来的

5.WEB目录权限
作为虚拟主机.会有许多独立客户
比较保险的做法就是为每个客户,建立一个windows用户
然后在IIS的响应的站点项内
把IIS执行的匿名用户.绑定成这个用户
并且把他指向的目录
权限变更为
administrators 全部权限
system 全部权限
单独建立的用户(或者IUSER) 选择高级->打开除 完全控制,遍历文件夹/运行程序,取得所有权 3个外的其他权限.

如果服务器上站点不多.并且有论坛
我们可以把每个论坛的上传目录
去掉此用户的执行权限.
只有读写权限
这样***者即便绕过论坛文件类型检测上传了webshell
也是无法运行的.

6.MS SQL SERVER2000
使用系统帐户登陆查询分析器
运行以下脚本
use master
exec sp_dropextendedproc 'xp_cmdshell'
exec sp_dropextendedproc 'xp_dirtree'
exec sp_dropextendedproc 'xp_enumgroups'
exec sp_dropextendedproc 'xp_fixeddrives'
exec sp_dropextendedproc 'xp_loginconfig'
exec sp_dropextendedproc 'xp_enumerrorlogs'
exec sp_dropextendedproc 'xp_getfiledetails'
exec sp_dropextendedproc 'Sp_OACreate'
exec sp_dropextendedproc 'Sp_OADestroy'
exec sp_dropextendedproc 'Sp_OAGetErrorInfo'
exec sp_dropextendedproc 'Sp_OAGetProperty'
exec sp_dropextendedproc 'Sp_OAMethod'
exec sp_dropextendedproc 'Sp_OASetProperty'
exec sp_dropextendedproc 'Sp_OAStop'
exec sp_dropextendedproc 'Xp_regaddmultistring'
exec sp_dropextendedproc 'Xp_regdeletekey'
exec sp_dropextendedproc 'Xp_regdeletevalue'
exec sp_dropextendedproc 'Xp_regenumvalues'
exec sp_dropextendedproc 'Xp_regread'
exec sp_dropextendedproc 'Xp_regremovemultistring'
exec sp_dropextendedproc 'Xp_regwrite'
drop procedure sp_makewebtask
go
删除所有危险的扩展.

7.修改CMD.EXE以及NET.EXE权限
将两个文件的权限.修改到特定管理员才能访问,比如本例中.我们如下修改
cmd.exe root用户 所有权限
net.exe root用户 所有权现
这样就能防止非法访问.
还可以使用例子中提供的comlog程序
将com.exe改名_com.exe,然后替换com文件.这样可以记录所有执行的命令行指令

8.备份
使用ntbackup软件.备份系统状态.
使用reg.exe 备份系统关键数据
如reg export HKLM\SOFTWARE\ODBC e:\backup\system\odbc.reg /y
来备份系统的ODBC

9.杀毒
这里介绍MCAFEE 8i 中文企业版
因为这个版本对于国内的许多恶意代码和***都能够及时的更新.
比如已经能够检测到海阳顶端2006
而且能够杀除IMAIL等SMTP软件使用的队列中MIME编码的病毒文件
而很多人喜欢安装诺顿企业版.而诺顿企业版,对于WEBSHELL.基本都是没有反应的.
而且无法对于MIME编码的文件进行杀毒.
在MCAFEE中.
我们还能够加入规则.阻止在windows目录建立和修改EXE.DLL文件等
我们在软件中加入对WEB目录的杀毒计划.
每天执行一次
并且打开实时监控.

10.关闭无用的服务
我们一般关闭如下服务
Computer Browser
Help and Support
Messenger
Print Spooler
Remote Registry
TCP/IP NetBIOS Helper
如果服务器不用作域控,我们也可以禁用
Workstation

11.取消危险组件
如果服务器不需要FSO
regsvr32 /u c:\windows\system32\scrrun.dll
注销组件
使用regedit
将/HKEY_CLASSES_ROOT下的
WScript.Network
WScript.Network.1
WScript.Shell
WScript.Shell.1
Shell.Application
Shell.Application.1
键值改名或删除
将这些键值下CLSID中包含的字串
如{72C24DD5-D70A-438B-8A42-98424B88AFB8}
到/HKEY_CLASSES_ROOT/CLSID下找到以这些字串命名的键值
全部删除

12.审计
本地安全策略->本地策略->审核策略
打开以下内容
审核策略更改 成功,失败
审核系统事件 成功,失败
审核帐户登陆事件 成功,失败
审核帐户管理 成功,失败

虽然说亡羊补牢可以将***后门造成的损失降至最低,但最好的方法显然是防患于未然。

  后门防范基本功

  首先要关闭本机不用的端口或只允许指定的端口访问;其次要使用专杀***的软件,为了有效地防范***后门,可以使用一些***专杀工具,如***克星、*** 清除大师、***猎手、***分析专家等。这类软件一般是免费的,而且体积小巧,非常适合用来对系统进行经常性的“体检”。第三是要学会对进程操作,时时注意 系统运行状况,看看是否有一些不明进程正运行并及时地将不明进程终止掉。常用的进程查看工具有进程杀手、IceSword、柳叶擦眼、系统查看大师、 WinProc等,可用它们来检查系统中的进程,并且结束掉有危险的进程。

  安全配置Web服务器

  如果公司或企业建立了主页,该如何保证自己的Web服务器的安全性呢?

  首先要关闭不必要的服务;其次是建立安全账号策略和安全日志;第三是设置安全的IIS,删除不必要的IIS组件和进行IIS安全配置。

  在IIS安全配置时候,要注意修改默认的Inetpub目录路径。可以删除C盘的Inetpub目录,然后在D盘重建一个Inetpub,而后在 IIS管理器中将主目录指向新建立的Inetpub路径。此外,还需要删除默认的scripts、print等虚拟目录,然后在IIS管理器中删除不必要 的映射,一般情况下保留ASP、ASA就可以了。

  具体方法是在“IIS信息服务”管理器中右击主机名,选择“属性”→“主目录”标签,点击“高级”按钮,在“映射”标签中就可以删除不必要的映射了。 另外,在属性窗口中选择“网站”标签,然后勾选“启用日志”,并选择“使用W3C扩充日志文件格式”项,每天记录客户IP地址、用户名、服务器端口、方 法、URI字根、HTTP状态、用户代理等,而且每天都应审查日志。

  在上面的基础工作之后,还需要设置Web站点目录的访问权限。

  一般情况下,不要给予目录以写入和允许目录浏览权限,只给予.ASP文件目录以脚本的权限,而不要给予执行权限。在“IIS信息服务”管理器中展开网 站的虚拟目录,然后右键点击某个虚拟目录,选择“属性”→“虚拟目录”标签,在“本地路径”下可设置对该目录权限为“读取”或“目录浏览”等。另外也可以 通过NTFS分区格式,严格地设置用户目录权限。

  而针对企业中最为核心的数据,更要加强对于Access数据库下载的防护。

  当使用Access作为后台数据库时,如果有人通过各种方法知道或者猜到了服务器的Access数据库的路径和数据库名称,就可以下载这个 Access数据库文件,这是非常危险的。因此,一般情况下要更改默认的数据库文件名,为您的数据库文件名称起个复杂的非常规的名字,并把它放在比较深的 文件目录下。另外,还可以为Access数据库文件加上打开密码。

  打开IIS网站属性设置对话窗口,选择“主目录”选项卡,点击“配置”按钮,打开“应用程序配置”对话窗口。而后,点击“添加”按钮,在“可执行文 件”中输入“asp.dll”,在“扩展名”中输入“.mdb”,勾选“限制为”项,并输入“禁止”,确定应用后完成设置即可。以后,当***者企图下载数 据时,将会提示禁止访问。

  最后要配置安全的SQL服务器

  SQL Server是各种网站系统中使用得最多的数据库系统,一旦遭受***,后果是非常严重的。虽然默认的SA用户具有对SQL Server数据库操作的全部权限,但是SA账号的黩认设置为空口令,所以一定要为SA账号设置一个复杂的口令。而且,要严格控制数据库用户的权限,轻易 不要给用户直接的查询、更改、插入、删除权限,可以只给用户以访问视图和执行存储过程的权限。

  在选择建立网站的Web程序时一定要注意安全性。许多网站系统虽然功能强大,但由于编程人员的安全意识所至,存在着一些很严重的安全漏洞,比如常见的 SQL注入漏洞、暴库等,都有可能被***利用。同时,我们平时还应该做好网站服务器的数据备份,以便在出现意外时及时地进行数据恢复。