ADDS(Active Directoory Domain Server)可以提供用于组织、管理与控制网络资源的各种强大功能。目录能够让我们更加简便的去查找所需要的信息。而AD中的目录则是用来存储用户账号、计算机账号等对象,存储这些账号的位置我们称之为目录数据库。AD是一个命名空间,而ADDS则负责命名空间中的目录数据库的存储和增删查改功能。AD域最大的作用在于对登录用户的集中管理,AD域内注册的用户,可以在域内任意一台计算机中通过账号验证来实现登录,而不需要在每一台计算机的SAM中都注册用户信息。
下面是一些关于AD的概念。
命名空间:是一块区域,在这个区域中,我们可以利用某个名字来查看相对应的信息。在ADDS中的AD就是一个命名空间。通过AD,我们可以通过一个对象的名称来查找相关的素有信息。
对象和属性:AD内的资源是以对象的形式存在的,所以AD中有许多不同类型的对象,而对象又是通过属性来描述其特征,也就是说对象本身是一些属性的集合。
容器和组织单位:容器与对象相似,不同之处在于容器可以含有若干个不同的对象,也可以含有其他容器。而组织单位是一个特殊的容器,具有组策略的功能。
在ADDS中以层次结构,将对象、容器、组织单位组合到一起,并存储到AD数据库内。
信任:两个域之间必须创建信任关系,才可以访问对方域内的资源。而一个新的域被加入到域树后,这个域会自动的信任其上一层的父域,同时父域也会自动的信任这个新的子域。这种信任的双向传递性是自动建立的,会通过kerberos来实现。当一个新域加入到域树后,它会自动的双向传递信任域树内的所有域。只要给予新域一些适当的权限,这个新域内的用户就可以访问其他域内的资源。
域树:域树可以包含有多个符合DNS域名空间命名规则的域,在域树内的所有域共享了一个AD数据库,但是在这个AD数据库中,每一个域内只存储了属于该域的数据。
林:林是由一个或多个域树组成的,每一个域树都有属于自己的命名空间。在创建林时,域与域之间会发生信任的双向传递。林内的每一个域或域内的用户只要拥有一定的权限就可以访问整个林内的资源。也可以到林中任何一台计算机登录。
域控制器:ADDS的目录数据存储在域控制器内,一个域内可以有多台域控制器(实现HA和LB),它们各种存储这一份完全相同的AD数据库。当用户在域内的某一台计算机登录时,会由其中一台域控制器来验证用户的登录信息,若通过验证则可以完成登录。必须创建ADDS的域控制器,才能够使用ADDS目录服务与数据库。
成员服务器:服务器级别的计算机加入到域后被称为成员服务器,成员服务器不负责登录用户信息的验证,而是需要通过ADDS来审核的计算机。如果一个服务器不加入到AD域的话被称之为独立服务区器,这是它们会使用本地安全数据库(SAM)来验证登录用户账号。
全局编录:在域树内的所有域都共享同一个AD数据库,但是在AD数据库中的数据却是分散到各个域内的,每一个域只存储其自身的数据。这样会不便于查找别域的资源,而全局编录就是为了避免这个问题。在全局编录中存储了林内所有域中的所欲对象的部分属性,而这部分属性通常是用于搜索此对象的。例如:账号名称、UPN、电话号码等唯一的标识。有了全局编录不管用户存在那一个域中,都可以很快捷的查找其他域内的资源。
目录分区类型
1. 架构目录分区:存储着整个林内所有的对象数据,也存储着如何创建这些对象的规则,整个林共享着同一个架构目录分区。
2. 配置目录分区:存储着整个ADDS的结构。例如:有那个域、有那个站点、有那个域控制器等。整个林共享同一个架构目录分区。
3. 域目录分区:存储着该域相关的对象信息。每一域各自拥有一个唯一的域目录分区。
4. 应用程序目录分区:这是由应用程序所创建的,其内存储着与应用程序相关的数据。例如:当我们部署DNS服务器,所创建的DNS区域在AD中继承时,则DNS服务器会在AD数据库中创建应用程序目录分区用于存放该区域的资源记录。
站点:是由一个或数个IP子网所组成的。一般站点都是LAN(局域网)内的计算机。
AD与DNS的关系:域控制器需要将自己注册到DNS服务器中,以便其他的计算机可以通过DNS解析服务来找到这台域控制器从而实现登录信息验证,而且此DNS服务器最好支持动态更新功能。所以AD服务需要有DNS服务的支撑,否则也可以通过修改Hosts来实现上述的功能。
AD与LDAP的关系:LDAP是一种用来访问AD数据库的目录服务协议,ADDS会通过LDAP名称路径来表示对象在AD数据库中的位置,以便用它来访问AD数据库内的对象。LDAP的名称路径包括有DN、RDN。
1. DN是AD数据库内的完整路径,下面是一个例子:
林小洋是一用户账号,其DN为:CN=林小洋、OU=业务一组、OU=业务部、DC=sayms、DC=com 。其中DC表示DNS域名中的组件,OU表示组织单位,CN表示普通名称。
整个DN表示:用户林小洋的账号存储在sayms.com\业务部\业务一组的路径下。
2. RDN它是在DN完整路径中的部分路径,例如上面的DN中,CN=林小洋就是RDN
创建ADDS域后,就可以通过ADDS的强大功能来更容易、更有效率的管理网络。在创建ADDS域前需要先安装一台AD服务器,再将其升级为域控制器。
准备工作:
1.选择一个DNS域名
2.准备一台用来支撑ADDS的DNS服务器
- 支持SRV日志,域控制器会将自己注册到DNS服务器的SRV日志中
- 支持动态更新
- 支持区域传送
- 关闭快速传送,因为有一些DNS服务区并不支持此功能
3.选择AD数据库的存储位置
- AD数据库:用来存储AD对象
- 日志文件:存储AD数据库的变动日志
- SYSVOL文件夹:用来存储域文件夹
Step1:搭建DNS服务器
当我们将服务器升级成为域控制器时,会让系统自动在该服务器中安装DNS服务角色,并且系统还会自动在DNS服务器中创建一个支持ADDS的区域。该区域也会自动开启安全动态更新。
具体的DNS安装和使用,点这里
Step2:使用Windows窗口开创建第一个域控制器
将DNS服务器升级成为域控制器,即安装AD域服务。而且因为这是服务器上的第一台域控制器,所以本次升级会同时完成下列操作:
1.新建一个林
2.新建一个域树
3.新建域树中的一个域
4.新建此域中的第一台域控制器
在服务器管理器中添加AD域服务角色,并完成安装。
Step6:输入新建域的域名,也可以填入DNS已有域的域名。我这里填写DNS服务器中已有得到jmilk.com二级域
Step7:安装向导会自动的要求设置一个NetBIOS格式的域名,为了一些旧版本的服务器能够通过NetBIOS来访问此资源。名字不区分大小写。
Step8:选择 Windows Server 2008 R2的林功能级别
Step9:如果已经在服务器上安装过DNS的话,直接下一步。否则,需要安装DNS服务器。而且第一台域控制器会具有全局编录的功能。
Step11:设置一个目录服务还原密码(强密码),使用该密码可以进入安全模式,在该模式下可以对AD进行修复。
Step12:下一步直到手动重启服务。至此ADDS域控制器安装完成。在完成域控制器的安装后,会自动的将该服务器的用户账号转移到AD数据库中。
注意:如果在安装ADDS域控制器之前已经安装了DNS服务的话,需要在DNS服务对应的ADDS域中修改DNS域的类型。
编辑Powershell代码文件installADDS.ps1
dcpromo /unattend /InstallDns:yes /newDomain:forest /replicaOrNewDomain:domain /newDomainDnsName:jmilk.com /DomainNetbiosName:JMILK /forestLevel:4 /domainLevel:4 /createNDSDelegation:no /databasePath:"%SystemRoot%\NTDS" /logPath:"%SystemRoot%\NTDS" /sysvolpath:"%SystemRoot%\SYSVOL" /safeModeAdminPassword:fanguiju383.com /rebootOnCompletion:yes
Step1:检查DNS服务器内的日志是否完整
查看DNS域jmilk.com是否存在ADDS域控制器所在的HOST的资源记录。
Step2:检查SRV日志,如果域控制器成功注册到DNS服务的话,会在jmilk.com域中看见_tcp、_udp的文件夹。
_tcp文件夹右方的数据类型为服务位置(SRV)的_ldap记录。表示dns1.jmilk.com已经成功注册为域控制器。_gc记录表示dns1.jmilk.com为全局编录服务器。
注意:当DNS区域内存在这些记录后,所有加入此域的计算机,就可以通过区域解析功能,来找到ADDC域控制器为dns1.jmilk.com 。
使用nslookup来检查SRV日志:
如果使用nslookup指令能够成功解析_ldap._tcp.dc._msdcs.jmilk.com
C:\Users\Administrator>nslookup
DNS request timed out.
timeout was 2 seconds.
默认服务器: UnKnown
Address: ::1
> set type=srv
> _ldap._tcp.dc._msdcs.jmilk.com
服务器: UnKnown
Address: ::1
_ldap._tcp.dc._msdcs.jmilk.com SRV service location:
priority = 0
weight = 100
port = 389
svr hostname = dns1.jmilk.com
dns1.jmilk.com internet address = 192.168.1.100
检查AD数据库存储文件:
1. 运行:Run –> %systemroot%\ntds
图中的ntds.dit文件就是AD数据库文件,.log文件就是日志文件(扩展名默认会隐藏)。
C:\Users\Administrator>net share
共享名 资源 注解
----------------------------------------------------------------------
C$ C:\ 默认共享 IPC$ 远程 IPC
ADMIN$ C:\Windows 远程管理 NETLOGON C:\Windows\SYSVOL\sysvol\jmilk.com\SCRIPTS Logon server share SYSVOL C:\Windows\SYSVOL\sysvol Logn server share
我们可以点击 开始 –> 管理工具 –> AD 用户和计算机 来添加新的管理工具
这些管理工具能够为管理ADDS域带来极大的便利。
例如:我们可以通过事件查看器工具来查看事件日志文件,以便检查任何跟ADDS有关的问题。
在同一个域内包含有多台域控制器有下面几点好处:
1. 改善用户的登录效率(LB)
2. 提供容错功能(HA)
注意:在安装额外的域控制器时,我们需要将AD数据库由现有的域控制器复制到新的域控制器中。Win08R2提供了两种复制AD数据库的方式。
1. 通过网络直接复制,但是当AD数据库非常庞大的话需要很长的时间。
2. 通过安装媒体,即通过U盘、DVD等方式来复制AD数据库。
Step1:在HOST:dns2.example.com能够Ping通过HOST:dns1.jmilk.com的情况下参照上述的安装方法在dns2中安装AD域服务。注意安装域控制器和额外域控制器也存在着个别不同的地方。具体如下:
1). 选择现有的林
2). 输入域dns1域控制器相同的域名jmilk.com(实际上可以输入林中任意一个域名,安装向导只是通过该域名来找到林中所有的域) –> 点击设置,再输入账户凭证
5). 直接点击下一步,如果HOST没有DNS服务,则需要同时安装以恶DNS服务器。若已经安装了DNS服务,则此选项为默认。
6). 选择通过网络来从现有的dns1中的域控制器复制数据到dns2上的额外域控制器
创建Powershell脚本文件InstallReplicaADDSDomain.ps1
dcpromo /unattend /replicaOrNewDomain:replica /replicaDomainDNSName:jmilk.com /siteName:Default-First-site-Name /InstallDns:yes /confirmGC:yes /createNDSDelegation:no /userDomain:jmilk.com /userName:jmilk.com\administrator /password:fanguiju383.com /databasePath:"%SystemRoot%\NTDS" /logPath:"%SystemRoot%\NTDS" /sysvolpath:"%SystemRoot%\SYSVOL" /safeModeAdminPassword:fanguiju383.com /rebootOnCompletion:yes
Windows系统的计算机加入域后,便可以访问AD数据库和其他资源。例如:用户可以在这些计算机上使用域用户账号来登录域和访问域内的其他计算机内的共享文件夹。即加入到域内的计算机,可以由域控制器内的任意用户登录和访问资源。
注意:加入域的客户端计算机,其计算机的本地账户会默认的自动被创建在容器内,如果希望将此计算机的本地账户放置到指定的容器或组织单位的话,可以事先在该容器或组织单位内创建此计算机的同名账户。
Step1:先将服务器的hostname改为ms1,再将ms1加入jmilk.com域,加入域成功后ms1的hostname会自动的改为ms1.jmilk.com。在ms1.jmilk.com加入到域中后,ms1称之为成员服务器。
在域控制器dns1.jmilk.com中可以看见HOST MS1加入到了Computers
Step2:在域控制器dns1.jmilk.com中的DNS服务加入ms1.jmilk.com的A记录。
若AD域中新添了计算机,一般会自动的会在集成的DNS服务器中添加相应的A记录。但是这可能需要非常长的时候,所有建议手动添加。
Step3:使用已加入域的计算机登录
在计算机ms1加入到jmilk.com域胡,仍可以使用ms1的本地用户登录。
1. 使用本地用户登录
当你仍使用本地用户账号登陆时,ms1会使用本地安全性数据库来检查用户名和密码是否正确。
2.使用域用户账户登录
例如:使用jmilk.com域系统管理员Administrator的账户登录,需要切换用户并输入账号:jmilk\administrator和对应的密码。
注意:需要在账号Administrator前面加上域名jmilk或jmilk.com 。输入账号和密码后会被传送到域控制器。并且使用AD数据库来检查正确性。若登录成功后,就可以直接连接到域内的任何一台计算机并访问其内资源,但是首先需要有足够的权限。
从上图的CMD可以看出,用户是Administrator.JMILK ,但hostname仍然是ms1 。
在Win08R2和Win7支持脱机加入域的功能,也就是说在Win7没有网络连接到域控制器的时候,仍然能够通过这个djoin.exe程序来加入到域控制器中。
Step1:在域控制器dns1.jmilk.com中以管理员的身份运行下面的Powershell脚本win7pcSer.ps1
Set-ExecutionPolicy Unrestricted
djoin /provision /domain jmilk.com /machine win7pc /savefile win7pc.txt
#/machine 指定脱机计算机名称
#/domain 指定要加入的域名
#/savefile 指定创建的文件名称,此文件内包含了要加入域的计算机所需要的所有信息
Output:
C:\Users\Administrator>djoin /provision /domain jmilk.com /machine win7pc /savef
ile win7pc.txt
正在设置计算机帐户...
已成功设置域 [jmilk.com] 中的 [win7pc]。
设置数据已成功保存到 [win7pc.txt]。
计算机帐户设置已成功完成。
操作成功完成。
Step2:将win7pc.txt文件Copy到HOST win7pc中,并且以管理员的身体运行下面Powershell脚本win7pc.ps1来将win7pcDesk.txt的文本信息导入到HOST win7pc 。
注意:需要使用管理员权限来执行此Powershell脚本。
Set-ExecutionPolicy Unrestricted
djoin /requestODJ /loadfile win7pc.txt /windowspath %SystemRoot% /localos
OutPut:
c:\Users\mikey\Desktop>djoin /requestODJ /loadfile win7pc.txt /windowspath %Syst
emRoot% /localos
正在从以下文件加载设置数据: [win7pc.txt]。
脱机加入域请求成功完成。
需要重新启动才能应用更改。
操作成功完成。
当HOST win7pc连上网络,可以与域控制器通信时,重启win7pc便可以完成加入域的程序。
要将一台计算机脱离域,需要Enterprie Admin或Domain Admin的权限来操作。
Step1:以jmilk\Administrator域管理员账号登陆到win7pc中。
你可以通过降级的方式来删除域控制器,也可以将ADDS从域控制器内删除。
如果在同一个域中还存在别的域控制器,则可以将其中一个域控制器降级为成员服务器,以此来删除域控制器。并且域控制器原来的计算机账号汇从Domain Controllers转移到Computers中。
Step1:**运行**Run –> dcpromo 进入AD域服务安装向导
注意:dcpromo /forceremoval为强制删除域控制器
Step2:点击下一步,如果改域控制器是最后一个域控制器时,勾选删除该域
域系统管理员需要为每一个域用户分别创建一个用户账号,让域用户能够使用这个账号来登录域并访问域中的资源。域系统管理员可以使用AD管理中心和AD计算机和用户管理来创新、管理域用户账号。当用户使用域用户账号登陆到域内的计算机后,就可以访问别的计算机的资源,而不需要在特定的计算机上再次登陆。这就是ADDS的特性之一 —— 单点登录,多处使用
创建:在AD目录中右击域名 –> 新建 –> 组织单位
默认会勾选防止容器被意外删除,这样新建的组织单位就不能直接删除。
删除:想要删除已经勾选了防止容器被意外删除的组织单位,需要先把勾选去掉。
从管理工具打开AD计算机和用户 –> 点击查看 –> 选择高级功能 –> 右击你希望删除的组织单位名称 –> 选择属性 –> 点击对象标签页 –> 将勾选去掉
之后就可以正常的删除组织单位。
域用户可以到域成员计算机上(非域控制器)使用两种账号来登录域。
UPN用户主体名称的格式和电子邮件账号相同,例如:[email protected]
UPN账户只能在属于域内的计算机登录时使用,在整个林内这个UPN必须是唯一的。
SamAccountName是旧式的登录形式,例如:JMILK\Administrator
这个名称也必须是唯一的。
注意:一般的用户是无法在域控制器上登陆的,需要特殊的处理后方法域控制器登录权限。
新建一个账户
域账户只能在组织单位下创建。例如:在组织单位teather内新建一个域账户
管理账户
一般的域账户管理工作能够实现例如:重设密码、移动账户、删除账户、更改登录名称等等。
每一个域账户都有一些相关的属性数据,域用户可以使用这些属性来查看对象的域账户
组织数据的设置:
当我们使用AD计算机和用户管理工具来创建非常多的域用户时,需要进行非常多的重复操作。为了避免这种情况,我们可以使用08R2内置的csvde.exe、ldifde.exe、dsadd.exe 程序来节省你创建用户账户的时间。
1. csvde.exe:用于添加账户、但不能修改和删除账户。可以先将需要添加的账户创建到纯文本内,然后再使用csvde.exe程序将文本内的这些用户一次性导入到AD数据库中。
2. ldifde.exe:可以用于添加、删除、修改账户。
3. dsadd.exe、dsmod.exe、dsrm.exe:分别用于添加、修改、删除用户。这几个程序需要结合批处理程序一起使用。
Example1:创建userOps.bat批处理文件。
dsadd user 'CN=kenji, OU=teacher, CD=jmilk, dc=com' -samid Kenji -upn [email protected] -display Kenji -disabled yes
dsmod user 'CN=chihiro, OU=teacher, CD=jmilk, dc=com' -upn [email protected] -pwd chihiro383.com -tel 123456789
dsrm 'CN=jack, OU=teacher, CD=jmilk, dc=com' -noprompt
pause
#-samid:指定SamAccountName的登录设置
#-upn:指定UPN登录设置
#-display:指定账户的显示名称
#-disabled:表示是否禁用此用户
#-pwd:指定更改的密码
#-tel:指定更改的电话号码
#-noprompt:表示不显示删除确定界面
用指令dsadd user /?来查看指令的帮助文档。
ADDS的域组可以分为下面两种类型:
1. 安全组:它可以用来指定权限和权利。
2. 发布组:被用在与安全无关的工作上,例如:可以发送电子邮件给发布组。
组的使用范围:
1. 本地域组:可以包含林中任何一个域内的用户,主要是用于指派同一个域内资源的权限。即被包含于本地域组的用户可以获得一定的权限去访问此域的资源。
2. 全局组:主要用来组织用户,你可以将多个即将被赋予想用权限的账户加入到同一个全局组中。
3. 通用组:可以在所有域内被设置访问权限,被包含在通用组内的账户可以获得访问所有域的权限。