AD域

五十岚2022年9月21日
大约 4 分钟

微软 LDAP 协议的一个实现,但又不仅仅实现了 LDAP 协议,它先实现了一个 LDAP 服务器,在此基础上又实现了具体的应用 Windows 域控 ,常用于公司的用户、计算机资源统一管理

1. AD

AD(Active Directory 活动目录): 可以作为数据源, 和各种应用集成,比如公司内部的软件系统、Web 应用等,还可以设立群组、访问权限等

1.1 核心概念

DomainControllerDC域控制器),就是一台装了 AD 活动目录服务的 Windows 服务器,所有的域用户等的资源信息都会存在 DC

提示

一旦装上域控制器,就 没有本地用户 了,会自动的变为域用户,实际应用场景可能会有多个 DC

成员计算机: 公司有很多计算机,需要和域控制器通信、连接时,需要加入域,和一套 信任机制 的,加入到域时,会生成信任密钥(类似 token),每隔一段时间会刷新 key,不同成员间需要访问的话,也要通过 DC 的 token

sid: 用户和计算机都有(security id)作为唯一标识

Directory: 用来存储用户帐户、计算机帐户、打印机与共享文件等对象,这些对象的存储位置都是目录数据库(Directory Database

AD 活动目录都要配一个本地的 DNS 服务,因为活动目录一般都不会通过 ip ,而是通过域名来登录,这样用户可以通过域名来访问 DC 域控制器

1.2 关键字

DIT(Driectory Information Tree): 目录信息树

Root DSE(Root DSA-specific entry): 根节点项

ObjectClass: 对象类,指定规则,比如本项中必须有、可能有的属性,比如规定 User 必须有人名

项:uid=einsteinCN=zhengze ,每个项都会包含 对象类属性

DN(distinguishedName): 代表了该条目的 唯一标识 ,类似数据库的主键,可以通过该名字找到唯一记录,实际是从左到右,记录了 当前节点到树根的路径 ,也可以理解为 叶子节点

不仅能直接用户登入,AD 也可以通过 DN 来登入的

RDN:DN 的组成部分,一个键值对就是一个 RDN ,如 CN=zhengze , CN=Users , DC=uit , DC=devops , DC=local 就是 5RND

DC(domain component): 这里不是上文的域控制器,而是 域名组成 ,比如 uit.deveops.local 拆出来的域名组成

C(country): 指国家,国际化公司常用

O(organization): 指公司

OU(organization unit): 组织单元,指部门、分公司,可以理解为一个

下面可以包含:用户、计算机、工作组、打印机、安全策略、其他组织等

CN(Common name): 通用记录名,也会用 uid ,也指记录名/用户唯一标识,又时会共存

1.3 AD DS

Active DirectoryDirectory 则是用来存储用户帐户、计算机帐户、打印机与共享文件等对象,这些对象的存储位置都是目录数据库(Directory Database),而 Active Directory 负责提供目录服务的组件就是 AD域服务AD DS),负责操作(增删改查)目录数据库。

AD DS 可以在一台计算机、一个小型 LAN 或是数个 WAN 的结合中,它包含此范围内所有的对象,如文件、打印机、应用程序、服务器、域控制器与用户帐号等

2. 加域配置

以内部自建环境 uit.devops.local 为例 ,现有目标节点 172.16.120.141 需要加入域

  • ip: 172.16.70.124
  • 域管理员: administrator

修改 Samba 配置文件

$ vim /etc/samba/smb.conf

[global]
workgroup = UIT
netbios name = 172.16.70.124 
server string =
security = ads
realm = UIT.DEVOPS.LOCAL
password server = UIT.DEVOPS.LOCAL
encrypt passwords = yes
local master = no
domain master = no
preferred master = no
idmap config * : backend = tdb
idmap config * : range = 100000-999999
idmap config UIT : backend = rid
idmap config UIT : range = 1000000-2000000
winbind use default domain = no
winbind enum users = yes
winbind enum groups = yes
winbind separator = +

# optimization
sync always = no
write cache size = 10485760
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
use sendfile = yes
min receivefile size = 131072

# ad common params
log file = /var/log/samba/%m.log
max log size = 50
printcap name = /etc/printcap
load printers = no
wins server =
unix charset = utf-8
dos charset = cp936
dns proxy = no
delete readonly = yes
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
template shell = /bin/false
map to guest = bad user
null passwords = yes
usershare allow guests = yes
include = smb_shares.conf

特别注意

include 共享文件路径参数,必须放在最后

修改 nsswitch

$ vim /etc/nsswitch

passwd:        files winbind
shadow:        files winbind
group:         files winbind
hosts:         files dns winbind
bootparams:    files
ethers:        files
networks:      files
protocols:     files
rpc:           files
services:      files
netgroup:      files
publickey:     files
automount:     files
aliases:       files

修改认证

vim /etc/krb5.conf

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
default_realm = UIT.DEVOPS.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false

[realms]
UIT.DEVOPS.LOCAL = {
    kdc = 172.16.70.124
    default_ad = UIT.DEVOPS.LOCAL
}

[ad_realm]
.UIT.DEVOPS.LOCAL = UIT.DEVOPS.LOCAL
UIT.DEVOPS.LOCAL = UIT.DEVOPS.LOCAL

[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults]
pam = {
    debug = false
    ticket_lifetime = 36000
    renew_lifetime = 36000
    forwardable = true
    krb4_convert = false
}

修改 hosts

$ vim /etc/hosts

172.16.70.124 uit.devops.local

加域退域操作(加域前记得配置 DNS 172.16.70.124

# 通过配置文件,访问域信息
$ net ads info -s /etc/samba/smb.conf

# 加域命令
$ net ads join -U administrator%user@dev

# 退域命令, -S 接完整 域主机+域名
$ net ads leave -U administrator%user@dev -S server124.uit.devops.local

# 可以检测是否加域成功 
$ net ads testjoin


登入

加入域后,客户端登入 Sambacmd 访问 \\172.16.120.141\Users 后,输入用户 需要使用 用户@域 形式,如: igarashi@UIT

上次编辑于: 2022/11/30 03:23:22