前言
在上一篇文章中,我们介绍了windows本地认证和网络认证会使用到的NTLM协议以及相应的hash算法。在本篇文章中,将深入学习windows域环境。
工作组
工作组是局域网中的一个概念,它是最常见的资源管理模式,默认情况下计算机都是采用工作组方式进行资源管理的。将不同的电脑按功能分别列入不同的组中,以方便管理。默认情况下所有计算机都处在名为 WORKGROUP 的工作组中,工作组资源管理模式适合于网络中计算机不多、对管理要求不严格的情况。它的建立步骤简单,使用起来也很好上手。大部分中小公司都采用工作组的方式对资源进行权限分配和目录共享。相同组中的不同用户通过对方主机的用户名和密码可以查看对方共享的文件夹,默认共享的是 Users 目录。不同组的不同用户通过对方主机的用户名和密码也可以查看对方共享的文件夹。所以工作组并不存在真正的集中管理作用 , 工作组里的所有计算机都是对等的 , 并没有服务器和客户机之分。
右击桌面上的“计算机”,在弹出的菜单出选择“属性”,点击“高级系统设置”-->“计算机名”,点击“更改”,在“计算机名”一栏中键入名称,在“工作组”一栏中键入工作组名称。如果所输入的工作组名称不存在,那么相当于新建了一个工作组,只是暂时存在于自己的电脑组内。单击“确定”,Windows 提示需要重新启动,重新启动之后,再进入“网络”就可以看到所加入的工作组成员。
工作组的优缺点
优点
- 在一个网络内,可能有上百台电脑,如果这些电脑不进行分组,都列在“网上邻居”中,那么电脑无规则的排列就会为我们访问资源带来不方便。为了解决这一问题,Windows98操作系统之后就引用了“工作组”这个概念,将不同的电脑按功能分别列入不同的组中,如软件部的电脑都列入“软件部”工作组中,网络部的电脑都列入“网络部”工作组中。若要访问某个部门的资源,就在“网上邻居”里找到对应的部门工作组名称,双击即可看到对应的电脑了。计算机通过工作组进行分类,使得我们访问资源更加具有层次化。工作组情况下资源可以随机和灵活的分布,更方便资源共享,管理员只需要实施相当低级的维护。
缺点
- 缺乏集中管理与控制的机制、没有集中的统一帐户管理、没有对资源实施更加高效率的集中管理、没有实施工作站的有效配置和安全性严密控制、只适合小规模用户的使用。
基于以上缺点,当计算机数量比较多,大型企业网络规模大,需要统一的管理和集中的身份验证,并且能够给用户提供方便的搜索和使用网络资源的方式,工作组的组织形式就不合适了,于是域就出现了。
Windows域
域用来描述一种架构,和“工作组”相对应,是由工作组升级而来的高级架构。域 (Domain)是一个有安全边界的计算机集合 (安全边界,意思是在两个域中,一个域中的用户无法访问另一个域中的资源)。可以简单地把域理解成升级版的“工作组”,相对工作组而言,它有一个更加严格的安全管理控制机制,如果你想访问域内的资源,就必须拥有一个合法的身份登录到该域中,而你对该域内的资源拥有什么样的权限,还需要取决于该域中的用户身份。
域和工作组的区别就是:工作组是对等网络,域是 B/S 架构,集中式管理。
域的功能和特点
- 集中管理,可以集中地管理企业中成千上万分布于异地的计算机和用户
- 便捷的资源访问,能够很容易地定位到域中的资源。用户依次登录就可以访问整个网络资源,集中地身份验证
- 可扩展性,既可以适用于几十台计算机的小规模网络,也可以用于跨国公司
域的原理
其实可以把域和工作组联系起来理解,在工作组上你一切的设置比如在本机上进行各种策略,用户登录都是登录在本机的,密码是放在本机的数据库来验证的。而如果你的计算机加入域的话,各种策略是域控制器统一设定,用户名和密码也是放到域控制器去验证,也就是说你的账号密码(域用户)可以在同一个域的任何一台计算机登录。
如果说工作组是“免费的旅店”,那么域 (Domain)就是“星级的宾馆”;工作组可以随便出出进进,而域则需要严格控制。“域”的真正含义指的是服务器控制网络上的计算机能否加入计算机组合。一提到组合,势必需要严格的控制。所以实行严格的管理对网络安全是非常必要的。在对等网模式下,任何一台电脑只要接入网络,其他机器就都可以访问共享资源,如共享文件夹等。尽管对等网络上的共享文件可以加访问密码,但是非常容易被破解。
不过在“域”模式下,至少有一台服务器负责每一台联入网络的电脑和用户的验证工作,相当于一个单位的门卫一样,称为域控制器 (Domain Controller,简写为 DC)。
域控制器中包含了这个域内的账户、密码、域内的计算机等信息构成的数据库(AD)。当电脑联入网络时,域控制器首先要鉴别这台电脑是否属于这个域,使用的登录账号是否存在、密码是否正确。如果以上信息有一样不正确,那么域控制器就会拒绝这个用户从这台电脑登录。不能登录,用户就不能访问服务器上有权限保护的资源,他只能以对等网用户的方式访问Windows共享出来的资源,这样就在一定程度上保护了网络上的资源。
要把一台电脑加入域,仅仅使它和服务器在网上邻居中能够相互“看”到是远远不够的,必须要由网络管理员进行相应的设置,把这台电脑加入到域中。这样才能实现文件的共享,集中统一,便于管理。
在域控上,即使以域管理员的身份登录,也不能查看域成员的密码,可以给域成员重置密码,但是不能查看到域成员的密码。
域结构
域按照组成的不同,可以分为单域和域树、域林等。
单域
单域,指在一般的具有固定地理位置的小公司里,建立一个域就可以满足所需,这种域环境可以称为单域。
域树
域树,指若干个域通过建立信任关系组成的集合。一个域管理员只能管理本域的内部,不能访问或者管理其他域,二个域之间相互访问则需要建立信任关系 (Trust Relation)。信任关系是连接在域与域之间的桥梁。父域与子域之间自动建立起了双向信任关系,域树内的父域与子域之间不但可以按需要进行相互管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理,以及相互通信和数据传输。
同一个域树中,父域和子域会自动创建双向信任关系,并且信任关系可以传递。所以也就是如下:abc.com
自动与 asia.abc.com
和 europe.abc.com
建立起了双向信任关系,asia.abc.com
和 cn.asia.abc.com
以及 europe.abc.com
与 fr.europe.abc.com
自动建立起了双向信任关系。由于信任关系可以传递,所以 cn.asia.abc.com
和 abc.com
以及 fr.europe.abc.com
和 abc.com
都自动建立起了双向信任关系。但是 asia.abc.com
和 europe.abc.com
之间并没有建立起信任关系。所以也就是 asia.abc.com
和 europe.abc.com
之间不能进行数据共享等操作。他们之间要想进行数据共享等操作,需要手动为他们之间建立信任关系。
建立域树的好处
- 如果把不同地理位置的分公司放在同一个域内,那么他们之间信息交互 (包括同步,复制等)所花费的时间会比较长,而且占用的带宽也比较大。因为在同一个域内,信息交互的条目很多,不压缩;而在域和域之间,信息交互的条目相对较少,且压缩。
- 子公司可以通过自己的域来管理自己的资源。
- 出于安全策略的考虑,因此每个域都有自己独有的安全策略。比如一个公司的财务部门希望能使用特定的安全策略 (包括账号密码策略等),那么可以将财务部门做成一个子域来单独管理。
父域与子域
在一个域树中,父域可以包含很多子域。而子域是相对父域来说的,指域名中的每一个段。子域只能使用父域作为域名的后缀。也就是说在一个域树中,域的名字是连续的。
第一个域称为父域也可以叫根域,各分部的域称为该域的子域。
父域与子域之间默认建立起了双向信任关系。
域林
域林,指若干个域树通过建立信任关系组成的集合。
由一个或多个没有形成连续名称空间的域树组成,林中每个域树都有唯一的名称空间,之间不连续。
可以通过域树之间建立的信任关系来管理和使用整个域林中的资源,从而又保持了原有域自身的特性。同一个林中,林根域与其他树根域自动建立双向信任关系. 信任关系可传递。
GC
全局编录包含了各个活动目录中每一个对象的最重要的属性,是域林中所有对象的集合。
在域林中,同一域林中的域控制器共享同一个活动目录,这个活动目录是分散存放在各个域的域控制器中的,每个域中的域控制器保存着该域的对象的信息 (用户账号及目录数据库等)。如果一个域中的用户要访问另一个域中的资源,则要先找到另一个域中的资源。为了让用户快速的查找到另一个域内的对象,微软设计了全局编录。全局编录包含了各个活动目录中每一个对象的最重要的属性 (即部分属性),这样,即使用户或应用程序不知道对象位于哪个域,也可以迅速找到被访问的对象。
FSMO
营运主机 (Operation Masters,又称为 Flexible Single Master Operation,即 FSMO)是被设置为担任提供特定角色信息的网域控制站,在每一个活动目录网域中,至少会存在三种营运主机的角色。但对于大型的网络,整个域森林中,存在5种重要的 FSMO 角色.而且这些角色都是唯一的。
- naming master (域命名主机角色) : 域命名主机角色是林范围的角色,每个林一个。此角色用于向林中添加或从林中删除域或应用程序分区。
- infrastructure master (结构主机角色) : 结构主机角色是域范围的角色,每个域一个。此角色供域控制器使用,用于成功运行 adprep /forestprep 命令,以及更新跨域引用的对象的 SID 属性和可分辨名称属性。
- PDC (PDC 模拟器角色) : PDC 模拟器角色是域范围的角色,每个域一个。将数据库更新发送到 Windows NT 备份域控制器的域控制器需要具备这个角色。此外,拥有此角色的域控制器也是某些管理工具的目标,它还可以更新用户帐户密码和计算机帐户密码。
- RID master (RID 主机角色) : RID 主机角色是域范围的角色,每个域一个。此角色用于分配 RID 池,以便新的或现有的域控制器能够创建用户帐户、计算机帐户或安全组。
- schema master (架构主机角色) : 架构主机角色是林范围的角色,每个林一个。此角色用于扩展 Active Directory 林的架构或运行 adprep /domainprep 命令。
域信任关系
域信任分为单向信任和双向信任。
- 单向信任 : 只能是受信任域访问信任域,而信任域不能访问受信任域。
- 双向信任 : 两个域可以互相访问。
域之间的信任关系,相当于是不同域之间沟通的桥梁。
- 父子信任:父域与子域之间自动建立起了双向信任关系,并且信任关系可以传递。
- 树信任:同一个林中,林根域与其他树根域自动建立双向信任关系。信任关系可传递。
- 快捷方式信任:为了加速认证流程而产生的信任关系。需要管理员手工建立,信任关系可向下传递。
- 林信任:在不更改 AD 结构的情况下,让不同林之间可以相互访问资源。信任关系可向下传递。
- 外部信任/ 跨林快捷方式信任:类似于同林内的快捷方式信任. 单向, 信任关系不可传递:
- 领域信任:为了让 AD 跟非 windows 系统的 kerberos 建立关系而存在的信任。
DC
在域架构中域控是用来管理所有客户端的服务器,它负责每一台联入的电脑和用户的验证工作,域内电脑如果想互相访问首先得经过它的审核。
域控是域架构的核心,每个域控制器上都包含了 AD 活动目录数据库。
一个域中至少要有两个域控。一个作为 DC,一个是备份 DC。如果没有备份 DC,那么一旦 DC 瘫痪了,则域内的其他用户就不能登录该域了,因为活动目录的数据库 (包括用户的账号信息)存储在 DC 中。而有一台备份域控制器 (BDC),那么该域还能正常使用,期间把瘫痪的 DC 恢复了即可。当域中的一台计算机安装了 AD 后,它就成了域控 DC 了。
PDC
主域控制器是负责验证域登录和维护域目录数据库的计算机。
BDC
辅域控制器也叫额外域控制器,是指除第一台域控制器之外的其他域控制器。
一个域只能有一个 PDC,可以有0~若干个 BDC
RODC
RODC 是 Windows Server 2008 操作系统中的一种新类型的域控制器。借助 RODC,组织可以在无法保证物理安全性的位置中轻松部署域控制器。RODC 承载 Active Directory域服务 (AD DS) 数据库的只读分区。
AD
Active Directory,活动目录简称 AD,是一个基于 DNS 并以树状的数据结构来组成网络服务存储了有关网络对象的信息,并以此作为基础对目录信息进行合乎逻辑的分层组织,让管理员和用户能够轻松地查找和使用这些信息。通常域都只有一个,在中型或大型的网络中,网域可能会有很多个,或是和其他公司或组织的 AD 相互链接。AD 基于 LDAP。安装了 AD 的服务器称为 DC 域控制器。
如果将企业的内网看成是一本字典,那么内网里的资源就是字典的内容, 活动目录就相当于字典的索引。即活动目录存储的是网络中所有资源的快捷方式,用户通过寻找快捷方式而定位资源。
在活动目录中记录的信息,被分为两大部分,一部分保存在活动目录数据库文件 NTDS.dit
中,另一部分保存在被复制的文件系统上。
逻辑结构
在活动目录中,管理员可以完全忽略被管理对象的具体地理位置,而将这些对象按照一定的方式放置在不同的容器中。由于这种组织对象的做法不考虑被管理对象的具体地理位置,这种组织框架称为 “逻辑结构”。
活动目录的逻辑结构就包括上面讲到的 组织单元 (OU)、域 (domain)、域树 (tree)、域森林 (forest) 。在域树内的所有域共享一个活动目录,这个活动目录内的数据分散地存储在各个域内,且每一个域只存储该域内的数据。
存储方式
ntds.dit
ntds.dit 是 AD 中的数据库文件,它被保存在域控制器 C:WindowsNTDSNTDS.dit
位置。活动目录的数据库文件(ntds.dit)包含有关活动目录域中所有对象的所有信息,其中包含所有域用户和计算机账户的密码哈希值。该文件在所有域控制器之间自动同步,它只能被域管理员访问和修改。 ntds.dit 是 AD 中的数据库文件,被保存在域控制器 C:WindowsNTDSNTDS.dit
位置。活动目录的数据库文件(ntds.dit)包含有关活动目录域中所有对象的所有信息,其中包含所有域用户和计算机账户的密码哈希值。该文件在所有域控制器之间自动同步,只能被域管理员访问和修改。
LDAP
ldap 是基于 tcp/ip 的轻量级目录访问协议,这种数据库文件后缀都为 .ldif
,并使用特殊的节点查询语句来获取相应数据。和常规关系型数据库不同的是,ldap 并非按照常规的库、表、字段方式来存储数据,而是按照一种特殊的倒树状结构层级来组织管理数据,此处的树指的就是目录信息树,即 DIT。(目录信息树相当于专门用来进行读操作的数据库。)
总结
本文介绍了windows环境中域的概念、域的结构、DC域控的组成以及AD活动目录的存储方式。在下一篇文章中,我们将继续科普kerberos协议的概念并详细说明认证过程。
本文作者 r0fus0d