7.7 实例研究,Windows2000的安全性
7.7.1 Windows2000安全性概述
Windows2000提供了一组全面的、可配置的安全性服务,这些服务达到了美国政府用于受托操作系统的国防部 C2级要求。
Windows NT Server和 Windows NT
Workstation 3.51的独立和网络配置都通过了英国信息技术安全评估和认证 (UK Information
Technology Security Evaluation and
Certification,ITSEC)委员会的 F-C2/E3级认证。
以下是安全性服务及其需要的基本特征:
l 安全登录机构:要求在允许用户访问系统之前,
输入唯一的登录标识符和密码来标识自己 。
l 谨慎访问控制:允许资源的所有者决定哪些用户可以访问资源和他们可以如何处理这些资源 。
所有者可以授权给某个用户或一组用户,允许他们进行各种访问 。
l安全审核:提供检测和记录与安全性有关的任何创建,访问或删除系统资源的事件或尝试的能力 。 登录标识符记录所有用户的身份,这样便于跟踪任何执行非法操作的用户 。
l内存保护:防止非法进程访问其他进程的专用虚拟内存 。 另外,Windows2000保证当物理内存页面分配给某个用户进程时,这一页中绝对不含有其他进程的脏数据 。
Windows2000引进了一系列安全性术语,例如活动目录,组织单元,用户,组,域,安全 ID,访问控制列表,访问令牌,用户权限和安全审核 。
与 Windows NT4比较,为适应分布式安全性的需要,Windows2000对安全性模型进行了相当的扩展 。 包括:
l活动目录:为大域提供了可升级,灵活的账号管理,允许精确地访问控制和管理委托 。
lKerberos 5身份验证协议:它是一种成熟的作为网络身份验证默认协议的 Internet安全性标准,为交互式操作身份验证和使用公共密钥证书的身份验证提供了基础 。
l基于 Secure Sockets Layer 3.0的安全通道 。
lCryptoAPI 2.0:提供了公共网络数据完整性和保密性的传送工业标准协议 。
7.7.2Windows2000安全性系统组件实现 Windows2000的安全性系统的一些组件和数据库如下:
l安全引用监视器 (SRM):是 WindowsNT执行体
(NTOSKRNL.EXE)的一个组件,该组件负责执行对对象的安全访问的检查,处理权限 (用户权限 )
和产生任何的结果安全审核消息 。
l本地安全权限 (LSA)服务器:是一个运行映像
LSASS,EXE的用户态进程,它负责本地系统安全性规则 (例如允许用户登录到机器的规则,密码规则,授予用户和组的权限列表以及系统安全性审核设置 ),用户身份验证以及向,事件日志,发送安全性审核消息 。
l安全账号管理器服务器:是一组负责管理数据库的子例程,这个数据库包含定义在本地机器上或用于域 (如果系统是域控制器 )
的用户名和组 。 SAM在 LSASS进程的描述表中运行 。
lSAM数据库:是一个包含定义用户和组以及它们的密码和属性的数据库 。 该数据库被保存在 HKEY-LOCAL-MACHINE\SAM下的注册表中 。
l默认身份认证包:是一个被称为 MSV1_0,DLL的动态链接库
(DLL),在进行 WIndows 身份验证的 LSASS进程的描述表中运行 。
这个 DLL负责检查给定的用户名和密码是否和 SAM数据库中指定的相匹配,如果匹配,返回该用户的信息 。
l登录进程:是一个运行 WINLOGON.EXE的用户态进程,它负责搜寻用户名和密码,将它们发送给 LSA用以验证它们,并在用户会话中创建初始化进程 。
l网络登录服务:是一个响应网络登录请求的 SERVICES.EXE进程内部的用户态服务 。 身份验证同本地登录一样,是通过把它们发送到 LSASS进程来验证的 。
保护对象是谨慎访问控制和审核的基本要素 。
Windows2000上可以被保护的对象包括文件,
设备,邮件槽,己命名的和未命名的管道,进程,线程,事件,互斥体,信号量,可等待定时器,访问令牌,窗口站,桌面,网络共享,
服务,注册表键和打印机 。
7.7.3Windows2000保护对象所有可安全的对象在它们被创建时都将被分配“安全描述体” (security
descriptor)。
安全描述体控制哪些用户可以对访问的对象做什么,它包含下列主要属性:
l所有者 SID:所有者的安全 ID。
l组 SID:用于对象主要组的 SID(只有 POSIX使用 )。
l谨慎访问控制列表 (DACL):指定谁可以对访问的对象做什么 。
l系统访问控制列表 (SACL):指定哪些用户的哪些操作应登录到安全审核日志中 。
访问控制列表 (ACL)
包括一个 ACL头和零个或多个,访问控制项,(ACE)结构 。 具有零个 ACE的 ACL被称为,空 ACL”,表示没有用户可以访问该对象 。
在 DACL中,每个 ACE都包含一个安全标识和访问掩码。 DACL中可能存在两种类型的 ACE:访问允许和访问拒绝。
分配 ACL:
要确定分配给新对象的 ACL,安全系统将应用三种互斥的规则之一,步骤如下:
(1)如果调用者在创建对象时明确提供了一个安全描述体,则安全系统将把该描述体应用到对象中 。
(2)如果调用者没有提供安全描述体,而对象有名称,
则安全系统将在存储新对象名称的目录中查看安全描述体 。 一些对象目录的 ACE可以被指定为可继承的,表示它们可以应用于在对象目录中创建的新对象上 。 如果存在可继承的 ACE,安全系统将它们编入 ACI,并与新对象连接 。 (单独的标志表明 ACE只能被容器对象继承,而不可能被非容器对象继承 。 )
(3)如果以上两种情况都没有出现,安全系统会从调用者访问令牌中检索默认的 ACL,并将其应用到新对象 。 操作系统的几个子系统有它们在创建对象时分配的硬性编码 DACL(例如,服务,LSA和 SAM对象 )。
决定访问对对象的有效访问有两种算法:
l其一是确定允许访问对象的最大权限
( 可 以 使 用 WIN32 的
GetEffectiveRightsFromAcl函数 )。
l其二是确定是否允许一个特定的所希望的访问 (可以使用 WIN32的 AccessCheck、
AccessCheckByType 和
TrusteeAccessToObject函数 )。
第一种算法通过检查 ACL中的项来生成授予访问掩码和拒绝访问掩码,步骤如下:
第二种算法依据调用者的访问令牌来确定是否授予所申请的指定访问权限。
7.7.3.2 访问令牌与模仿
“访问令牌,是一个包含进程或线程安全标识的数据结构:安全 ID(SID)、用户所属组的列表以及启用和禁用的特权列表。
每个进程都从它的创建进程继承了一个首选访问令牌
7.7.4Windows2000安全审核
7.7.5 Windows2000登录过程登录是通过登录进程 (Winlogon),ISA、
一个或多个身份验证包和 SAM的相互作用发生的 。 身份验证包是执行身份验证检查的 DLLo MSVl0是一个用于交互式登录的身份验证包 。
WinLogon是一个受托进程,负责管理与安全性相关的用户相互作用。
WinLogon是从键盘截取登录请求的唯一进程 。 它将调用 LSA来确认试图登录的用户 。 如果用户被确认,那么该登录进程就会代表用户激活一个登录外壳 。
登录进程的认证和身份验证都是在名为
GINA(图形认证和身份验证 )的可替换
DLL中实现的。
开发者们可以使用他们自己的 GINA.DLL
来实现其他的认证和身份验证机制,从而取代标准的 Windows用户名/口令的方法 。
另外,WinLogon还可以加载其他的网络供应商的 DLL来进行二级身份验证 。 该功能能够使多个网络供应商在正常登录过程中同时收集所有的标识和认证信息 。
7.7.5.1 WinLogon初始化系统初始化过程中,W1nLogon将进行一些特定的步骤以确保一旦系统为用户做好准备,它能够控制工作站:
l创建并打开一个窗口站以代表键盘,鼠标和监视器 。 WinLogon为窗口站创建一个安全描述体,该站有且只有一个只包含 WinLogon SID的 ACE。 这个唯一的安全描述体确保没有其他进程可以访问该工作站,除非得到 WinLogon的明确许可 。
l建 并 打 开 三 个 桌 面,应 用 程 序 桌 面,
WinLogon 桌面和屏幕保护程序桌面 。 在
W1nLogon 桌 面 上 创 建 安 全 性 以 便 只 有
W1nLogon可以访问该桌面 。 其他两个桌面允许 Winlogon和用户访问 。 这种安排意味着任何情况下 WlnLogon桌面都是被激活的,其他的进程不能访问与该桌面相关的任何激活的代码或数据 。 WindOws2000利用该特性来保护包括口令,锁定和解锁桌面的安全操作 。
l建立与 LSA的 LPC连接 。 该连接将用于在登录,
注销和口令操作期间交换信息,这些都通过调用 LsaRegisterLogonProcess来完成 。
l调用 LsaLookupAuthenticationPackage 来获得与 MSVl_0相关的 ID,它将在试图登录时用于身份验证操作 。
WinLogon执行特定的 Windows操作来设置窗口环境:
l用它随后创建的窗口初始化并注册一个与
WinLogon程序相关的窗口等级的数据结构 。
l用刚创建的窗口注册与之相关的安全注意序列 (SAS)热键序列,保证在用户输入 SAS时,
WinLogon的窗口程序能够被调用 。
l注册该窗口以便在用户注销或屏幕保护程序时间到时的时候能调用与该窗口相关的程序 。
WIN32子系统检查以验证请求通知的进程是
WinLogon进程 。
7.7.5.2 用户登录步骤
7.7.6 Windows2000的活动目录活动目录是 Windows2000中最重要的新特性之一 。 它将大大简化与执行和管理
Windows2000大型网络有关的任务,同时,它也将改善用户与网络资源问的交互性 。
活动目录存储了有关网络上所有资源的信息,它使开发者、管理员和用户可以很容易地找到和使用这些信息。
活动目录提供一组单一、一致和开放的接口,用于执行通用的管理任务,如在分布式计算环境中添加新的用户,管理打印机和定位资源等。
这一目录结构具有以下主要特性:
l 灵活的分级结构
l 有效的多主机复制
l 粒状安全授权
l 新对象类和属性的可扩展存储
l 通过轻量目录访问协议 (LDAP)版本 3支持实现的基于标准的相互操作性
l 每一个存储中可达到上百万对象
l 集成动态域名系统 (DNS)服务器
l 可编程类存储
7.7.7分布式安全性扩展
Windows2000分布式安全服务的一些重要特征 。
l 活动目录对所有域安全策略和账号信息提供存储 。 为多域控制器 (以前称为,备份域控制器,)提供账号信息的复制和可用性的活动目录可用于远程管理 。 其他域控制器上活动目录的多主机复制自动得到更新和同步 。
l 对于用户,组和计算机账号信息,活动目录支持多级分层树状名称空间 。 账号按组织单元分组,而不是由 Windows NT早期版本提供的呆板的域账号名称空间 。 域之间信任关系的管理,是通过整个域树间的信任传递得到简化的 。
l创建和管理用户或组账号的管理员权限可以委派给组织单元级 。 访问权限可由用户对象上授权的单独属性授予 。 例如,一个特定的个人或组有权重新设置密码,但不能修改其他账号信息 。
lWindows2000安全性包括以 Internet标准安全协议为基础的新身份验证,Internet标准安全协议包括用于分布式安全协议的 Kerberos 5和传输层安全性 (TLS)。 此外,为获得兼容性,还包括对 Windows NT LAN Manager身份验证协议的支持 。
l安全通道安全协议的实施,以公用密钥证明的形式,通过映射用户证书到现有的 Windows
2000账号中,支持客户身份验证 。 不论用户使用共享的秘密身份验证,还是公用密钥安全性,
都可使用公用管理工具管理账号信息和访问控制 。
l除了密码,Windows2000支持用于相互作用登录的智能卡的选择使用 。 智能卡支持密码系统,以及对于私人密钥与证书的安全存储,这些私人密钥与证书使强大的身份验证从桌面到 WindowsNT域都得到实现 。
lWindows NT为那些给其雇员和商业伙伴发行 X.509版本 3证书的组织提供 Microsoft证书服务器 。 Windows 2000引入了 CryptoAPI证书管理 API和处理公用密钥证书的模块,其中包括由商业证书裁定,第三方证书裁定或者包括在 Windows2000中的 Microsoft证书服务器发布的标准格式证书 。 系统管理员定义在其环境中委托哪些证书裁定,这些证书可以被客户身份验证及访问资源所接受 。
l对于那些没有 Windows 2000账号的用户,可以使用公用密钥证书进行身份验证,并将其映射到现有的 Windows NT账号中 。 已定义的
Windows2000账号访问权限决定了外部用户能够在系统上使用的资源 。 使用公用密钥证书的客户机身份验证,以可信赖的证书发放机构的证书为基础,允许 Windows2000对外部用户进行身份验证 。
l为了管理私人密钥 /公用密钥对和访问以
Internet为基础的资源,Windows 2000用户拥有易于使用的工具和通用接口对话框 。 个人安全证书的存储使用以磁盘为基础的安全存储,
可以很容易地实现与 Microsoft提议的工业标准协议和个人信息交换的传输 。 同时,操作系统也集成了对智能卡设备的支持 。
7.7.8 Windows2000文件加密
EFS的关键组件:
l Win32API这些 API提供程序设计接口,这些接口用于加密纯文本文件,解密或恢复密码文本文件,导入和导出已加密文件 (事先并不对它们进行解密 )。
l EFS驱动程序 EFS驱动程序被分层在 NTFS
的顶部 。 EFS驱动程序通过与 EFS服务进行通信,
请求文件密钥,DDF,DRF和其他密钥管理服务 。 它将这些信息传递给 EFS文件系统运行时库 (FSRTL),用来透明地执行各种文件系统操作
(打开,读取,写入和附加 )。
l FSRTIJ标注 FSRTL是 EFS驱动程序内部的一个模块,EFS驱动程序通过 执行 NTFS标注,
在己加密的文件和目录上处理各种文件系统操作 (如读取,写入和打开 ),当系统从磁盘写入或读取时,EFS也通过该方式进行加密,解密和恢复文件数据的操作 。 尽管 EFS驱动程序和 FSRTL
作为单一组件被执行,但它们仍然不能直接通信 。 它们使用 NTFS文件控制标注机制相互传递信息,这样可以确保 NTFS的参与者存在于所有的文件操作中 。 使用文件控制机制实现的操作包括以文件属性写入 EFS属性数据 (数据解密字段 [DDF]和数据恢复区字段 [DRF]),将在 EFS服务中已计算的文件密钥传给 FSRTL,这样该密钥就能够安装在打开的文件描述表中 。 在磁盘文件数据的读写上,使用这一文件描述表,可以透明地加密和解密 。
.EFS服务 EFS服务是安全子系统的一部分。
它在本地安全裁定服务器和核心态安全参考监控器之间使用现有的 LPC通信端口与 EFS驱动程序进行通信。
7.7.9 安全配置编辑程序安 全 配 置 编 辑 程 序 的 主 要 目 标 是 为 以
Windows2000为基础的单个站点提供系统安全管理这一编辑程序允许管理员配置和分析系统安全策略,如:用户登录系统的方式和时间,密码策略,整个系统的对象安全性,审核设置,域策略等 。 使用该编辑程序,也能够在用户,文件,目录,服务以及注册表上更改安全设置 。
编辑程序被设计成提供与安全相关的所有系统方面的信息 。 对于整个信息技术
(1T)基础构件,安全管理员们可以查看这些信息,并执行安全风险管理 。