论坛登陆名: Stone " }5 ~* X {3 n, r! H5 p提交者邮件地址: Stone@126.com$ K2 x" S! `; A( q! W
提交者QQ号码: ! Z9 N n' R$ W5 d$ U
版权:文章属中华安全网http://www.safechina.net和作者共同所有,转载请注明出处!!! g! S" [& J; k( {
标题: 探秘Windows Server2003安全性 ! H- N2 N. A1 B% X& V& ~ ; k7 E6 n" j; ]. W9 n) i( l* } 早在2002年1月,微软启动了“可信赖计算”这一针对Windows平台安全性的计划。这一计划直接影响了微软下一批产品(建立在.NET框架之上)的发行日期,不过额外增加的数月开发时间确实使新产品的安全性、稳定性超过了它们的前辈。 4 H; O$ C6 e: o, q Y) Q. ~3 J( y. Y* [$ F4 A
在这篇文章中,我们将一起探究Windows 2003 Server增强的安全机制。新的操作系统中提高安全性的新特性随处可见,但这里我们只注重大多数Windows用户和管理员最关心的地方,借此粗略感受一下Windows Server 2003新的安全机制。 & x* O3 v) _& z- o4 j- y7 E- T2 @ B 9 n% z9 c' u" f8 X* ]6 S一、NTFS和共享权限 9 U, P3 |% [' K' H. W, R" X7 e$ c
, }6 f+ W. B$ V" E% }) J; t 在以前的Windows中,默认的权限许可将“完全控制”授予了Everyone组,整个文件系统根本没有安全性可言(就本地访问来说)。但从Windows XP Pro开始,这种情况改变了。 ; O. q. v7 C- e' V: _* @- v
" l( F- z( M, T f: F) C# b. X' ~ 授予Everyone组的根目录NTFS权限只有读取和执行,且这些权限只对根文件夹有效,请参见图1。也就是说,对于任何根目录下创建的子文件夹,Everyone组都不能继承这些权限。对于安全性要求更高的系统文件夹,例如Program Files和Windows文件夹,Everyone组也已经从ACL中排除出去。(说明:ACL即“访问控制列表”,或Access Control List,它是一种安全保护列表,适用于整个对象、对象属性组或某个对象个别属性。Windows Server 2003有两种访问控制列表类型:随机和系统)。 ( C9 Y8 J; V. s, k: _
' _, k* P% F4 ?% i* z! P' n
# A, Z% U: R7 c" R- r : {# t3 u/ n: \8 R ' l w3 t4 [ C( R/ ^* e4 ?图18 g* c+ j8 n @$ a4 ?* o8 j( o
) E# P: U/ i2 s( N7 I7 p f' z - V2 X" _# D+ w7 t% e. i Users组除了读取和运行之外,还能够在子文件夹下创建文件夹(可继承)和文件(注意,根驱动器除外)。授予System帐户的权限和本地Administrators组成员的权限仍未改变,它们仍拥有对根文件夹及其子文件夹的完全控制权限。CREATOR OWNER仍被授予子文件夹及其包含的文件的完全控制权限,也就是允许用户全面管理他们自己创建的子文件夹。 , R" ~, I5 J+ P1 t( U G$ H& c c. Z0 f
对于新创建的共享资源,Everyone现在只有读取的权限。 ; J, d7 V# E( e * o1 P. t9 S4 R% x' L0 x3 { 另外,Everyone组现在不再包含匿名SID(安全标识符,一种不同长度的数据结构,用来识别用户、组和计算机帐户。网络上每一个初次创建的帐户都会收到一个唯一的 SID。Windows中的内部进程将引用帐户的SID而不是帐户的用户名或组名),进一步减少了未经授权访问文件系统的可能性。要快速查看文件或文件夹的NTFS权限,可以用右键点击文件或文件夹,选择“安全”选项卡,点击“高级”,然后查看“有效权限”页,如图2所示,不用再猜测或进行复杂的分析来了解继承的以及直接授予的NTFS权限。不过,这个功能还不能涵盖共享权限。 , B3 u* S3 ?3 G! ]- } {; y* U) g: H0 c% T. l/ N% w* X
6 K6 \, W0 P5 I; h1 M
% e: t' ^+ @$ k4 V$ h1 q
# t$ g6 j# v1 b9 R 在本地系统验证方面,默认的设置限制不带密码的本地帐户只能用于控制台。这就是说,不带密码的帐户将不能再用于远程系统的访问,例如驱动器映射、远程桌面/远程协助连接。 9 [1 Q0 @9 M7 Y# Y! n
5 ?) B) U( l0 P( X1 t. \ 活动目录验证的变化在跨越林的信任方面特别突出。跨越林的信任功能允许在林的根域之间创建基于Kerberos的信任关系(要求两个林都运行在Windows 2003功能级别上)。在 Windows Server 2003林中,管理员可创建一个林,将单个林范围外的双向传递性扩展到另外一个Windows Server 2003林中。在Windows Server 2003林中,这种跨越将两个断开连接的Windows Server 2003林链接起来建立单向或双向可传递信任关系。双向林信任用于在两个林中的每个域之间建立可传递的信任关系。 8 c) A3 W; H7 }) _
& M% W- @2 o7 V5 D; }1 v 林信任具有许多优点: 7 Z% H! |* K' `4 l' Q; E+ C * b& d: O9 A G, v& l" f; @% v ⑴ 通过减少共享资源所需的外部信任数,使得跨越两个 Windows Server 2003林的资源的管理得以简化。 $ z o" R+ a4 d8 h# A
- C$ B1 M0 ]# s/ P) [5 D& u4 _5 O
⑵ 每个林中每个域之间的完全的双向信任关系。 ) e/ `. F; A+ w: T4 g! H5 |( o' }- ^
" r- }* E# L; D5 \8 m1 n
⑶ 使用跨越两个林的用户主体名称(UPN)身份验证。 1 X6 H* T f$ Z1 l1 L
2 Q& p: c" U# _ t! A ⑷ 使用Kerberos V5和NTLM身份验证协议,提高了林之间传递的授权数据的可信度。 $ `# N5 R5 l) A3 n! r+ l3 v6 N
⑸ 灵活的管理。每个林的管理任务可以是唯一的。 1 R4 S- [0 D9 G9 D |; ^; @, I: n4 m4 v; U3 o9 L
林信任只能在两个林之间创建,不能隐式扩展到第三个林。也就是说,如果在林1和林2之间创建了一个林信任,在林2和林3之间也创建了一个林信任,则林1和林3之间没有隐式信任关系。 % p* c3 I5 y1 k: r
' f" b6 d( j$ f9 o& @3 v 注意:在Windows 2000林中,如果一个林中的用户需要访问另一个林中的资源,管理员可在两个域之间创建外部信任关系。外部信任可以是单向或双向的非传递信任,因此限制了信任路径扩展到其他域的能力。但在Windows Server 2003 Active Directory中,默认情况下,新的外部信任和林信任强制SID筛选。SID筛选用于防止可能试图将提升的用户权限授予其他用户帐户的恶意用户的攻击。强制SID筛选不会阻止同一林中的域迁移使用SID历史记录,而且也不会影响全局组的访问控制策略。 ?8 R( S, Z. _ D& K! r, P2 S
+ A- L6 u1 T2 b7 Y: Y, f! z. f/ @2 _ 在默认配置下,身分验证是在林的级别上进行的,来自其他林的责任人将被授予与本地用户和计算机同样的访问能力。但无论是谁,都受到设置在资源上的权限的约束。 & j K q; l9 D- j4 _* d1 O$ `. U- {/ e
如果上述默认配置不能满足要求,你可以配置选择性验证,不过这要有Windows 2003的林功能级别。在这种配置方式中,你可以指定哪些来自其他林的用户或组允许通过验证,以及选择本地林的哪些资源可用来执行验证。具体设置分两步进行。 # ]* ?2 Z6 ^% W8 |- d8 R3 F8 P) H- I/ E+ U. p5 M4 n3 T- S
第一步是授予来自其他林的责任人允许验证的权限。例如,假设有两个Windows 2003功能级别的林ForestA和ForestB,两者之间有信任关系。ForestA中DomainA域的UserA用户需要访问ForestB中DomainB域ServerB服务器的ShareB共享资源。要达到这个目标,必须按如下方式操作: 6 r! h$ F* e1 i- N0 U y) n2 g 7 l" X2 f2 }* ^* e+ { ⑴ DomainA的管理员在DomainA域中创建一个全局组(例如GroupA),其中包含成员UserA。虽然可以直接授予UserA适当的权限(这种方式的优点之一是透明),但如果用户数量较多,直接配置各个用户的话效率就很低了。 1 \8 g. H) n* x. L9 F. ~
8 D% S# \$ M1 ]0 k; C9 {. r4 N7 J! s }
⑵ 启动Active Directory用户和计算机管理器,找到DomainB,再找到ServerB,双击ServerB的图标,打开它的属性对话框。 5 U) m# g1 \1 R6 q9 z
9 J! Y( F6 m2 V9 ]- }; K1 u
⑶ 转到安全设置页,将DomainA\GroupA加入到窗口上方的清单。在窗口下方,选中“允许验证”和“读取”权限的“允许”选项。第一步的设置到这里完成,我们已经允许DomainA\GroupA的成员访问DomainB\ServerB时执行验证。 ) H7 a U8 T1 q* _ # I" O$ i8 B5 d, \! y+ @* K 第二步很简单,只要把ServerB服务器ShareB共享资源上适当的权限授予DomainA\GroupA全局组即可(或者,也可以将DomainA\GroupA全局组加入到DomainB域本地组,然后对本地组授权)。 5 b2 E3 u4 {, v0 H' G" J2 r0 E, W. h
结束语:本文只涉及了Windows 2003安全性很小的一方面,许多重要的主题尚未涉及,例如Active Directory安全特性(SID过滤等),以及托管、非托管代码的应用程序代码控制等。尽管如此,我们已经可以体会到微软宣称的“迄今为止微软最强大的Windows服务器操作系统”确实在安全性方面作了许多改进。