# 域控服务器部署

# 应用场景

公司可能会有一些业务保密等级比较高,这就需要相应的高等级的安全防护措施,当然如果你的团队只有几个人,并且你不希望你的团队出现一些不和谐矛盾,因为他们每个人都是值得信任的,那么本篇文章并没有什么特别大的帮助,但是如果你的公司有几十个人,那你就得考虑下业务的安全性问题了,这就需要从技术上将能够把信息带出公司的出口给关闭,比如封掉U口,禁掉网络,这就是本篇文章的应用场景。

# 什么是域控服务器?

在企业中,员工的电脑(后面称客户端)之间如何进行交互?在windows中,有两种方式:

  • 工作组
    所有的计算机在网络中地位平等,每台电脑各自管理。
  • 域控服务器(Domain Controller)
    域控存储着企业员工的用户名,密码,邮箱等各种信息。每位员工的客户端登陆都要先访问域控,如果员工输入的密码正确才能登陆客户端。域控相当于企业所有客户端的中央管控服务器,不仅存储着员工的用户名密码,还存储着每台客户端要服从的组策略,比如是否禁用U盘等可移动存储。

# 管理客户端能否跳过域控服务器?

知道了何为域控后自然就知道域控为什么重要,但是统一管理的模式会有些不灵活,比如有些客户端因为工作需要想要安装软件,而域控禁止了安装软件,这就需要管理员将该策略调整下,为了灵活,我最初是想做成工作组中每台电脑都能装一个守护进程,然后有一台服务器统一发号施令。但是后来发现如何保证这些守护进程是一直激活的呢?这就需要公司有相应的人员做行政措施,比如这些客户端和服务器端一直KeepAlive,如果发现客户端本地守护进程死掉,服务器端就发送给管理员一封邮件。但是想来想去,如何判断客户端是否死掉还是正常关机?和服务器端失去联系是否是在工作时间?这样就会有很多后续问题。后来觉得还是要使用域控,使客户端一直服从域控的策略,然后再配合这样的一些软件通知管理员一些客户端的越界行为,这样就会靠谱很多。所以关于windows的管理,要从域控服务器开始。后面会写一些配合软件逐步完善以让windows的管理成为一个闭环。将windows的管理自动化,智能化,实现以极少的人力维护公司很多的电脑客户端。

# 域控相关的概念

#

不了解windows域的同学可能会联想到web中的域名。web中一个域名由"."分隔的一串标识符。它由域名服务器解析成IP,通过这些IP再找到Internet中的计算机。域名中用"."来分隔层次,每一层就是一个域,域名服务器允许将域名中的一部分委托给一个子服务器,从而形成一种层次结构的名称空间。而windows域的组织形式和域名的组织形式基本类似,但是windows域是一个组织单位中一组计算机的集合,在域中的计算机彼此信任,相互访问。

# 域的组织形式

刚才提到windows域的组织形式和域名的组织形式基本类似,它们都像一棵树,由下图展示一个学校的windows域:

windows 域图片

# 根域,域树,域林

将域想像成树干树根的话,那么组织中第一个域就是根域,多个域组成域树,多个域树组成域林。比如上图School.com就是根域,School.com及其子域 是一颗域树,School.com及其Research.com组成一个域林。注意,这里只是为了说明根域,域树,玉林的规模大小,在创建第一个域School.com的时候,我们就默认创建了一个域林,而School.com默认是这个域林的根域,它在域林中处于重要地位,对其他域具备最高管理权限。

这里我们可以看出域树和域林最大的一个区别就是域林是由不同的DNS后缀域树组成,而域树则形成连续的命名空间,下一级域名包含上一级域名。

前面说到域中计算机相互访问,但前提是这两个域需要彼此信任,默认情况下,一个新域加入到域树,父域和子域是相互信任的。而且这信任是双向传递的。比如A域下加了B域,B域下加了C域,A和C是相互信任的。

# 站点

当时我看到这个概念总是联想起网站,他们其实也是两个东西,它的应用场景是一个企业异地办公,实施域管理。比如一个北京的公司在上海有分公司,那上海的分公司员工是不是登录自己的客户端都要先访问下北京的服务器呢?在局域网我们感受不到因为请求域控服务器而登录电脑变慢是因为局域网速度很快,如果放到广域网上,那这个速度就是不稳定的。所以我们可以在上海放一台域控服务器,上海的员工登录电脑访问这台服务器,而上海的服务器和北京的服务器通过广域网低速网络连接,在这个场景中,北京和上海的域控服务器就是一个站点。平时在我们建立第一个域时就默认有一个Default-First-Site-Name站点。

# 活动目录(Active Directory)

