荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: michaelx (???), 信区: Security
标  题: 提高IIS的安全性
发信站: 荔园晨风BBS站 (Wed Oct 17 16:16:11 2001), 转信


提高IIS的安全性
文章类别:ASP技巧   发表日期:2001-9-24
 自动滚屏(右键暂停)
----------------------------------------------------------------------------
----
概要:使用IIS的省缺设置就象把你屋子的钥匙给了别人,本文教你如何把门锁上。(本
文不是100%直译,括号中的是讨饭猫的废话)
没有任何系统是100%安全的,系统漏洞会不断地发现,这是因为黑客和系统管理员一样
也在整天看着新闻组,收集着这方面的信息。黑与反黑之间的战斗会永远进行下去。
如果你采用IIS的省缺设置,那你在这场较量中就已经处于下风。Windows NT省缺下被安
装为一个开放的服务器,即使是菜鸟hacker也能得手。但只要你做下面几个简单步骤,
情况就会有很大改善。虽不敢说攻无不克,至少可以保护你的数据不象小克的拉链门一
样世人皆知。
一个安全的系统要有多层保护。一般的计算机系统有三层保护,物理层,网络层,文件
系统。物理层就是保护好计算机硬件本身,硬盘,软盘不被偷走,这就不用我多说了。
网络层是要保护与Internet和本地LAN的网络连接,主要是靠防火墙和端口的存取权限设
置。最里面的是文件系统,这也是大多数攻击的目标。下面我们主要也就讲这方面。
省缺设置的问题
NT省缺设置成一个开放系统,文件系统是几乎完全没有安全设置的,网络上的任何用户
都可以读写删除其中的文件。这主要原因是NT中大量使用了 Everyone 组(更可怕是省
缺给 full权限),理论上,地球上任何用户都属于everyone组。相比之下,NetWare就
设置为一个封闭的系统,安全性就好很多。为什么Microsoft要做这种蠢事?原因可能是
给最大权限可以减少许多因为权限问题带来的技术支持电话吧。(是这样吗?)
IIS同样也有很多问题。安装IIS时,系统建立一个前缀是IWAM_(早期版本是IUSR_)的帐
户,该帐户属于Guest组,能够存取Guest组和Everyone组权限下的所有文件。在省缺安
装下,90%的系统文件可以被该用户访问。
看来解决方法就是删除所有的everyone组权限了,但实际上这样做行不通。因为IIS不仅
要存取HTML文件,还会调用Script和ActiveX控件,还涉及到DLL的执行,全部取消Ever
yone组权限会使系统出现这样那样的问题。所以要使用一些系统安全工具来一步步做。

系统安全工具
熟悉以下NT系统自带的安全工具是很重要的:
User Manager(usrmgr.exe)
IIS 4.0: Microsoft management console (MMC.EXE)
IIS 3.0: Internet service manager (INETMGR.EXE)
Registry editor (REGEDT32.EXE)
(介绍省略,不相信你没用过)
Command line ACL editor (CACLS.EXE)
这个工具可能知道的人不多,也是NT自带,用于管理access control list(ACL)。
Control panel, system applet
该工具用于管理系统环境变量。
步骤一:使用专用的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文件就无人可以访问了。因为一删除eve
ryone组,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 Pane
l的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去找到
该目录吧。
祝贺你
你现在已经使你的系统安全很多了。但记住,hacker会不断寻找新漏洞来攻破你的系统
,所以这种安全性设置只是与hacker进行的第一场战役。

--
M.X的FTP SERVER
有好多好野down.有过百兆的DELPHI编程资料!还有很多其他FTP无的软件。
不信就进来看看罗!
ftp://192.168.28.123
到网络安全版来玩罗,michaelx随时欢迎你!

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 203.93.19.1]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店