配置 Samba AD域.note

noteId: WEBc1e5376eb0d67eaf861bc55f263fb6c8 · 原始路径:/ALL/Linux - A模块/服务配置/Samba、Samba AD域/配置Samba AD域/配置 Samba AD域.note · 图片:49 · 附件待处理:0

 
·防火墙需要放行的端口:
DNS:53
Kerberos:88、464
LDAP/LDAPS:389、636(可选)
RPC/Netlogon:135、(动态高端口 49152–65535,或限制区间)
SMB/CIFS:445
NTP:123
 
一、配置 Samba AD域:
 
注意:Samba 的 REALM 是严格区分大小写的
 
1、配置 samba AD域:
 
(1)创建 samba AD域:
apt install -y samba bind9 krb5-user winbind libnss-winbind libpam-winbind dnsutils smbclient
 
# 停止 samba 服务:
systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd 
 
然后将dns服务器地址指向本地
并且本地需要配置FQDN
cd /etc/samba
mv smb.conf smb.conf.back
 
# 这条命令都可以使用 -h 查看到所有参数
samba-tool domain provision --use-rfc2307 --realm=SHANGHAI.ORG --domain=SHANGHAI --server=role=dc --dns-backend=BIND9_DLZ
注意:--domain 这里必须要指定 netbiso名称,并且这个名称必须是域名最前面的那个
 
# --use-rfc2307 开启 UNIX ID 扩展(便于 POSIX/SSSD 映射)(默认就开了)
# BIND9_DLZ 选择 BIND9 动态后端(由 Samba 通过 GSS-TSIG 更新 DNS 记录)
 
·修改用户的密码:
这个命令可以修改所有用户的密码
samba-tool user setpassword administrator
# 语法 samba-tool user setpassword [用户名]
 
·关闭密码复杂度组策略:
默认要求密码复杂度和最少7个字符密码
samba-tool domain passwordsettings set --complexity=off
samba-tool domain passwordsettings set --min-pwd-length=1
 
 
·创建AD域用户:
samba-tool user create user1 'P@ssw0rd123!'
 
(2)配置 bind9 include samba DNS:
# samba DNS 路径为:/var/lib/samba/bind-dns/named.conf
vim /etc/bind/named.conf
 
·关联gssapi密钥,并关闭 DNSSEC:
vim /etc/bind/named.conf.options
systemctl restart bind9:
 
 
(3)修改 samba 配置文件:
vim /etc/samba/smb.conf
 
(4)复制自动生成的 krb5.conf 文件:
cp /etc/krb5.conf /etc/krb5.conf.back
cp /var/lib/samba/private/krb5.conf /etc
cat /etc/krb5.conf
应该输出以下内容:
 
 
(5)启动 samba-ad-dc 服务:
systemctl restart bind9
systemctl unmask samba-ad-dc
systemctl enable samba-ad-dc
systemctl start samba-ad-dc
 
(6)开启登录自动创建家目录:
pam-auth-update
 
 
·测试域控:
# 这个域名是严格区分大小写的,就是前面定义的 REALM
kinit administrator@SHANGHAI.ORG
klist
 
# 下面的命令都必须要成功:
samba-tool drs showrepl
 
samba-tool dns zonelist localhost -U Administrator
 
wbinfo -u
wbinfo -g
 
 
 
# 测试DNS解析:
dig +short _kerberos._udp.shanghai.org SRV @172.16.1.1
dig +short _ldap._tcp.shanghai.org SRV @172.16.1.1
nslookup server1.shanghai.org
这些记录都是自动生成的
 
2、创建 OU 和 用户:
samba-tool 的管理用户命令,都可以使用 -h 查看后续参数选项
 
·查看当前 AD域中的内容:
如果有时不行,就将 DN路径换成大写的(类似windows那样)
apt install -y ldap-utils
ldapsearch -D cn=administrator,cn=users,dc=shanghai,dc=org -H ldap://localhost -w Skills39 | less
 
 
(1)创建 OU:
# 创建OU:
samba-tool ou create "ou=NewOU,dc=shanghai,dc=org"
 
# 查看OU:
samba-tool ou list
 
·删除 OU:
samba-tool ou delete "ou=NewOU,dc=shanghai,dc=org"
 
