Windows Server2003 IIS 6.0安全配置
Microsoft Internet 信息服务 (IIS) 是与 Windows Server 2003 集成的 Web 服务。要安装 IIS、添加可选组件或删除可选组件,请按以下步骤操作:
1. 单击开始,指向控制面板,然后单击“添加或删除程序”。
“添加或删除程序”工具就会启动。
2. 单击添加/删除 Windows 组件。显示“Windows 组件向导”。
3. 在Windows 组件列表中,单击Web 应用程序服务器。
4. 单击详细信息,然后单击Internet 信息服务 (IIS)。
5. 单击详细信息,以查看 IIS 可选组件列表。
6. 选择您要安装的可选组件。默认情况下,下列组件是选中的:
--- 公用文件
--- FrontPage 2002 Server Extentions
--- Internet 信息服务管理单元
--- Internet 信息服务管理器
--- NNTP 服务
--- SMTP 服务
--- World Wide Web 服务
7. 单击“World Wide Web 服务”,然后单击详细信息,以查看 IIS 可选子组件(如 Active Server Pages 组件和“远程管理 (HTML) 工具”)的列表。选择您要安装的可选子组件。默认情况下,下列组件是选中的:
--- World Wide Web 服务
8. 单击确定,直到返回“Windows 组件向导”。
9. 单击下一步,然后完成“Windows 组件向导”。
1. 单击开始,指向管理工具,然后单击Internet 信息服务 (IIS)。
2. 展开“* 服务器名称”(其中服务器名称为该服务器的名称),右键单击Web 站点,然后单击属性。
3. 在Web 站点属性对话框中,单击目录安全性选项卡。
4. 在“身份验证和访问控制”下,单击编辑。
5. 单击“启用匿名访问”复选框,将其选中。
备注:“用户名”框中的用户帐户只用于通过Windows Guest帐户进行匿名访问。默认情况下,服务器会创建并使用帐户IUSR_computername。匿名用户帐户密码仅在Windows中使用;匿名用户不使用用户名和密码登录。
6. 在“已验证身份的访问”下,单击“集成的 Windows 身份验证”复选框,将其选中。
7. 单击确定两次。
1. 单击开始,指向管理工具,然后单击Internet 信息服务 (IIS)。
2. 展开“* 服务器名称”(其中服务器名称为该服务器的名称),然后展开Web 站点。
3. 右键单击默认Web站点,然后单击属性。
4. 单击Web站点选项卡。如果您已为计算机分配了多个IP地址,则请在IP地址框中单击您要指定给此Web站点的IP地址。
5. 单击性能选项卡。使用Web站点属性-性能对话框可设置影响内存、带宽使用和Web连接数量的属性。
通过配置某个特定站点上的网络带宽,您可以更好地控制该站点的通信量。例如,通过在低优先级的 Web 站点上限制带宽,您可以放宽对他站点的访问量的限制。同样,当您指定到某个 Web 站点的连接数量时,您就可以为其他站点释放资源。设置是站点专用的,应根据网络通信量和使用变化情况进行调整。
--- 单击“限制可用于此 Web 站点的带宽”复选框,将其选中,可配置 IIS 将网络带宽调节到选定的最大带宽量,以千字节每秒 (KB/S) 为单位。
--- 单击Web 服务连接复选框,将其选中,可选择特定数目或者不限定数目的 Web 服务连接。限制连接可使计算机资源能够用于其他进程。
备注:每个浏览 Web 站点的客户机通常都使用大约三个连接。
6. 单击主目录选项卡。
--- 如果您想使用存储在本地计算机上的Web内容,则单击“此计算机上的目录”然后在本地路径框中键入您想要的路径。例如,默认路径为 C:\Inetpub\wwwroot。
依次做下面的工作:
a. 选取整个硬盘:
system:完全控制
administrator:完全控制 (允许将来自父系的可继承性权限传播给对象)
b. \program files\common files:
everyone:读取及运行,列出文件目录,读取(允许将来自父系的可继承性权限传播给对象)
c. \inetpub\wwwroot:iusr_machinename:读取及运行,列出文件目录,读取(允许将来自父系的可继承性权限传播给对象)
d. \windows\system32:选择除inetsrv和centsrv以外的所有目录,去除“允许将来自父系的可继承性权限传播给对象”选框,复制。
e. \ windows:选择除了downloaded、program files、help、iis temporary compressed files、 offline web pages、system32、tasks、temp、web以外的所有目录去除“允许将来自父系的可继承性权限传播给对象”选框,复制。
f. \ windows:everyone:读取及运行,列出文件目录,读取(允许将来自父系的可继承性权限传播给对象)
g. \windows\temp:(允许访问数据库并显示在asp页面上)everyone:修改(允许将来自父系的可继承性权限传播给对象)
再单独对cmd.exe、net.exe、net1.exe、ping.exe、netstat.exe、ftp.exe、tftp.exe、telnet.exe 、regedit.exe、at.exe、attrib.exe、format.exe设置为只允许administrators组访问,这样就可以防范通过Serv-U的本地提升权限漏洞来运行这些关键的程序了,再删除cacls.exe这个程序,防止有人通过命令行来修改权限还比较有威胁的组件就是Shell.Application和Wscript.Shell这两个组件了,Shell.Application可以对文件进行一些操作,还可以执行程序,但不能带参数,而Wscript.Shell可以操作注册表和执行DOS命令。
可以通过修改注册表,将此组件改名。
HKEY_CLASSES_ROOT\WScript.Shell\及HKEY_CLASSES_ROOT\WScript.Shell.1\改名为其它的名字,如:改为WScript.Shell_ChangeName或WScript.Shell.1_ChangeName自己以后调用的时候使用这个就可以正常调用此组件。同时也要将clsid值也改一下HKEY_CLASSES_ROOT\WScript.Shell\CLSID\项目的值
HKEY_CLASSES_ROOT\WScript.Shell.1\CLSID\项目的值
也可以将其删除,来防止此类木马的危害。
可以通过修改注册表,将此组件改名。 HKEY_CLASSES_ROOT\Shell.Application\及HKEY_CLASSES_ROOT\Shell.Application.1\改名为其它的名字,如:改为Shell.Application_ChangeName或Shell.Application.1_ChangeName自己以后调用的时候使用这个就可以正常调用此组件。也要将clsid值也改一下
HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值
HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值
也可以将其删除,来防止此类木马的危害。
在服务器上打开资源管理器,用鼠标右键点击各个硬盘分区或卷的盘符,在弹出菜单中选择“属性”,选择“安全”选项卡,此时就可以看到有哪些帐号可以访问这个分区(卷)及访问权限。默认安装后,出现的是“Everyone”具有完全控制的权限。点“添加”,将“Administrators”、“Backup Operators”、“Power Users”、“Users”等几个组添加进去,并给予“完全控制”或相应的权限,注意,不要给“Guests”组、“IUSR_机器名”这几个帐号任何权限。然后将“Everyone”组从列表中删除,这样,就只有授权的组和用户才能访问此硬盘分区了,而 ASP 执行时,是以“IUSR_机器名”的身份访问硬盘的,这里没给该用户帐号权限,ASP 也就不能读写硬盘上的文件了。
下面要做的就是给每个虚拟主机用户设置一个单独的用户帐号,然后再给每个帐号分配一个允许其完全控制的目录。
打开“计算机管理”→“本地用户和组”→“用户”,在右栏中点击鼠标右键,在弹出的菜单中选择“新用户”。
在弹出的“新用户”对话框中根据实际需要输入“用户名”、“全名”、“描述”、“密码”、“确认密码”,并将“用户下次登录时须更改密码”前的对号去掉,选中“用户不能更改密码”和“密码永不过期”。本例是给第一虚拟主机的用户建立一个匿名访问 Internet 信息服务的内置帐号“IUSR_VHOST1”,即:所有客户端使用 http://xxx.heut.edu.cn/ 访问此虚拟主机时,都是以这个身份来访问的。输入完成后点“创建”即可。可以根据实际需要,创建多个用户,创建完毕后点“关闭”。 现在新建立的用户已经出现在帐号列表中了,在列表中双击该帐号,以便进一步进行设置。
在弹出的“IUSR_VHOST1”(即刚才创建的新帐号)属性对话框中点“隶属于”选项卡: 刚建立的帐号默认是属于“Users”组,选中该组,点“删除”。此时再点“添加”,在弹出的“选择组”对话框中找到“Guests”,点“添加”,此组就会出现在下方的文本框中,然后点“确定”。
打开“Internet 信息服务”,开始对虚拟主机进行设置,本例中的以对“第一虚拟主机”设置为例进行说明,右击该主机名,在弹出的菜单中选择“属性”:弹出一个“第一虚拟主机属性”的对话框,从对话框中可以看到该虚拟主机用户的使用的是“F:\VHOST1”这个文件夹:暂时先不管刚才的“第一虚拟主机属性”对话框,切换到“资源管理器”,找到“F:\VHOST1”这个文件夹,右击,选“属性”→“安全”选项卡,此时可以看到该文件夹的默认安全设置是“Everyone”完全控制(视不同情况显示的内容不完全一样),首先将最将下的“允许将来自父系的可继承权限传播给该对象”前面的对号去掉,此时会弹出“安全”警告,点“删除”。此时安全选项卡中的所有组和用户都将被清空(如果没有清空,请使用“删除”将其清空),然后点“添加”按钮。将“Administrator”及在前面所创建的新帐号“IUSR_VHOST1”添加进来,将给予完全控制的权限,还可以根据实际需要添加其他组或用户,但一定不要将“Guests”组、“IUSR_机器名”这些匿名访问的帐号添加上去!
再切换到前面打开的“第一虚拟主机属性”的对话框,打开“目录安全性”选项卡,点匿名访问和验证控制的“编辑”,在弹出的“验证方法”对方框,点“编辑”。弹出了“匿名用户帐号”,默认的就是“IUSR_机器名”,点“浏览”,在“选择用户”对话框中找到前面创建的新帐号“IUSR_VHOST1”,双击。此时匿名用户名就改过来了,在密码框中输入前面创建时,为该帐号设置的密码,再确定一遍密码。
经此设置后,“第一虚拟主机”的用户,使用 ASP 的 FileSystemObject 组件也只能访问自己的目录:F:\VHOST1 下的内容,当试图访问其他内容时,会出现诸如“没有权限”、“硬盘未准备好”、“500 服务器内部错误”等出错提示了。
另:如果该用户需要读取硬盘的分区容量及硬盘的序列号,那这样的设置将使其无法读取。如果要允许其读取这些和整个分区有关的内容,请右键点击该硬盘的分区(卷),选择“属性”→“安全”,将这个用户的帐号添加到列表中,并至少给予“读取”权限。由于该卷下的子目录都已经设置为“禁止将来自父系的可继承权限传播给该对象”,所以不会影响下面的子目录的权限设置。
如果你不想使用上面的修改不安全组件的方法,那最简单的办法是直接卸载后删除相应的程序文件。将下面的代码保存为一个.BAT文件
regsvr32/u C:\windows\System32\wshom.ocx
del C:\ windows \System32\wshom.ocx
regsvr32/u C:\ windows \system32\shell32.dll
del C:\ windows \system32\shell32.dll
然后运行一下,WScript.Shell, Shell.application, WScript.Network就会被卸载了。可能会提示无法删除文件,不用管它,重启一下服务器,你会发现这三个都提示“×安全”了。
NetBIOS是许多安全缺陷的源泉,所以我们需要禁用它。鼠标右击桌面上“网络邻居”-“属性” “本地连接”-“属性”,打开“本地连接属性”对话框。选择“Internet协议(TCP/IP)”-“属性”-“高级”-“WINS”,选中“禁用TCP/IP上的NetBIOS”一项即可解除TCP/IP上的NetBIOS
鼠标右击桌面上“网络邻居”-“属性”-“本地连接”-“属性”,打开“本地连接属性”对话框。选择“Internet协议(TCP/IP)”-“属性”-“高级”-“选项”,在列表中单击选中“TCP/IP筛选”选项。单击“属性”按钮,选择“只允许”,再单击“添加”按钮,如图,只填入80端口即可。
IPSec Policy Filters(IP安全策略过滤器)弥补了传统TCP/IP设计上的“随意信任”重大安全漏洞,可以实现更仔细更精确的TCP/IP安全。它是一个基于通讯分析的策略,将通讯内容与设定好的规则进行比较以判断通讯是否与预期相吻合,然后据此允许或拒绝通讯的传输。我们同样可以设置只允许80端口的数据通过,其它端口来的数据一律拦截。
DDoS攻击现在很流行,例如SYN使用巨量畸形TCP信息包向服务器发出请求,最终导致服务器不能正常工作。改写注册表信息虽然不能完全阻止这类攻击,但是可以降低其风险。打开注册表:将HKLM\System\CurrentControlSet\Services\Tcpip\Parameters下的SynAttackProtect的值修改为2。这样可以使TCP/IP调整SYN-ACKS的重传,当出现SYN-ATTACK迹象时,使连接对超时的响应更快。
除了在操作系统里为IIS的文件设置必要的权限外,还要在IIS管理器中为它们设置权限,以期做到双保险。一般而言,对一个文件夹永远也不应同时设置写和执行权限,以防止攻击者向站点上传并执行恶意代码。另外目录浏览功能也应禁止,预防攻击者把站点上的文件夹浏览个遍最后找到漏洞。一个好的设置策略是:为Web 站点上不同类型的文件都建立目录,然后给它们分配适当权限。例如:
² 静态文件文件夹:包括所有静态文件,如HTM 或HTML,给予允许读取、拒绝写的权限。
² ASP脚本文件夹:包含站点的所有脚本文件,如cgi、vbs、asp等等,给予允许执行、拒绝写和读取的权限。
² EXE等可执行程序:包含站点上的二进制执行文件,给予允许执行、拒绝写和拒绝读取的权限。
IIS中默认存在很多种应用程序映射,如.htw、.ida、.idq、.asp、.cer、.cdx、.asa、.htr、.idc、.shtm、.shtml、.stm、.printer等,通过这些程序映射,IIS就能知道对于什么样的文件该调用什么样的动态链接库文件来进行解析处理。但是,在这些程序映射中,除了.asp的这个程序映射,其它的文件在网站上都很少用到。而且在这些程序映射中,.htr、.idq/ida、.printer等多个程序映射都已经被发现存在缓存溢出问题,入侵者可以利用这些程序映射中存在的缓存溢出获得系统的权限。即使已经安装了系统最新的补丁程序,仍然没法保证安全。
所以我们需要将这些不需要的程序映射删除。在“Internet服务管理器”中,右击网站目录,选择“属性”,在网站目录属性对话框的“主目录”页面中,点击“配置”按钮,弹出“应用程序配置”对话框,在“应用程序映射”页面,删除无用的程序映射。如果需要这一类文件时,必须安装最新的系统修补程序以解决程序映射存在的问题,并且选中相应的程序映射,再点击“编辑”按钮,在“添加/编辑应用程序扩展名映射”对话框中勾选“检查文件是否存在”选项,如图。这样当客户请求这类文件时,IIS会先检查文件是否存在,文件存在后才会去调用程序映射中定义的动态链接库来解析。
日志是系统安全策略的一个重要坏节,IIS带有日志功能,能记录所有的用户请求。确保日志的安全能有效提高系统整体安全性。
IIS的日志默认保存在一个众所周知的位置(%WinDir%\System32\LogFil-es),这对Web日志的安全很不利。所以我们最好修改一下其存放路径。在“Internet服务管理器”中,右击网站目录,选择“属性”,在网站目录属性对话框的“Web站点”页面中,在选中“启用日志记录”的情况下,点击旁边的“属性”按钮,在“常规属性”页面,点击“浏览”按钮或者直接在输入框中输入日志存放路径即可,如图。
日志是为管理员了解系统安全状况而设计的,其他用户没有必要访问,应将日志保存在NTFS分区上,设置为只有管理员才能访问。
当然,如果条件许可,还可单独设置一个分区用于保存系统日志,分区格式是NTFS,这样除了便于管理外,也避免了日志与系统保存在同一分区给系统带来的安全威胁。如果IIS日志保存在系统分区中,入侵者使用软件让IIS产生大量的日志,可能会导致日志填满硬盘空间,整个Windows系统将因为缺乏足够可用的硬盘空间而崩溃,为日志设置单独的分区则可以避免这种情况的出现。