[pagesplitxx]
客户端请求出现错误或超时
在 iis 6.0 中,默认设置是特别严格和安全的,这样可以最大限度地减少因以前太宽松的超时和限制而造成的攻击。iis 在连接级别强制实施以下超时限制:
响应缓冲限制:aspbufferinglimit 配置数据库属性的默认值为 4 mb。如果 asp 脚本缓冲大于此值,就会出现错误。在 iis 6.0 之前的版本中,没有缓冲限制。
张贴限制:aspmaxrequestentityallowed 配置数据库属性实施的最大 asp 张贴大小为 204,800 个字节,并将各个字段限制为 100 kb。在 iis 6.0 之前的版本中,没有张贴限制。
serverlistentimeout 配置数据库属性不再存在: serverlistentimeout 已被以下配置数据库属性代替:
connectiontimeout:此属性指定在断开非活动连接前服务器等待的时间(以秒为单位)。
minfilebytespersec:当 iis 响应客户端请求时,minfilebytespersec 属性决定了客户端收到整个响应的时间长短。如果客户机接收整个响应所花费的时间太长,则内核模式驱动程序 http.sys 会根据超时值终止连接。
headerwaittimeout:在客户端连接到 web 服务器时,会给客户机指定发送请求的所有标题的时间限制(用结尾的双 "r"n 来区分)。如果在 headerwaittimeout 指示的时间内没有收到请求的完整标题集,则 http.sys 将重置该连接。您可以对 headerwaittimeout 的值进行配置。
标题大小限制:默认情况下,http.sys 仅接受标题小于 16 kb 的请求。这意味着,如果 http.sys 收到的 16 kb 中不包含结尾的 <crlf><crlf> 序列,则 http.sys 认为请求是恶意的并将终止连接。通过调整 maxrequestbytes 注册表项中的值,您可以更改标题大小限制。
其他错误
对 unix 或 linux 服务器的文件请求返回错误的文件或错误信息
如果 iis 必须访问 unix 或 linux 系统上的文件,除非在 iis 中启用了网络文件系统 (nfs) 支持,否则文件名大小写区分可能会引起问题。
unix 和 linux 均支持混合大小写的文件名,而 iis 完全支持以区分大小写的方式请求静态文件。然而,当 iis 随后从其静态文件缓存中请求文件时,会出现问题。因为所有的文件名会在 iis 缓存中转换为大写字母,从 iis 静态文件缓存进行完第一次请求之后,所有的请求都可能失败或返回错误的文件。
解决该问题的方法是禁用 iis 静态文件缓存,以便所有文件请求都以全新形式发出,从而保持正确的文件名大小写。可以针对网站上的单个虚拟目录禁用静态文件缓存,也可以针对所有站点在全局禁用。
注意更改该设置不会影响缓存 asp 文件和模板的方式。
为特定网站虚拟目录禁用静态文件缓存
编辑配置数据库,并将 md_vr_no_cache 属性设置为 1。
针对所有站点禁用静态文件缓存
编辑注册表并将二进制值 disablestaticfilecache=1 添加到 hkey_local_machine"system"currentcontrolset"services"inetinfo"parameters 项中。
找不到 /scripts 或 /msadc 目录
默认情况下,iis 5.0 中的 /scripts 和 /msadc 目录允许运行脚本和可执行文件。在 iis 6.0 中删除了这些目录,因为如果恶意用户能够访问这些目录之一,该用户就可以运行脚本或可执行文件,并有可能会控制 web 服务器。如果服务器配置需要此类目录,则需要创建一个目录并为其指派适当的 ntfs 权限。
isapi 筛选器在 ui 中没有显示为"已加载"
在 iis 6.0 中,为了优化资源,直到所请求的网站需要 isapi 筛选器时才会加载它。直到提出此类请求时,iis 管理器才会显示 isapi 筛选器的状态。另外,如果 isapi 筛选器需要 sf_notify_read_raw_data 筛选器通知,则当 iis 以工作进程隔离模式运行时,不会加载该筛选器。检查 w3svc-wp 中事件的应用程序事件以验证是否加载该筛选器。要解决此问题,请以 iis 5.0 隔离模式运行 iis,或者与 isapi 筛选器供应商联系以获得有关兼容性的更新程序。
要点如果由于访问控制列表 (acl) 的限制而使 iis 工作进程标识无法加载 isapi 筛选器,则请求收到 503 错误。要解决此问题,请在 isapi 筛选器 dll 上设置 acl 以允许访问 iis_wpg 组。
将 iis 配置为 iis 5.0 隔离模式
在"iis 管理器"中,展开本地计算机,右键单击"网站",然后单击"属性"。
单击"服务"选项卡,选中"以 iis 5.0 隔离模式运行 www 服务"复选框,然后单击"确定"。
要启动 www 服务,请单击"是"。
下面还有一些呵呵
1.如何让asp脚本以system权限运行?
修改你asp脚本所对应的虚拟目录,把"应用程序保护"修改为"低"....
2.如何防止asp木马?
基于filesystemobject组件的asp木马
cacls %systemroot%"system32"scrrun.dll /e /d guests //禁止guests使用
regsvr32 scrrun.dll /u /s //删除
基于shell.application组件的asp木马
cacls %systemroot%"system32"shell32.dll /e /d guests //禁止guests使用
regsvr32 shell32.dll /u /s //删除
3.如何加密asp文件?
从微软免费下载到sce10chs.exe 直接运行即可完成安装过程。
安装完毕后,将生成screnc.exe文件,这是一个运行在dos promapt的命令工具。
运行screnc - l vbscript source.asp destination.asp
生成包含密文asp脚本的新文件destination.asp
用记事本打开看凡是""之内的,不管是否注解,都变成不可阅读的密文了
但无法加密中文。
4.如何从iislockdown中提取urlscan?
iislockd.exe /q /c /t:c:"urlscan
5.如何防止content-location标头暴露了web服务器的内部ip地址?
执行
cscript c:"inetpub"adminscripts"adsutil.vbs set w3svc/usehostname true
最后需要重新启动iis
6.如何解决http500内部错误?
iis http500内部错误大部分原因
主要是由于iwam账号的密码不同步造成的。
我们只要同步iwam_myserver账号在com+应用程序中的密码即可解决问题。
执行
cscript c:"inetpub"adminscripts"synciwam.vbs -v
7.如何增强iis防御syn flood的能力?
windows registry editor version 5.00
[hkey_local_machine"system"currentcontrolset"services"tcpip"parameters]
'启动syn攻击保护。缺省项值为0,表示不开启攻击保护,项值为1和2表示启动syn攻击保护,设成2之后
'安全级别更高,对何种状况下认为是攻击,则需要根据下面的tcpmaxhalfopen和tcpmaxhalfopenretried值
'设定的条件来触发启动了。这里需要注意的是,nt4.0必须设为1,设为2后在某种特殊数据包下会导致系统重启。
"synattackprotect"=dword:00000002
'同时允许打开的半连接数量。所谓半连接,表示未完整建立的tcp会话,用netstat命令可以看到呈syn_rcvd状态
'的就是。这里使用微软建议值,服务器设为100,高级服务器设为500。建议可以设稍微小一点。
"tcpmaxhalfopen"=dword:00000064
'判断是否存在攻击的触发点。这里使用微软建议值,服务器为80,高级服务器为400。
"tcpmaxhalfopenretried"=dword:00000050
'设置等待syn-ack时间。缺省项值为3,缺省这一过程消耗时间45秒。项值为2,消耗时间为21秒。
'项值为1,消耗时间为9秒。最低可以设为0,表示不等待,消耗时间为3秒。这个值可以根据遭受攻击规模修改。
'微软站点安全推荐为2。
"tcpmaxconnectresponseretransmissions"=dword:00000001
'设置tcp重传单个数据段的次数。缺省项值为5,缺省这一过程消耗时间240秒。微软站点安全推荐为3。
"tcpmaxdataretransmissions"=dword:00000003
'设置syn攻击保护的临界点。当可用的backlog变为0时,此参数用于控制syn攻击保护的开启,微软站点安全推荐为5。
"tcpmaxportsexhausted"=dword:00000005
'禁止ip源路由。缺省项值为1,表示不转发源路由包,项值设为0,表示全部转发,设置为2,表示丢弃所有接受的
'源路由包,微软站点安全推荐为2。
"disableipsourcerouting"=dword:0000002
'限制处于time_wait状态的最长时间。缺省为240秒,最低为30秒,最高为300秒。建议设为30秒。
"tcptimedwaitdelay"=dword:0000001e
8.如何避免*mdb文件被下载?
安装ms发布的urlscan工具,可以从根本上解决这个问题。
同时它也是一个强大的安全工具,你可以从ms的网站上获取更为详细的信息。
9.如何让iis的最小ntfs权限运行?
依次做下面的工作:
a.选取整个硬盘:
system:完全控制
administrator:完全控制
(允许将来自父系的可继承性权限传播给对象)
b."program files"common files:
everyone:读取及运行
列出文件目录
读取
(允许将来自父系的可继承性权限传播给对象)
c."inetpub"wwwroot:
iusr_machine:读取及运行
列出文件目录
读取
(允许将来自父系的可继承性权限传播给对象)
e."winnt"system32:
选择除inetsrv和centsrv以外的所有目录,
去除"允许将来自父系的可继承性权限传播给对象"选框,复制。
f."winnt:
选择除了downloaded program files、help、iis temporary compressed files、
offline web pages、system32、tasks、temp、web以外的所有目录
去除"允许将来自父系的可继承性权限传播给对象"选框,复制。
g."winnt:
everyone:读取及运行
列出文件目录
读取
(允许将来自父系的可继承性权限传播给对象)
h."winnt"temp:(允许访问数据库并显示在asp页面上)
everyone:修改
(允许将来自父系的可继承性权限传播给对象)
10.如何隐藏iis版本?
一个黑客可以可以轻易的telnet到你的web端口,发送get命令来获取很多信息
iis存放iis banner的所对应的dll文件如下:
web:c:"winnt"system32"inetsrv"w3svc.dll
ftp:c:"winnt"system32"inetsrv"ftpsvc2.dll
smtp:c:"winnt"system32"inetsrv"smtpsvc.dll
你可以用16进制编辑器去修改那些dll文件的关键字,比如iis的microsoft-iis/5.0
具体过程如下:
1.停掉iis iisreset /stop
2.删除%systemroot%"system32"dllcache目录下的同名文件
3.修改
另外,防火墙阻止,ODBC配置错误,Web服务器性能限制,线程限制等因素也是造成IIS服务器无法访问的可能原因,这里就不再一一馈述了。希望此帖能解决大家的大部分问题:)
网络上有关iis的问题和相关解决方案,多不胜搜,但很多都比较零散,没有系统的解决方案;另外,有些解决方法,似是而非,不能找到其中的问题关键点,本人平时对于服务器的应用上也有点实践,因此,今天稍稍总结一点平时遇到地问题和解决方法,特别是对iis的特殊权限引起问题、iis应用程序池假死问题和比较罕见的iis重启命令和自动重启办法。其它相关问题,继续关注本博。
一、2003应用程序池自动死了,不能恢复了,一直出现 Service Unavailable 常见方法如下。
1:没有打SP1补丁的时候会出现这个IIS6.0假死问题,但现在微软都在自动更新里面出补丁了,一般你打好最新补丁后是不会出现此问题了。(所以现在的IIS假死与这个关系不是很大)
2:从IIS6.0开始CPU资源都在应用池里面限制了,不象以前的IIS.5。所以假死的池的缘故就是池被拉死,你在网站打不开的时候可以看到你的某个应用池是禁用的,上面出现一个红叉。你鼠标右键启动网站又会自动恢复。 这个原因:大概是以下几个因数造成的。
(1):你限制了应用池的资源,限制得太小 比如:50这样或更少更多一点,这个时候如果你这个池下面的网站占用CPU太高,比如超过50% 那么5分钟后他就自动死了,手工默认建立的应用池默认是超过资源不操作。
出现上面这个情况解决方法:1:不限制CPU资源,(这个是不可取的,不限制资源,有的程序有BUG占用资源厉害了的,服务器都会被拉死,你可能都无法操作服务器。)2:在超过资源那里选择关闭,这个关闭默认是失败5次,90秒内恢复,一般默认就可。网站能自动恢复,这个关闭:不是永久关闭,意思是超过资源关闭,然后在某时间内自动恢复池。不操作就是不恢复,这个是很多人的误区。
(2):内存限制 在IIS6.0应用池上面有虚拟内存和最大内存限制,如果你设置了这个。那么网站访问量大了 也会出现假死,所以不建议设置这里。默认就可。
3:就是服务器自身内存太小,网站运行当然需要使用到内存了,当内存不够的时候应用池也会死掉变成禁用。那么只有等内存全部释放出来才能恢复应用池了。出现这个情况:那么你就要考虑加内存或者检查到底是什么程序占用了内存了。比如MSSQL数据库,这个可是吃内存得大户啊,最好别和WEB服务器同时一个服务器上。很多人用1G内存做 2003系统,2003NET结构是很占用内存的,所以做服务器选2003还得把内存加到2G或更高才好。 内存不够上面 2点讲到的,是没办法操作了,也无法自动恢复。
4:就是ACCESS数据库太大或查询太多,这个也会出现把IIS拉死,解决方法;修复ACCESS数据库,或尽量少用ACCESS数据库,升级至sqlserver数据库;或者在技术方面革新,像现在有些网站系统,风讯、动易等cms;pjblog、zblog等博客程序,都支持生成静态功能.
5:不同网站用不同应用池:根据你自己实际情况而定,站点大的最好独立一个应用池,限制他的资源超过了自动回收,看上面(1)讲到的,这样就不影响其他站点。中型站点:多个网站共用一个应用池,比如5个站点用一个池,设置他资源时间等等。这样他们就算超资源了也不影响其他应用池的网站。
6:设置回收时间:很多人以为设置回收池越短越好,其实是错误的,每次回收当然是把内存回收回来了,但加重了一次服务器的负担,当服务器比较繁忙的时候,有可能导致其他应用池死。所以建议设置共1000就行了。其他独立池按照他网站流量而设置 可以设置600 也行,共用的不建议设置太短。
7:网站后台过不了多久自动退出又要重新登陆:这个情况就是你设置回收时间太短了,按照 6点设置吧。 不要设置什么20分、30分这样的,这样不好的。另外一个原因就是和站的响应设置时间有关,设置得稍长些。
8:windows 2003系统iis6访问本机的站点时提示“Service Unavailable”;
查看iis的应用程序池,状况提示为:未指定错误,同时应用程序池自动停止运行;
用事件查看器查看系统错误日志,发现如下提示:
-----------------------------------
应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为
{A9E69610-B80D-11D0-B9B9-00A0C922E750}
)的 本地 激活 权限授予用户 NT AUTHORITY\NETWORK SERVICE SID (S-1-5-20)。可以使用组件服务管理工具修改此安全权限。
解决方法,给NETWORK SERVICE 加上访问iis服务的权限,具体方法如下:
点击“开始”-“控制面板”-“管理工具”-“组件服务”-“计算机”-“我的电脑”-“DCOM”选项,
选择其下的“IIS ADMIN SERVICE”,右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自定义”,添加帐号“NETWORK SERVICE ”,给该帐号赋予“本地启动”和“本地激活”的权限,重新启动IIS之后再访问同一站点,则一切正常。
9:重启IIS中的特定应用程序池命令和自动重启的方法
在操作系统是Windows server 2003 SP1+的情况下,可以用以下命令部分重启IIS应用程序池:
cscript.exe c:\windows\system32\iisapp.vbs /a "DefaultAppPool"
其中/a 代表alternatively,"DefaultAppPool"代表应用程序池的实例名。如果要设置自动重启这个应用程序池,可以尝试放在批处理中,用计划任务调用此批处理即可。很多人觉得计划任务不安全,都要禁掉,事实上,计划任务的不安全是建立在其它方面不安全的前提上的,如果由于其它方面的不安全,被放入执行程序,计划任务执行,这和计划任务没有直接关系。当然,关掉,是会减少一些安全隐患,这是不错。