(2)创建 组:
# 创建组:
samba-tool group create "Manager"
## 这样默认会创建全局安全组
## 默认存放在 cn=Users,dc=shanghai,dc=org 中
## 使用 --groupou="OU=NewOU" 来指定组存放到OU中的位置(这里需要使用相对的DN路径,不能使用完整的DN路径,否则会报错)
 
# 查看组:
samba-tool group list
 
·在指定OU中创建组:
## 使用 --groupou="OU=NewOU" 来指定组存放到OU中的位置(这里需要使用相对的DN路径,不能使用完整的DN路径,否则会报错)
## 例如,当前OU完整路径为:ou=NewOU,dc=shanghai,dc=org
samba-tool group create Test --groupou="ou=NewOU"
 
·删除组:
samba-tool group delete Manager
 
·其他创建组参数:
# 可以使用 samba-tool group create -h 查看参数:
--groupou=    //指定组创建的位置
--description=    //设置组的描述信息
--gid-number=    //指定组的 gid
 
 
(3)创建用户:
# 创建用户:
samba-tool user create alice Skills39
## (alice)用户默认被创建在 cn=Users,dc=shanghai,dc=org 下
## 用户默认属组为:cn="Domain Users",cn=users,dc=shanghai,dc=org
 
# 查看用户:
samba-tool user list
 
·在指定OU中创建用户:
## 使用 --userou="OU=NewOU" 来指定组存放到OU中的位置(这里需要使用相对的DN路径,不能使用完整的DN路径,否则会报错)
## 例如,当前OU完整路径为:ou=NewOU,dc=shanghai,dc=org
samba-tool user create service1 Skills39 --groupou="ou=NewOU"
 
 
·删除用户:
samba-tool user delete alice
 
·其他创建用户参数:
# 使用 samba-tool user create -h 可以查看到参数选项:
 
--must-change-at-next-login    //强制用户下次登录时必须修改密码(默认关闭)
# 开启:--must-change-at-next-login
# 关闭:--must-change-at-next-login=no
 
--use-username-as-cn    //让 CN 直接等于用户名,而不是“名 姓”的组合。默认:如果提供了 --given-name/--surname,CN 会用“GivenName Surname”
 
--userou=USEROU    //指定用户要存放的 OU路径
 
--unix-home=[UNIX_HOME]    //指定用户主目录(默认是:/home/[用户名])
 
--uid-number=[UID_NUMBER]    //指定用户的 uid
 
--gid-number=[GID_NUMBER]    //指定用户的 gid(并不会将用户加入该组,要加入组,需要使用命令手动加组)
 
--login-shell=[LOGIN_SHELL]    //指定用户登录 shell(默认登录shell为 /bin/sh)
 
# 其他用户属性:
--surname=SURNAME	//sn,姓氏,Windows “姓氏”栏
--given-name=GIVEN_NAME	    //givenName,名,Windows “名字”栏
--initials=INITIALS	    //initials,姓名缩写,显示为 “姓名首字母”
--job-title=JOB_TITLE	//title,职位名称
--department=DEPARTMENT	    //department,部门
--company=COMPANY	//company,公司名称
--description=DESCRIPTION	//description,备注描述
--mail-address=MAIL_ADDRESS	    //mail,邮箱地址
--internet-address=INTERNET_ADDRESS	    //wWWHomePage,主页地址
--telephone-number=TELEPHONE_NUMBER	    //telephoneNumber,办公电话
--physical-delivery-office=PHYSICAL_DELIVERY_OFFICE	    //physicalDeliveryOfficeName,办公室位置
 
 
(4)将用户添加进组:
# 语法:
samba-tool group addmembers [组] [用户]
 
# 示例:
samba-tool group addmembers Manager alice
 
 
·将用户从组中移除:
# 语法:
samba-tool group removemembers [组] [用户]
 
# 示例:
samba-tool group removemembers Manager alice
 
 
(5)将 用户、组 移动到指定 OU、CN容器下:
# 移动用户到OU中:
samba-tool user move alice "ou=NewOU,dc=shanghai,dc=org"
 
# 移动组到OU中:
samba-tool group move Manager "ou=NewOU,dc=shanghai,dc=org"
 
 
二、客户端加域:
 
 
1、使用 sssd 加域(推荐):
客户端要配置 FQDN,DNS服务器地址要指向域控
(1)安装软件包:
apt install -y sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin krb5-user
如果你软件包没下齐,这里会提示你的:
 
 
(2)将客户端加域:
realm discover shanghai.org
realm join -U administrator shanghai.org
没有报错就是加域成功了
 
