再介绍些关于Windows安全机制的知识,是在51CTO论坛上看到的不错的文章。
下次开始入正题,谈谈通过编程的方式来获取,编辑安全权限。
概述
Windows不像类UNIX系统一样开源,而且Microsoft也不可能公布基于Windows的源代码.所以,对于早期的Windows版本来
将,企业很难满足Windows的安全现状,因为他们不能根据自己的企业来制定满主自己的解决方案.但是,不断完善的Windows给我们带来的越来越好
的安全性,以及Windows的高部署性给越来越多的企业带来的惊喜,越来越多的企业选择了Windows,也越来越多的人开始研究Windows.包括
Windows在企业的部署以及Windows的安全性和可扩展性.从Widows
NT以来,Microsoft在Windows的安全方面做了很多,最典型的就包括NTFS文件系统.而且结合Microsoft ISA
Server可以让企业的安全性大大提升.本文就Windows现有的安全状况加以分析,让更多的从事Windows管理的专业人员提供更深入的对
Windows的安全了解.
操作系统安全定义
无论任何操作系统(OS),都有一套规范的、可扩展的安全定义。从计算机的访问到用户策略等。操作系统的安全定义包括5大类,分别为:身份认证、访问控制、数据保密性、数据完整性以及不可否认性。
身份认证
最基本的安全机制。当用户登陆到计算机操作系统时,要求身份认证,最常见的就是使用帐号以及密钥确认身份。但由于该方法的局限性,所以当计算机出现漏洞或
密钥泄漏时,可能会出现安全问题。其他的身份认证还有:生物测定(compaq的鼠标认证)指纹、视网模等。这几种方式提供高机密性,保护用户的身份验
证。采用唯一的方式,例如指纹,那么,恶意的人就很难获得除自己之外在有获得访问权限。
访问控制
在WINDOWS
NT之后的WINDOWS版本,访问控制带来的更加安全的访问方法。该机制包括很多内容,包括磁盘的使用权限,文件夹的权限以及文件权限继承等。最常见的
访问控制可以属WINDOWS的NTFS文件系统了。自从NTFS出现后,很多人都从FAT32转向NTFS,提供更加安全的访问控制机制。
数据保密性
处于企业中的服务器数据的安全性对于企业来讲,决定着企业的存亡。加强数据的安全性是每个企业都需考虑的。从数据的加密方式,以及数据的加密算法,到用户
对公司内部数据的保密工作。我们最常见的是采用加密算法进行加密。在通信中,我们最常见的有SSL2.0加密,数据以及其他的信息采用MD5等。虽然
MD5的加密算法已经被破解,但是MD5的安全性依然能后保证数据的安全。
数据完整性
在文件传输中,我们更多考虑的是数据的完整性。虽然这也算数据的保密性的范畴,但是,这是无法防范的。在数据的传输中,可能就有象HACKER的人在监听
或捕获您的数据,然后破解您数据的加密算法,从而得到重要的信息,包括用户帐号密码等。所以,完整性我们更多的考虑到加密算法的安全性以及可靠性。公钥私
钥就是最好的例子。
不可否认性
根据《中华人民共和国公共安全行业标准》的计算机信息系统安全产品部件的规范,验证发送方信息发送和接收方信息接收的不可否认性。在不可否认性鉴别过程中
用于信息发布方和接收方的不可否认性鉴别的信息。验证信息发送方和接收方的不可否认性的过程。对双方的不可否认性鉴别信息需进行审计跟踪。
信息发送者的不可否认性鉴别信息必须是不可伪造的;
信息接收者的不可否认性鉴别信息必须是不可伪造的。
注意
信息安全的五类服务,作为安全的操作系统时必须提供的。
有些操作系统所提供的服务是不健全的、默认关闭的。
信息安全评估标准
本节我将带大家了解信息安全评估标准,关于该标准,其实很多国家都制定了相关的标准,我在这向大家介绍以下几种标准:
美国TCSEC(桔皮书)
该标准是美国国防部制定的。它将安全分为4个方面:安全政策、可说明性、安全保障和文档。在美国国防部虹系列(Rainbow Series)标准中有详细的描述。该标准将以上4个方面分为7个安全级别,从低到高依次为D、C1、C2、B1、B2、B3和A级。
欧洲ITSEC
与TCSEC不同,它并不把保密措施直接与计算机功能相联系,而是只叙述技术安全的要求,把保密作为安全增强功能。另外,TCSEC把保密作为安全的重
点,而ITSEC则把完整性、可用性与保密性作为同等重要的因素。ITSEC定义了从E0级(不满足品质)到E6级(形式化验证)的7个安全等级,对于每
个系统,安全功能可分别定义。ITSEC预定义了10种功能,其中前5种与桔皮书中的C1~B3级非常相似。
加拿大CTCPEC
该标准将安全需求分为4个层次:机密性、完整性、可靠性和可说明性。
美国联邦准则(FC)
该标准参照了CTCPEC及TCSEC,其目的是提供TCSEC的升级版本,同时保护已有投资,但FC有很多缺陷,是一个过渡标准,后来结合ITSEC发展为联合公共准则。
联合公共准则(CC) Common Critical
CC的目的是想把已有的安全准则结合成一个统一的标准。该计划从1993年开始执行,1996年推出第一版,但目前仍未付诸实施。CC结合了FC及ITSEC的主要特征,它强调将安全的功能与保障分离,并将功能需求分为9类 63族,将保障分为7类 29族。
ISO安全体系结构标准
在安全体系结构方面,ISO制定了国际标准ISO7498-2-1989《信息处理系统开放系统互连基本参考模型第2部分安全体系结构》。该标准为开
放系统互连(OSI)描述了基本参考模型,为协调开发现有的与未来的系统互连标准建立起了一个框架。其任务是提供安全服务与有关机制的一般描述,确定在参
考模型内部可以提供这些服务与机制的位置。
国内安全标准、政策制定和实施情况
中国公安部主持制定、国家技术标准局发布的中华人民共和国国家标准GB17895-1999《计算机信息系统安全保护等级划分准则》已经正式颁布,并将于
2001年1月1日起实施。该准则将信息系统安全分为5个等级,分别是:自主保护级、系统审计保护级、安全标记保护级、结构化保护级和访问验证保护级。主
要的安全考核指标有身份认证、自主访问控制、数据完整性、审计、隐蔽信道分析、客体重用、强制访问控制、安全标记、可信路径和可信恢复等,这些指标涵盖了
不同级别的安全要求。
另外还有《信息处理系统开放系统互联基本参考模型第2部分安全体系结构》(GB/T 9387.2 1995)、《信息处理数据加密实体鉴别机制第I部分:一般模型》(GB 15834.1-1995)、《信息技术设备的安全》(GB 4943-1995)等。
TCSEC定义的内容
美国TCSEC(桔皮书)的7个安全级别,从低到高依次为D、C1、C2、B1、B2、B3和A级。我们分别来介绍下:
A级-校验级保护,提供低级别手段
|
B3级-安全域,数据隐藏与分层、屏蔽
|
B2级-结构化内容保护,支持硬件保护
|
B1级-标记安全保护,如System V等
|
C2级-有自主的访问安全性,区分用户
|
C1级-不区分用户,基本的访问控制
|
D级-没有安全性可言,例如MS DOS
Windows系统的安全架构
Windows系统采用金字塔型的安全架构,相信大家都应该听说过。对于金字塔性安全架构来讲下面的最重要,定义完整直观的安全策略是最重要。如图一
图一:Windows金字塔安全架构
Audit 审计 | Administration 管理
Encryption 加密 | Access Control 访问控制
User Authentication 证明, 鉴定
Windows系统的安全组件
对于Windows系统来讲,系统的安全性主要体现在系统的组件的功能上。Windows提供5个安全组件,保障了系统的安全性。Windows系统组件体现在很多方面,例如Windows用户策略,访问控制的判断,对象的重用,强制登陆等。
访问控制的判断(Discretion access control)
如图一所示,访问控制是在第二层上,安全性级别为普通。访问控制的判断允许对象所有者可以控制谁被允许访问该对象以及访问的方式。
对象重用(Object reuse)
如果您正在阅读一篇本地的文章,例如是DOC文件,那么,在你阅读的同时,又想将该文件打包传送给其他人,这时候进行打包的工作是不被允许的,当你执行该
工作时,系统回提示您该文件正在被另一个程序所使用。当资源(内存、磁盘等)被某应用访问时,Windows
禁止所有的系统应用访问该资源,这也就是为什么无法恢复已经被删除的文件的原因。
强制登陆(Mandatory log on)
该类方式运用的最多的地方该属活动目录(Active Directory),如果在域控制器(DC)限制用户登陆的方式,要求所有的用户必须登陆,那么通过认证后才可以访问系统资源。
审核(Auditing)
打开管理工具种的“事件查看器”,点击“安全性”,这里就可以看到本地计算机登陆的审核列表。如果登陆该计算机失败,管理员就很快可以确定是否时恶意入侵等其他信息。在控制用户访问资源的同时,也可以对这些访问作了相应的记录。
对象的访问控制(Control of access to object)
在NTFS文件系统种,对方访问控制做得非常的到位。选择一个文件夹单击右键选择“属性”,在“安全”选项里可以看到用户所具有的权限值。NTFS文件系
统很好的解决了多用户对资源的特级访问权限。要访问资源,必须是该资源允许被访问,然后是用户或应用通过第一次认证后再访问。
Windows安全子系统的组件
安全标识符(Security Identifiers)
对于SID,大家一定不会陌生。简单来说就是每次当我们创建一个用户或一个组的时候,系统会分配给改用户或组一个唯一SID,当你重新安装系统后,也会得到一个唯一的SID。SID是唯一的,不随用户的删除而分配到另外的用户使用。
请记住,SID永远都是唯一的SIF是由计算机名、当前时间、当前用户态线程的CPU耗费时间的总和三个参数决定以保证它的唯一性。
例: S-1-5-21-1763234323-3212657521-1234321321-500
访问令牌(Access tokens)
在很多网络培训教程都有详细的介绍。当用户通过验证后,登陆进程会给用户一个访问令牌,该令牌相当于用户访问系统资源的票证,当用户试图访问系统资源时,
将访问令牌提供给Windows 系统,然后Windows
NT检查用户试图访问对象上的访问控制列表。如果用户被允许访问该对象,系统将会分配给用户适当的访问权限。
访问令牌是用户在通过验证的时候有登陆进程所提供的,所以改变用户的权限需要注销后重新登陆,重新获取访问令牌。
安全描述符(Security descriptors)
Windows 系统中的任何对象的属性都有安全描述符这部分。它保存对象的安全配置。
访问控制列表(Access control lists)
访问控制列表有两种:任意访问控制列表(Discretionary ACL)、系统访问控制列表(System
ACL)。任意访问控制列表包含了用户和组的列表,以及相应的权限,允许或拒绝。每一个用户或组在任意访问控制列表中都有特殊的权限。而系统访问控制列表
是为审核服务的,包含了对象被访问的时间。
访问控制项(Access control entries)
访问控制项(ACE)包含了用户或组的SID以及对象的权限。访问控制项有两种:允许访问和拒绝访问。拒绝访问的级别高于允许访问。
Windows安全子系统
Winlogon 加载GINA,监视认证顺序
Graphical Identification and Authentication DLL (GINA) 提供登陆接口
Local Security Authority(LSA) 加载认证包
Security Support Provider Interface(SSPI) Microsoft安全支持提供器接口
Authentication Packages 提供真正的用户校验
Security support providers 支持额外的验证机制
Netlogon Service 管理用户和用户证书的数据库
Security Account Manager(SAM) 为认证建立安全通道
该流程过程如图二:
![](http://www.cppblog.com/images/cppblog_com/freezing/winsec02.png)
图二
Winlogon and Gina
Winlogon调用GINA DLL,并监视安全认证序列。而GINA DLL提供一个交互式的界面为用户登陆提供认证请求。GINA DLL被设计成一个独立的模块,当然我们也可以用一个更加强有力的认证方式(指纹、视网膜)替换内置的GINA DLL。
Winlogon在注册表\HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon
,如果存在GinaDLL键,Winlogon将使用这个DLL,如果不存在该键,Winlogon将使用默认值MSGINA.DLL
本地安全认证(Local Security Authority)
本地安全认证(LSA)是一个被保护的子系统,它负责以下任务:
调用所有的认证包,检查在注册表\HKLM\SYSTEM\CurrentControlSet\Control\LSA下
AuthenticationPAckages下的值,并调用该DLL进行认证(MSV_1.DLL)。在4.0版里,Windows
NT会寻找\HKLM\SYSTEM\CurrentControlSet\Control\LSA
下所有存在的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,它是用来保存用户账号和口令的数据库。保存了注册表中\HKLM\Security\Sam中的一部分内容。不同的域有不同的Sam,在域复制的过程中,Sam包将会被拷贝。
提高系统的安全性的一些建议
本节我将向大家介绍如何提高系统的安全性。该节我不做具体的分析,我就现在的Windows系统的安全性做个归纳,然后根据这些安全性做一些配置。
网络的安全性
网络的安全性是系统安全性的基础,简单的说就是系统的安全性是建立在网络安全性之上的。提高网络的安全性才能加强系统的安全性,否则就是一张废纸。
网络安全性主要有:网络边界的安全性,网络架构和合理性,网络环境的合理性,网络传输数据的安全性,路由策略等等。加强边界和内网与公网之间的安全性是非常重要的,找决定着网络的安全架构。一般我们将内网与外网用防火墙隔开,限制了外部网络与内部网络的通信。
解决方案:可以选用优良的路由设备以及网络设备,选用优秀的网络防火墙,设定好自己的网络访问策略。例如使用Microsoft ISA Server
系统的安全性
如果您的网络中使用了ISA Server的话,那么有一个非常棘手的问题,就是ISA Server不对内部网络发起的攻击做任何处理。那么,你应该加强内部网络的安全性,提高用户的安全意识等。
系统的安全性我在上面已经提到了,包括用户策略,访问策略等等。建议您去参考一些部署方面的文章或书籍,配合自己的网络环境做好安全工作。
数据的安全性
对于数据的安全性,我们要做的就是对数据进行加密,在网络中,我们可以采用很多的加密方式,这论您的环境来做。
总结
每个管理人员都遇到过安全问题,那么,了解系统的安全机制会让您部署更多的安全策略,提高网络及系统的安全性。本文主要介绍的是Windows操作系统的安全机制和一些安全方面的讨论,希望大家能从中获得更多东西。