中国个人站长论坛's Archiver

qingqing12 发表于 2004-12-8 00:01

[推荐]提高IIS的安全性

步骤一:使用专用的Web组

1 用user manager建立一个名为WWW的本地组
2 将IWAM_账号从Guests组中删除,加入WWW组
3 赋予WWW组“access this computer from the network”权限,让IIS能执行一个本地登录操作
4 重起WWW服务
5 在Web根目录下执行命令行操作:

CACLS <DIR>\*.* /T /E /C /G WWW:R

参数    Meaning
<DIR>\*.*  Web根目录。在 With IIS 4.0 中通常是 C:\Inetpub\WWWRoot.  
/T  作用于所有的目录和子目录  
/E  编辑ACL,不是替换  
/C  有错误停止执行.  
/G WWW:R  赋予WWW组Read权限  

这样Web目录下的所有文件都承认WWW组的读权限了。别忘了在其他包含Web内容的目录下执行这个命令(主要是虚拟目录)

步骤二:删除Everyone组

完成以上操作后,Internet用户只能看所允许的文件了。但这还不够,因为everyone组还存在,现在需要将everyone组从计算机中的所有文件中清除出去。
但清除everyone组不象想象的那么简单。省缺下,许多Microsoft DLL文件在ACL中之只列了everyone组。如果一杆子打到底,这些DLL文件就无人可以访问了。因为一删除everyone组,ACL就空了,空的ACL意味着任何访问者都没有权限。执行以下命令:

CACLS C:\*.* /T /E /C /G Users:F /R Everyone

参数  Meaning
/G Users:F  赋予Users组所有权限
/R Everyone  取消Everyone组所有权限

这样可以保证ACL中不为空。然而这样做带来两个问题:本机完全开放给本地网络;变动太多的系统文件权限。最好的方法其实是找出那些文件只有everyone组权限,不幸地是WindowsNT没有提供该功能,但有一些第三方工具能做到这个功能。(原文中没有提到到底是哪些工具)如果有这些工具的话,该命令改为:

CACLS C:\*.* /T /E /C /R Everyone

步骤三:处理数据库

如果你的系统包括数据库或ActiveX,例如搜索引擎,guest book什么的,那还需要执行步骤三。对于guest book,执行:

CACLS /T /E /C /G WWW:C

参数  Meaning
/G WWW:C  赋予 WWW 组change权限.

这时,你可能会发现从Web上还是无法更新guest book,甚至连数据库读操作都无法执行。如果出现这种情况,你一定是使用了ODBC连接数据库。问题就出在ODBC的临时文件。当ODBC 建立时,系统会建立一个临时文件记录锁定信息等。省缺情况下,这些文件是存放在system32目录下。Internet用户是没有在该目录下写和创建的权限的。比较好的解决办法是指定另一个Internet用户有权限的目录来存放ODBC临时文件。在Control Panel的system applet中加入以下系统变量

变量  
TEMP  %SystemDrive%\TEMP
TMP  %SystemDrive%\TEMP

然后给该目录授权:

CACLS C:\TEMP\*.* /E /C /G WWW:F

然后重启机器。

步骤四:ActiveX 部件

如果使用ASP去连结数据库,还会有问题。ASP使用ActiveX部件ADO 去访问数据库。一个ASP连结数据库的典型语法是:

var DBConn = Server.CreateObject('ADODB.Connection');

ADODB.Connection是一个Program ID,实际上是一个文件。在实际使用中要被翻译成实际的地址以便调用。这个信息被记录在注册表的 HKEY_CLASSES_ROOT 段中。现在明白要改什么了吗?就是要给ADODB.Connection所在目录加上WWW组的读权限。用Regedit去找到该目录吧。


页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.