(3)配置登录时自动创建家目录:
pam-auth-update
 
 
(4)配置允许域用户登录:
方式一(推荐):放宽组策略限制:
vim /etc/sssd/sssd.conf
# 新增一条:ad_gpo_access_control = permissive
systemctl restart sssd
 
 
方式二:不使用AD的策略模块进行认证,自定义允许登录的用户:
这个每个用户都要手动允许,比较麻烦
vim /etc/sssd/sssd.conf
这里只允许了 administrator 用户登录
systemctl restart sssd
 
·查看、测试登录:
realm list
 
id administrator@shanghai.org
 
# 登录 域用户:
systemctl restart sssd
su - administrator@shanghai.org
登录成功
 
 
2、使用 winbind 加域:
客户端要配置 FQDN,DNS服务器地址要指向域控
(1)安装软件包:
apt install -y samba winbind libpam-winbind libnss-winbind krb5-user
安装时输入 域名和 DC服务器域名
 
 
(2)配置 winbind:
# 配置DNS解析指向域控:
echo "nameserver 172.16.1.1" > /etc/resolv.conf
 
# 编辑krb5.conf 文件:
vim /etc/krb5.conf
 
# 复制 域控的 smb.conf 文件:
cd /etc/samba
cp smb.conf smb.conf.bak
scp root@172.16.1.1:/etc/samba/smb.conf .
vim smb.conf
 
 
然后确保 /etc/nsswitch.conf 文件中有 winbind 配置(一般会默认添加)
 
 
pam-auth-update
勾选登录时自动创建家目录
 
# 重启相关服务:
systemctl restart smbd winbind
 
 
(3)加入 AD域:
# 先使用 kinit 和 klist测试(必须成功):
## 不测试也无所谓
kinit administrator
klist
 
# 加入 AD域:
net ads join -U administrator
 
 
 
·查看、测试登录:
id administrator
id administrator@shanghai.org
su - administrator
 
 
 
 
 
·如果加域时忘记改 FQDN,可以使用 命令重新注册:
net ads dns register -U administrator
 
 
 
 
·Windows 也能够直接加域:
将DNS写为Samba AD域的IP即可
 
 
 
三、图形化连接 AD域进行管理:
这个不常用,应该不会考,是我自己研究的
 
 
(1)下载管理工具:
apt install -y ldap-account-manager
apt install -y apache2
 
(2)复制网站配置到apache/nginx:
# 它会提供两种网站的配置:
ls /etc/ldap-account-manager
# 直接将配置复制过去即可:
cp /etc/ldap-account-manager/apache.conf /etc/apache2/conf-enabled/
systemctl restart apache2
 
(3)修改 凭据:
vim /usr/share/ldap-account-manager/config/lam.conf
# 先使用 :%s/dc=my-domain,dc=com/dc=shanghai,dc=org 替换默认域名
先使用 :%s/dc=my-domain,dc=com/dc=shanghai,dc=org 替换默认域名
指定 用户和组 存放的ou路径,并修改用户和组的类型:
systemctl restart apache2
修改用户和组的类型为 windowsUser、windowsGroup,并指定用户要显示的属性为:cn、sAMAccountName(samba AD域用户没有uid、sn等属性)
 
 
·客户端访问:
http://172.16.1.1/lam
 
输入密码登录后就能够查看到用户和组了:
用户:
 
组:
 
 
 
 
四、删除 samba AD域:
# 停止服务:
systemctl stop samba-ad-dc
systemctl stop bind9
systemctl stop winbind smbd nmbd
 
# 删除文件:
rm -rf /var/lib/samba/*
rm -rf /etc/samba/*
rm -rf /var/cache/samba/*
rm -rf /var/run/samba/*
## 如果使用 bind_dlz需要加上:
rm -rf /var/lib/samba/bind-dns/*
rm -rf /var/lib/samba/private/dns/*
 
# 删除 krb5配置:
rm -f /etc/krb5.conf
rm -rf /var/lib/krb5kdc/
 
# 卸载服务:
apt purge samba samba-dsdb-modules samba-vfs-modules winbind libnss-winbind libpam-winbind krb5-user bind9 -y
apt autoremove -y