它是windows server中的核心组件,它是windows 域的具体实现应用。域服务在window server 部署完会有两个直接相关的系统服务:Active Directory Domain Services 和 Active Directory Web Services。

# 域控制器(Domain Controller)

部署了AD DS的服务器称为域控制器。域控制器分为主域控制器,副域控制器,只读域控制器。副域控制器一般是为了备份主控,当主控出问题是替代主控。只读域控制器的应用场景一般是企业分支机构,设立只读域控制器,该分支结构人员可从只读域控登录。

在系统中如何区分主域控和副域控呢?

# 操作主机角色(Flexible single master operation)

FSMO定义了五种角色:

  • 林级别:
    • Schema Master
    • Domain Naming Master
  • 域级别:
    • PDC(Primary domain controller) Emulator Master
    • RID(relative ID) Master
    • Infrastructure Master

# Schema Master

这个角色是唯一使DC能对directory schema更新操作。一旦这个操作在主控完成,就会复制到其他副控上。每个directory只有一个这个角色。

# Domain Naming Master

它是唯一能使DC从directory增加或移除域的角色。

# RID Master

它是唯一能使DC根据一个域来处理RID资源池请求的角色。它负责将一个对象从它自身的域移动到另一个域。

当一个DC创建安全主体对象,比如用户或者用户组的时候会分配一个唯一的SID给这个对象。这个SID是域的SID+安全主体唯一的RID。每个在域中的DC都会被分配一个RID的资源池,这个角色能将请求该域中的RID分配到请求的域中。

# PDC Emulator

这个角色是一个域的权威,拥有这个角色的域控是主控。如果这个角色在域林的根域,那么它是这个域林的权威。它的作用是:

  • 被其他DC改变的密码会被优先复制到PDC Emulator。
  • 如果用户密码登陆认证失败,在用户收到消息前会先被发送到PDC Emulator。
  • 账户解锁。
  • 执行所有基于PDC的服务器功能。

# Infrastructure

它负责跨域对象引用时更新对象的SID和名字。当域中只有一个域控服务器时这个角色才能和全局编录放一块。当域中的每个域控都有全局编录时,无论哪个域控均可承担这个角色。

Netdom query fsmo

使用上述命令查看fsmo角色

# 全局编录(Global Catalog)

在域树中的所有域都共享一个AD DS数据库,但是每个域只存储自身的数据。为了让用户或者应用快速找到其他域内的资源,在AD DS中设置了全局编录,一个林内所有域树共享相同的GC。全局编录让用户即便不知道对象在哪个域中仍然可以很快地找到所需对象。它的作用有:

  • 存储对象信息副本,包括林中其他域的对象的引用。
  • 存储通用组成员信息,帮用户构建访问令牌,完成登录验证的过程。

# 轻型目录访问协议(Lightweight Directory Access Protocol)

是一种用来查询与更新AD DS的目录服务的通信协议,AD DS使用LDAP Naming Path来描述对象在AD DS中的位置。

# Distinguished Name(DN)

这是对象在AD DS中的完整路径。比如

CN=学生1,OU=组织部,OU=学生会,DC=Software,DC=Computer,DC=School,DC=com

其中DC是Domain Component,表示域名中每个域。OU 为Organization Unit,为组织单位。CN是Common Name,用户和计算机都属于CN。

# Relative Distinguished Name(RDN)

用来表示DN中的部分路径,比如CN=学生1

# Global Unique Identifier(GUID)

系统为每个对象指定一个唯一的128位的GUID,虽然对象名称可以改变但是GUID永远不会变。

# User Principal Name(UPN)

每个使用者有一个比DN更短更容易记忆的UPN,比如上述xuesheng1@software.computer.school.com

# Service Principal Name(SPN)

是一个包含多重值的名称,根据DNS主机名建立。SPN用来代表某台计算机所支持的服务,让其他计算机通过SPN来跟这台计算机的服务进行交互。

# Active Directory 轻型目录服务

一般只有建立了AD DS域与域控制器,才能够使用AD DS目录服务与数据库。为了让没有域的环境也能拥有跟AD DS一样的目录服务,以便让支持目录访问的应用程序可以有一个目录数据库来存储数据,提供了一个Active Directory Lightweight Directory Services。

# 活动目录与DNS

前面介绍了活动目录,它通过域控制器接受查询请求,查询活动目录数据库把域对象名字解析为对象记录。活动目录用户通过LDAP协议向活动目录服务器发送请求,为了定位提供查询服务的域控制器就需要借助DNS,也就是说活动目录使用DNS服务器作为定位服务器,把域控制器解析为IP地址。活动目录要发挥作用离不开DNS。