2008/09/03 | IIS常见问题和错误及其解决方案
类别(网页类学习笔记) | 评论(1) | 阅读(112) | 发表于 10:47
IIS常见问题和错误及其解决方案

我在CSDN论坛IIS版面中经常看到大家问一些相同的或者以前已经多次解答的问题。所以,我将这些问题整理了一些出来供大家参考。

Q:为什么我的ASP页面到windows2003后就不能执行了,执行ASPX正常。
A:windows2003中默认没有启用ASP支持,在IIS的Web Service Extensions里找到Active Server Pages,将ALLOW选上,就可以了。

Q:我的IIS只要asp文件有错,就显示HTTP500错误,但是却不显示出错的详细信息。以前能够显示究竟是那个文件的那一行出错,但现在却不显示。
A:在IE的Internet选项中选高级,选中“显示友好的HTTP错误”即可。

Q:在Windows XP家庭版如何安装IIS?
A:windows XP家庭版不能安装IIS,请升级到专业版。

Q:为何我访问本机地址要求输入用户和密码?
A:将IIS设置中匿名帐号权限打开。再则检查所在目录的NTFS权限。

Q:我的ASP文件包含文件的时候提示Active Server Pages 错误 'ASP 0131'不允许的父路径,如何解决?
A:在站点属性中选择主目录-配置-应用程序选项,将“启用父目录”选上。

Q:为何我的IIS老是当机?
A:1、检查你设置的脚本超时时间,不能过长。2、检查你的程序是否有对象和连接没有关闭。3、依次停止各个用户的服务,看看是不是有耗大资源的用户程序。

Q:win200 server+iis,为什么在网页上,有的中文htm链接路径可以显示,有的不行?
A:'转换双字节字符为合法的URL传输字串
function getUrlEncodel(byVal Url)
Dim i,code
getUrlEncodel=""
if trim(Url)="" then exit function
for i=1 to len(Url)
code=Asc(mid(Url,i,1))
If code<0 Then code = code + 65536
If code>255 Then
getUrlEncodel=getUrlEncodel&"%"&Left(Hex(Code),2)&"%"&Right(Hex(Code),2)
else
getUrlEncodel=getUrlEncodel&mid(Url,i,1)
end if
next
end function

Q:IIS 所有的exe文件从上面的目录都不能下载,显示404 文件找不到 是什么原因?还是哪里设置错误?
A:设置一下http头--MIME类型,新建一个类型扩展名为EXE,类型为:application/octet-stream

Q:在管理工具中找不到IIS了。
A:在C:\WINDOWS\system32\inetsrv中找到快捷方式重新建立。

Q:IIS无法支持ASP了,重启N次都不行。
A:在应用程序程序配置中检查.asp文件是不是已经映射到C:\WINDOWS\system32\inetsrv\asp.dll。若无,则添加。


用IIS建立高安全性Web服务器

因为IIS(即Internet Information Server)的方便性和易用性,使它成为最受欢迎的Web服务器软件之一。但是,IIS的安全性却一直令人担忧。如何利用IIS建立一个安全的Web服务器,是很多人关心的话题。

构造一个安全系统

要创建一个安全可靠的Web服务器,必须要实现Windows 2000和IIS的双重安全,因为IIS的用户同时也是Windows 2000的用户,并且IIS目录的权限依赖Windows的NTFS文件系统的权限控制,所以保护IIS安全的第一步就是确保Windows 2000操作系统的安全:

1. 使用NTFS文件系统,以便对文件和目录进行管理。

2. 关闭默认共享

打开注册表编辑器,展开“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters”项,添加键值AutoShareServer,类型为REG_DWORD,值为0。 这样就可以彻底关闭“默认共享”。

3. 修改共享权限

建立新的共享后立即修改Everyone的缺省权限,不让Web服务器访问者得到不必要的权限。

4. 为系统管理员账号更名,避免非法用户攻击。

鼠标右击[我的电脑]→[管理]→启动“计算机管理”程序,在“本地用户和组”中,鼠标右击“管理员账号(Administrator)”→选择“重命名”,将管理员账号修改为一个很普通的用户名。

5. 禁用TCP/IP 上的NetBIOS

鼠标右击桌面上[网络邻居] →[属性] →[本地连接] →[属性],打开“本地连接属性”对话框。选择[Internet协议(TCP/IP)]→[属性]→[高级]→[WINS],选中下侧的“禁用TCP/IP上的NetBIOS”一项即可解除TCP/IP上的NetBIOS。

