Windows NT 4的安全结构

日期: 2008-01-13 来源:TechTarget中国

  一、Windows NT的安全架构

      首先我们来了解一下 Windows NT 平台的安全的结构, Windows NT 的安全包括 6 个主要的安全元素: Audit,Administration,Encryption,Access Control,User Authentication,Corporate Security Policy 。

        Windows NT 系统内置支持用户认证、访问控制、管理、审核。

     Windows NT 安全组件:

      由于 Windows NT 是 C2 级别的操作系统,下面介绍作为 C2 级别的操作系统中所包含的安全组件:

  访问控制的判断( Discretion access control )

  按照 C2 级别的定义, Windows NT 支持对象的访问控制的判断。这些需求包括允许对象的所有者可以控制谁被允许访问该对象以及访问的方式。 

  对象重用( Object reuse )
 
  当资源(内存、磁盘等)被某应用访问时, Windows NT 禁止所有的系统应用访问该资源,这也就是为什么 Windows NT 禁止 undelete 已经被删除的文件的原因。 

  强制登陆( Mandatory log on )

  与 Windows for Workgroups , Windwows 95 , Windows 98 不同, Windows NT 要求所有的用户必须本地登陆,通过认证后才可以访问资源。但由于网络连接缺少强制的认证,所以 Windows NT 作为 C2 级别的操作系统必须是未连网的。

  审核( Auditing ) ( 审计 )

  Windows NT 在控制用户访问资源的同时,也可以对这些访问作了相应的记录。

  对象的访问控制( Control of access to object )
 
  Windows NT 不允许直接访问系统的某些资源。必须是该资源允许被访问,然后是用户或应用通过第一次认证后再访问。

  二、Windows NT的对象

  为了实现自身的安全特性, Windows NT 把所有的资源作为系统的特殊的对象。这些对象包含资源本身, Windows NT 提供了一种访问机制去使用它们。由于这些基本的原因,所以我们把 Windows NT 称为基于对象的操作系统。

  Microsoft 的安全就是基于以下的法则:

     1、用对象表现所有的资源

  1、只有 Windows NT 才能直接访问这些对象

  1、对象能够包含所有的数据和方法

  1、对象的访问必须通过 Windows NT 的安全子系统的第一次验证

  1、存在几种单独的对象,每一个对象的类型决定了这些对象能做些什么

  Windows 中首要的对象类型有:

  1、文件
  2、文件夹
  3、打印机
  4、I/O 设备
  5、窗口
  6、线程
  7、进程
  8、内存

  这些安全构架的目标就是实现系统的牢固性。从设计来考虑,就是所有的访问都必须通过同一种方法认证,减少安全机制被绕过的机会。

  三、Windows NT安全子系统的组件

  Windows NT 安全子系统包含五个关键的组件: Security identifiers , Access tokens , Security descriptors , Access control lists , Access Control Entries 。

        安全标识符( Security Identifiers ) :

      也就是我们经常说的 SID ,每次当我们创建一个用户或一个组的时候,系统会分配给改用户或组一个唯一 SID ,当你重新安装 Windows NT 后,也会得到一个唯一的 SID 。

     SID 永远都是唯一的,由计算机名、当前时间、当前用户态线程的 CPU 耗费时间的总和三个参数决定以保证它的唯一性。

  例:

  S-1-5-21-1763234323-3212657521-1234321321-500

       访问令牌( Access tokens ) :

  用户通过验证后,登陆进程会给用户一个访问令牌,该令牌相当于用户访问系统资源的票证,当用户试图访问系统资源时,将访问令牌提供给 Windows NT ,然后 Windows NT 检查用户试图访问对象上的访问控制列表。如果用户被允许访问该对象, Windows NT 将会分配给用户适当的访问权限。

  访问令牌是用户在通过验证的时候有登陆进程所提供的,所以改变用户的权限需要注销后重新登陆,重新获取访问令牌。

        安全描述符( Security descriptors ):

  Windows NT 中的任何对象的属性都有安全描述符这部分。它保存对象的安全配置。

  访问控制列表( Access control lists ):

  访问控制列表有两种:任意访问控制列表( Discretionary ACL )、系统访问控制列表( System ACL )。任意访问控制列表包含了用户和组的列表,以及相应的权限,允许或拒绝。每一个用户或组在任意访问控制列表中都有特殊的权限。而系统访问控制列表是为审核服务的,包含了对象被访问的时间。

  访问控制项( Access control entries ) :

  访问控制项( ACE )包含了用户或组的 SID 以及对象的权限。访问控制项有两种:允许访问和拒绝访问。拒绝访问的级别高于允许访问。

  当你使用管理工具列出对象的访问权限时,列表的排序是以文字为顺序的,它并不象防火墙的规则那样由上往下的,不过好在并不会出现冲突,拒绝访问总是优先于允许访问的。

  四、Windows NT的安全子系统的实现(Security subsystem)

  我们已经了解了安全子系统的这些组件,然后我们来介绍一下 Windows NT 具体是用一些什么软件来实现。

      安全子系统包括以下部分:

  Winlogon    
  Graphical Identification and Authentication DLL (GINA)
  Local Security Authority(LSA)
  Security Support Provider Interface(SSPI)
  Authentication Packages
  Security support providers
  Netlogon Service
  Security Account Manager(SAM)

  Winlogon,Local Security Authority 以及 Netlogon 服务在任务管理器中都可以看到,其他的以 DLL 方式被这些文件调用。

    Winlogon and Gina:

     Winlogon 调用 GINA DLL ,并监视安全认证序列。而 GINA DLL 提供一个交互式的界面为用户登陆提供认证请求。 GINA DLL 被设计成一个独立的模块,当然我们也可以用一个更加强有力的认证方式(指纹、视网膜)替换内置的 GINA DLL 。

     Winlogon 在注册表中查找 HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogon ,如果存在 GinaDLL 键, Winlogon 将使用这个 DLL ,如果不存在该键, Winlogon 将使用默认值 MSGINA.DLL (在 Windows 2000 中为 C:WINNTSystem32msgina.dll )。

  本地安全认证( Local Security Authority ):

  本地安全认证( LSA )是一个被保护的子系统,它负责以下任务:

  调用所有的认证包,检查在注册表 HKLMSYSTEMCurrentControlSetControlLSA 下 AuthenticationPAckages 下的值,并调用该 DLL 进行认证( MSV_1.DLL )。在 4.0 版里, Windows NT 会寻找 HKLMSYSTEMCurrentControlSetControlLSA 下所有存在的 SecurityPackages 值并调用。
 
  重新找回本地组的 SIDs 和用户的权限。
  创建用户的访问令牌。
  管理本地安装的服务所使用的服务账号。
  储存和映射用户权限。
  管理审核的策略和设置。
  管理信任关系。

  安全支持提供者的接口( Security Support Provide Interface ):

  微软的 Security Support Provide Interface 很简单地遵循 RFC 2743 和 RFC 2744 的定义,提供一些安全服务的 API ,为应用程序和服务提供请求安全的认证连接的方法。

  认证包( Authentication Package ):

      认证包可以为真实用户提供认证。通过 GINA DLL 的可信认证后,认证包返回用户的 SIDs 给 LSA ,然后将其放在用户的访问令牌中。

  安全支持提供者( Security Support Provider ):

      安全支持提供者是以驱动的形式安装的,能够实现一些附加的安全机制,默认情况下, Windows NT 安装了以下三种:

  Msnsspc.dll :微软网络挑战 / 反应认证模块
  Msapsspc.dll :分布式密码认证挑战 / 反应模块,该模块也可以在微软网络中使用
  Schannel.dll :该认证模块使用某些证书颁发机构提供的证书来进行验证,常见的证书机构比如   Verisign 。这种认证方式经常在使用 SSL ( Secure Sockets Layer )和 PCT ( Private Communication Technology )协议通信的时候用到。

  网络登陆( Netlogon ):

      网络登陆服务必须在通过认证后建立一个安全的通道。要实现这个目标,必须通过安全通道与域中的域控制器建立连接,然后,再通过安全的通道传递用户的口令,在域的域控制器上响应请求后,取回用户的 SIDs 和用户权限。

  安全账号管理者( Security Account Manager ):

      安全账号管理者,也就是我们经常所说的 SAM ,它是用来保存用户账号和口令的数据库。保存了注册表中 HKLMSecuritySam 中的一部分内容。不同的域有不同的 Sam ,在域复制的过程中, Sam 包将会被拷贝。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