|
1. 缓冲区溢出
( f) w5 E- W" \) d r# B" d- A 简单解释一下,缓冲区溢出主要因为提交的数据长度超出了服务器正常要求,导致服务器检查代码错误。而溢出的方法有可以分为:基于堆栈的溢出和基于堆的溢出。在IIS 6以前的版本,Web服务是运行在LocalSystem账户下,当某个黑客利用缓冲区溢出的漏洞入侵后,当然就可以执行大部分的管理员命令了。5 e0 ]+ U/ ~: X2 I0 ]9 W7 J7 W
' j4 n6 u* `; N4 w! I4 P6 T1 i 利用该漏洞比较名的病毒是“红色代码(Redcode)”和“尼姆达(Nimda)”。eEye Digital Security 公司早于1996年就发现了这类漏洞的代表作HTR缓冲区漏洞。eEye发现,IIS抵抗力十分脆弱。如果攻击传递给IIS,那么输入值将不是一串字母而是可以执行的系统命令。HTR文件的解释程序是将一个以.htr结尾的超长文件在ism.dll中造成输入缓冲区溢出。1 n* E1 f5 a+ E
! u5 J0 S# s8 ]! j. e
我们早已用不到HTR了(笔者个人的理解),那只是早些时候,微软脚本编程用到的,早已经被ASP技术取代。/ m2 `1 t$ n' h, x& e0 }
7 X! i. A X, @9 h4 p6 ? 说明:根据上文的说明我们知道一个漏洞的根源就是.htr文件与System32目录下的ism.dll存在着关联,如果将ism.dll和.htr文件之间存在的映射关系断开,或者删除了ism.dll,就可以解决了。
0 O, f. X, G+ S/ u- X: ~: G
) H }. J$ ^0 H O 2. 臭名昭著的Unicode
( B* D- [. N% b3 o( U( ]; `3 j 0 g0 l3 r! Q9 O3 n/ s5 Y/ S0 E
首先要知道什么是Unicode二次解码漏洞?打开IE,选择“查看→编码→Unicode(UTF-8)”,在没有创造Unicode之前,没有一个编码可以包含足够的字符来容纳数百种的数字编码。比如我们要看一个繁体中文(BIG5)的网页,在你的简体中文版的Windows 系统上,没有Unicode的支持就不可能实现。2 e7 c! [& g4 W$ }2 M& `- X: L
j1 C/ `# T! T; t4 c, {( Z 如果非法用户提交一些特殊的编码,将导致IIS错误地打开或者执行某些Web根目录以外的文件。那么,未经授权的用户可以利用IUSR_machinename账号访问用户目录的任何文件。同时,我们有知道这个账号在默认情况下属于Everyone和Users组,Windows 2000 Server默认的安全权限是“Everyone完全控制”因此任何能被这些用户组访问的文件都可能被删除、修改或执行。# L8 @0 B4 U' ^$ c* P$ b
% \: A' l+ l3 f1 l
说明:可以限制网络用户访问和调用CMD命令的权限;若没必要使用Scripts和Msadc目录,可以删除或者重新命名;还有一个问题,安装Windows NT系统时不使用默认的WINNT路径。
# C ?9 e4 D. e# Y/ K5 Q
3 O* v! d) b% h# f, g! q2 ~) G 3. FrontPage 服务器扩展漏洞
n7 _0 J6 d8 Z 0 ?+ F8 [5 a; O7 k2 W# G0 Q1 |) {
对于安装FrontPage服务器的网站,通常会在Web目录(缺省)下有若干个以字母“_vti”开头的目录,正是这些目录为黑客提供了可乘之机。我们可以从搜索引擎上搜索默认的Frontpage目录,这时我们能从引擎上返回大量的信息。
6 b9 `' m% v# o3 d( c
8 @$ N6 b( ~! n! W* a( m" S 说明:你真的需要FrontPage 服务器扩展吗?我是从来没有用过,这都是默认安装的时候为我们带来的隐患。如果不需要,直接卸载了该服务就没问题了。
+ w2 H/ M! J4 u1 O* U
4 ^. s, Y a# o9 d7 b IIS加固策略的建议" |2 H$ x9 Z- O. Q+ [/ ^
7 Z# z3 W% C3 X3 J& S( x0 O
你得到的网站源代码不会完全一样,而大多数程序员不会为你只提供一种类型的代码。所以不要完全按照下面的加固列表操作,尤其在加固之前要和程序的提供商取得联系。在得到他们确认后,修改本文中涉及到服务器扩展内容。4 Q% ]- m: p! _" g2 V( @/ q
7 P" e# f9 J3 _
1. 调整IIS日志
$ _3 I, q% k) U& M
) g) n8 E, N' `5 ]' C 当您希望确定服务器是否被攻击时,日志记录是极其重要的。默认的日志不会为我们搜索黑客记录提供很大的帮助,所以我们必须扩展 W3C日志记录格式,步骤如下: 6 Q2 Y, D; q: d5 |2 h( O4 F2 X0 R& e
9 j' O1 y) N2 { Y+ b2 r
★检查是否启用了日志记录,右键单击所述站点,然后从上菜单中选择启用“属性→Web 站点→启用日志记录”复选框。, z, A# i; w& [, \
! N2 b# o, }' x% h- F ^ ★更改日志的默认路径,黑客成功入侵一个系统后,临走时要做的一件事就是清除日志,如果以图形界面的远程控制软件或是从终端登录进入,我们自然是无法保护日志的。不过,现在比较流行的日志清除工具,大多以命令行方式删除默认的W3C日志记录,所以可以将图1所示的路径改写,达到简单保护的功能。# o! ?6 s0 Q5 k5 ]$ L+ l
* d- J& F B$ x" S9 x. U ★从“活动日志格式”下拉列表中选择“W3C 扩展日志文件格式”。单击“属性→扩展属性”选项卡,然后添加以下信息的记录:客户IP 地址、用户名、方法、URI 资源、HTTP 状态、Win32 状态、用户代理、服务器 IP 地址、服务器端口。1 |- z- f! d1 w8 N+ ^% J
! E9 H" F7 T0 Z. O 日志记录是我们被入侵后惟一能够找到自身漏洞的地方。就比如有些人钟爱的“动网上传文件”漏洞,如果你能在日志当中发现“HTTP GET 200(文件上传成功)”,没什么可以辩解的,肯定是没有升级补丁或者开放了上传权限。所以说日志防护是每个管理员必备的知识。) i `( u$ @, Y$ P# ]3 c1 B
: n! j+ O! c i7 r! j* n" X) l 2. 删除IIS所有默认示例' V0 ?. B, _( B1 z' ?+ o
( M ^4 g( `% y6 [4 ^, J
这是一个在Windows 2000和Windows Server 2003上都在安装的时候保留的内容,因为只能从本地访问这些文件,所以这些默认的示例不会为服务器带来威胁。如果不需要它们作为建立站时的参照以及远程的管理帮助,可以删除它们,同时起到优化系统的功能(需要关闭IIS服务)。
5 e, R; f$ I% t: X, ] , G6 T. k$ u- G# n! j A9 z
3. 删除不必要扩展映射
/ Z+ ?; c) q c$ \2 E& g6 C- e
7 d# z* u2 y2 a) w8 ]& m) m# ? IIS 5被预先配置为支持如.asp这样的动态程序文件,但除了我们常用的几个文件格式之外,还支持了本文中提到的可能造成缓冲区溢出的文件类型。IIS 接收到这些类型的文件请求时,该调用由 DLL 处理,所以最好删除它们。7 \9 w9 s9 g( |1 m& A0 N
9 ^3 `6 Y* e2 U& o( k% q
选择“WWW服务→编辑→主目录→应用程序配置”,参照下表有针对性的选择删除对象:
: K/ A( L, \7 k ) b) X' I# @8 R' ^
IIS 6 的全新奉献
0 [2 B. r- f/ G: ~: n' k D , D; c6 l$ \/ n! U
我们常在网上看到关于Windows Server 2003 已经非常安全的报道,但是我们的管理员不是每天做个补丁更新的工作吗?其实,Windows Server 2003中给我带来最直接的感觉就是IIS 6的安全性,直到现在为止笔者确实没有发现IIS 6中有什么重大的漏洞可以被黑客利用。
6 Q% v6 M7 m3 ? : a: p$ b1 w4 m* \
工作进程隔离(Worker Process Isolation)以及URL的授权访问,我在以前版本里面根本就没有奢念。不仅如此,最主要的改进就是IIS本身的“默认可用性”和“默认锁定扩展服务” (如图2)。
7 {; z& d- u n0 q$ \2 } . h9 I- }/ K: W; y$ ^
当把服务器升级到Windows Server 2003的时候,如果你没有运行IISLockdown工具,服务器竟然禁止我们提供Web服务。 |