6. TCP/IP上对进站连接进行控制

鼠标右击桌面上[网络邻居] →[属性] →[本地连接] →[属性],打开“本地连接属性”对话框。选择[Internet协议(TCP/IP)]→[属性]→[高级]→[选项], 在列表中单击选中“TCP/IP筛选”选项。单击[属性]按钮,选择“只允许”,再单击[添加]按钮,只填入80端口。

7. 修改注册表,减小拒绝服务攻击的风险。

打开注册表:将HKLM\System\

CurrentControlSet\Services\Tcpip\Parameters下的SynAttackProtect的值修改为2,使连接对超时的响应更快。

保证IIS自身的安全性

IIS安全安装

要构建一个安全的IIS服务器,必须从安装时就充分考虑安全问题。

1. 不要将IIS安装在系统分区上。

2. 修改IIS的安装默认路径。

3. 打上Windows和IIS的最新补丁。

IIS的安全配置

1. 删除不必要的虚拟目录

IIS安装完成后在wwwroot下默认生成了一些目录,包括IISHelp、IISAdmin、IISSamples、MSADC等,这些目录都没有什么实际的作用,可直接删除。

2. 删除危险的IIS组件

默认安装后的有些IIS组件可能会造成安全威胁,例如 Internet服务管理器(HTML)、SMTP Service和NNTP Service、样本页面和脚本,大家可以根据自己的需要决定是否删除。

3. 为IIS中的文件分类设置权限

除了在操作系统里为IIS的文件设置必要的权限外,还要在IIS管理器中为它们设置权限。一个好的设置策略是:为Web 站点上不同类型的文件都建立目录,然后给它们分配适当权限。例如:静态文件文件夹允许读、拒绝写,ASP脚本文件夹允许执行、拒绝写和读取,EXE等可执行程序允许执行、拒绝读写。

4. 删除不必要的应用程序映射

ISS中默认存在很多种应用程序映射,除了ASP的这个程序映射,其他的文件在网站上都很少用到。

在“Internet服务管理器”中,右击网站目录,选择“属性”,在网站目录属性对话框的“主目录”页面中,点击[配置]按钮,弹出“应用程序配置”对话框,在“应用程序映射”页面,删除无用的程序映射。如果需要这一类文件时,必须安装最新的系统修补补丁,并且选中相应的程序映射,再点击[编辑]按钮,在“添加/编辑应用程序扩展名映射”对话框中勾选“检查文件是否存在”选项。这样当客户请求这类文件时,IIS会先检查文件是否存在,文件存在后才会去调用程序映射中定义的动态链接库来解析。

5. 保护日志安全

日志是系统安全策略的一个重要环节,确保日志的安全能有效提高系统整体安全性。

● 修改IIS日志的存放路径

默认情况下,IIS的日志存放在%WinDir%\System32\LogFiles,黑客当然非常清楚,所以最好修改一下其存放路径。在“Internet服务管理器”中,右击网站目录,选择“属性”,在网站目录属性对话框的“Web站点”页面中,在选中“启用日志记录”的情况下,点击旁边的[属性]按钮,在“常规属性”页面,点击[浏览]按钮或者直接在输入框中输入日志存放路径即可。

● 修改日志访问权限,设置只有管理员才能访问。

通过以上的一些安全设置,相信你的Web服务器会安全许多。


为你的IIS设置权限

现在绝大多数的虚拟主机都禁用了 ASP 的标准组件:FileSystemObject,因为这个组件为ASP提供了强大的文件系统访问能力,可以对服务器硬盘上的任何文件进行读、写、复制、删除、改名等操作(当然,这是指在使用默认设置的 Windows NT / 2k下才能做到)。但是禁止此组件后,引起的后果就是所有利用这个组件的 ASP 将无法运行,无法满足客户的需求。如何既允许FileSystemObject组件,又不影响服务器的安全性(即:不同虚拟主机用户之间不能使用该组件读写别人的文件)呢?这里介绍本人在实验中获得的一种方法,下文以 Windows 2k Server为例来说明。
在服务器上打开资源管理器,用鼠标右键点击各个硬盘分区或卷的盘符,在弹出菜单中选择"属性",选择"安全"选项卡,此时就可以看到有哪些帐号可以访问这个分区(卷)及访问权限。默认安装后,出现的是"Everyone"具有完全控制的权限。点"添加",将"Administrators"、"Backup Operators"、"Power Users"、"Users"等几个组添加进去,并给予"完全控制"或相应的权限,注意,不要给"Guests"组、"IUSR_机器名"这几个帐号任何权限。然后将"Everyone"组从列表中删除,这样,就只有授权的组和用户才能访问此硬盘分区了,而ASP 执行时,是以"IUSR_机器名"的身份访问硬盘的,这里没给该用户帐号权限,ASP也就不能读写硬盘上的文件了。下面要做的就是给每个虚拟主机用户设置一个单独的用户帐号,然后再给每个帐号分配一个允许其完全控制的目录。如下图所示,打开"计算机管理"→"本地用户和组"→"用户",在右栏中点击鼠标右键,在弹出的菜单中选择"新用户":在弹出的"新用户"对话框中根据实际需要输入"用户名"、"全名"、"描述"、"密码"、"确认密码",并将"用户下次登录时须更改密码"前的对号去掉,选中"用户不能更改密码"和"密码永不过期"。本例是给第一虚拟主机的用户建立一个匿名访问Internet 信息服务的内置帐号"IUSR_VHOST1",即:所有客户端使用http://xxx.xxx.xxxx/访问此虚拟主机时,都是以这个身份来访问的。输入完成后点"创建"即可。可以根据实际需要,创建多个用户,创建完毕后点"关闭":现在新建立的用户已经出现在帐号列表中了,在列表中双击该帐号,以便进一步进行设置:在弹出的"IUSR_VHOST1"(即刚才创建的新帐号)属性对话框中点"隶属于"选项卡:刚建立的帐号默认是属于"Users"组,选中该组,点"删除":现在出现的是如下图所示,此时再点"添加":在弹出的"选择组"对话框中找到"Guests",点"添加",此组就会出现在下方的文本框中,然后点"确定": 出现的就是如下图所示的内容,点"确定"关闭此对话框:打开"Internet 信息服务",开始对虚拟主机进行设置,本例中的以对"第一虚拟主机"设置为例进行说明,右击该主机名,在弹出的菜单中选择"属性":弹出一个"第一虚拟主机属性"的对话框,从对话框中可以看到该虚拟主机用户的使用的是"F:\VHOST1"这个文件夹:暂时先不管刚才的"第一虚拟主机属性"对话框,切换到"资源管理器",找到"F:\VHOST1"这个文件夹,右击,选"属性"→"安全"选项卡,此时可以看到该文件夹的默认安全设置是"Everyone"完全控制(视不同情况显示的内容不完全一样),首先将最将下的"允许将来自父系的可继承权限传播给该对象"前面的对号去掉:此时会弹出如下图所示的"安全"警告,点"删除":此时安全选项卡中的所有组和用户都将被清空(如果没有清空,请使用"删除"将其清空),然后点"添加"按钮。
将如图中所示的"Administrator"及在前面所创建的新帐号"IUSR_VHOST1"添加进来,将给予完全控制的权限,还可以根据实际需要添加其他组或用户,但一定不要将"Guests"组、"IUSR_机器名"这些匿名访问的帐号添加上去!
再切换到前面打开的"第一虚拟主机属性"的对话框,打开"目录安全性"选项卡,点匿名访问和验证控制的"编辑":在弹出的"验证方法"对方框(如下图所示),点"编辑":弹出了"匿名用户帐号",默认的就是"IUSR_机器名",点"浏览":在"选择用户"对话框中找到前面创建的新帐号"IUSR_VHOST1",双击:此时匿名用户名就改过来了,在密码框中输入前面创建时为该帐号设置的密码:再确定一遍密码:OK,完成了,点确定关闭这些对话框。经此设置后,"第一虚拟主机"的用户,使用 ASP 的FileSystemObject 组件也只能访问自己的目录:F:\VHOST1下的内容,当试图访问其他内容时,会出现诸如"没有权限"、"硬盘未准备好"、"5a8zd_00服务器内部错误"等出错提示了。

另:如果该用户需要读取硬盘的分区容量及硬盘的序列号,那这样的设置将使其无法读取。如果要允许其读取这些和整个分区有关的内容,请右键点击该硬盘的分区(卷),选择"属性"→"安全",将这个用户的帐号添加到列表中,并至少给予"读取"权限。由于该卷下的子目录都已经设置为"禁止将来自父系的可继承权限传播给该对象",所以不会影响下面的子目录的权限设置
2

评论Comments