文章目录
- **一、加入Active Directory域**
- **1. 准备工作**
- **2. 配置步骤**
- **步骤1:验证网络和DNS**
- **步骤2:发现域**
- **步骤3:加入域**
- **步骤4:配置SSSD(可选)**
- **步骤5:配置sudo权限(可选)**
- **步骤6:验证加域**
- 步骤7:账户验证
- **二、退出Active Directory域(SOP)**
- **1. 退出域**
- **2. 清理配置**
- **3. 验证退出**
- 4.**恢复原始配置**
- **三、故障排查**
- **四、注意事项**
以下是Red Hat Enterprise Linux (RHEL) 服务器加入和退出Active Directory(AD域)的详细SOP(标准操作流程),包括准备工作、具体步骤和验证方法:
一、加入Active Directory域
1. 准备工作
-
网络要求:
- 确保服务器能与域控制器(DC)通信(TCP/UDP 53, 88, 123, 135, 139, 389, 445, 464, 636, 3268/3269)。
- DNS配置必须指向域控制器的DNS服务器。
-
账户权限:
- 域管理员账户(用于加域)。
- 本地root权限。
-
软件依赖:
sudo yum install -y realmd sssd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients
#问题:由 samba-common-tools 版本引起,可以尝试单独安装兼容版本 sudo dnf install -y https://vault.centos.org/8.5.2111/BaseOS/x86_64/os/Packages/samba-common-tools-4.14.5-7.el8_5.x86_64.rpm#重新安装 sudo dnf install -y realmd sssd oddjob oddjob-mkhomedir adcli samba-common krb5-workstation openldap-clients --allowerasing
2. 配置步骤
步骤1:验证网络和DNS
ping ad-domain.example.com
nslookup ad-domain.example.com
步骤2:发现域
sudo realm discover ad-domain.example.com
输出应显示域控制器的详细信息。
步骤3:加入域
sudo realm join --user=admin_user ad-domain.example.com
- 输入域管理员密码。
- 验证加入成功:
sudo realm list
步骤4:配置SSSD(可选)
编辑SSSD配置文件(/etc/sssd/sssd.conf
):
[sssd]
domains = ad-domain.example.com
services = nss, pam[domain/ad-domain.example.com]
ad_domain = ad-domain.example.com
krb5_realm = AD-DOMAIN.EXAMPLE.COM
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%u
access_provider = ad
重启SSSD服务:
sudo systemctl restart sssd
步骤5:配置sudo权限(可选)
允许域用户组使用sudo:
###修改配置文件/etc/sudoers
# 允许单个域用户(administrator)使用 sudo
administrator@ad-domain.example.com ALL=(ALL) ALL
# 允许域用户组(如 "Domain Admins")使用 sudo
%domain\ admins@ad-domain.example.com ALL=(ALL) ALL###命令行
echo "%domain\ admins@ad-domain.example.com ALL=(ALL) ALL" | sudo tee -a /etc/sudoers.d/domain_admins# 切换为域用户测试 sudo
sudo -u administrator@ad-domain.example.com sudo -l
步骤6:验证加域
-
检查域用户登录:
id domain_user@ad-domain.example.com
-
测试Kerberos票据:
kinit domain_user@AD-DOMAIN.EXAMPLE.COMklist 预期输出: kinit 成功无报错。 klist 显示有效的 TGT(Ticket Granting Ticket)。
步骤7:账户验证
#验证登录 ssh administrator@ad-domain.example.com@localhost 或 ssh administrator@<服务器IP> 预期结果: 能成功登录,且家目录自动创建(如 /home/ad-domain.example.com/administrator)。#检查家目录是否自动创建 bash ls -l /home/hezhong.com/administrator#验证权限和sudo (1) 检查域用户是否在 sssd 缓存中 bash getent passwd administrator@ad-domain.example.com getent group "domain admins@ad-domain.example.com" 预期输出: 返回域用户和组的详细信息。(2) 测试域用户sudo权限 如果已配置域用户组(如 domain admins)的 sudo 权限: echo "%domain\ admins@hezhong.com ALL=(ALL) ALL" | sudo tee -a /etc/sudoers.d/domain_admins然后测试: sudo -u administrator@ad-domain.example.com sudo -l 预期输出: 显示域用户有 sudo 权限。#验证SSSD服务状态 (1) 检查SSSD日志 sudo tail -n 50 /var/log/sssd/sssd.log 关键检查点: 无 Authentication failure 或 Permission denied 错误。 成功缓存用户信息。(2) 重启SSSD并测试 sudo systemctl restart sssd id administrator@ad-domain.example.com # 再次验证
二、退出Active Directory域(SOP)
1. 退出域
sudo realm leave ad-domain.example.com
-
若需强制退出(如域控制器不可用):
sudo realm leave --remove=/var/lib/sss/db/ ad-domain.example.com
#备份关键数据 /etc/sssd/sssd.conf(SSSD 配置) sudo cp /etc/sssd/sssd.conf /etc/sssd/sssd.conf.bak/etc/krb5.conf(Kerberos 配置) sudo cp /etc/krb5.conf /etc/krb5.conf.bak/var/lib/sss/db/(SSSD 缓存数据库) sudo tar -czvf sssd_db_backup.tar.gz /var/lib/sss/db/#AD 相关日志 sudo journalctl -u sssd --no-pager > sssd_logs.txt
2. 清理配置
- 删除SSSD缓存:
sudo rm -rf /var/lib/sss/db/* sudo systemctl restart sssd###问题 ######################################################## 恢复最小化本地认证 如果不再需要 AD 域认证,可将 SSSD 切换为仅本地认证: # 1. 清理旧的 SSSD 配置 sudo rm -f /etc/sssd/sssd.conf# 2. 生成最小化配置(仅支持本地用户) sudo authselect select minimal --force# 3. 重启服务 sudo systemctl restart sssd#sssd服务验证 systemctl status sssd # 应显示 "active (exited)"(无需常驻运行)############################################################ 手动修复 SSSD 配置 # 1. 创建最小配置 sudo tee /etc/sssd/sssd.conf > /dev/null <<EOF [sssd] services = nss, pam domains = local[domain/local] id_provider = local EOF# 2. 设置权限 sudo chmod 600 /etc/sssd/sssd.conf# 3. 重启服务 sudo systemctl restart sssd############################################ 完全禁用 SSSD(无身份管理需求) 如果完全不需要 SSSD: # 1. 停止并禁用服务 sudo systemctl stop sssd sudo systemctl disable sssd# 2. 恢复系统默认认证 sudo authselect select minimal --force
- 恢复原始DNS配置(如有修改)。
3. 验证退出
- 检查域用户是否无法登录:
#检查域状态 sudo realm list 预期输出: 无域信息,或显示 configured: no。#检查域用户 id domain_user@ad-domain.example.com 预期输出: id: administrator@域: no such user。#检查 SSSD 日志 sudo tail -n 20 /var/log/sssd/sssd.log 预期输出: 无与 域 相关的活动日志。
- 确认
realm list
无域信息。
4.恢复原始配置
#如果加域时修改了 DNS,需还原:
sudo vi /etc/resolv.conf # 恢复为加域前的 DNS 服务器#清理 Kerberos 票据
sudo kdestroy -A # 清除所有 Kerberos 票据#可选:删除自动创建的家目录
sudo rm -rf /home/ad-domain.example.com/
三、故障排查
- 加域失败:
- 检查
/var/log/sssd/sssd.log
和journalctl -xe
。 - 验证时间同步(NTP):
chronyc sources
。
- 检查
- 用户无法登录:
- 检查SSSD配置中的
use_fully_qualified_names
和fallback_homedir
。 - 确保
pam_sss.so
在PAM配置中启用(/etc/pam.d/system-auth
)。
- 检查SSSD配置中的
四、注意事项
- 权限:加域操作需root权限。
- 备份:修改关键文件前备份(如
/etc/sssd/sssd.conf
、/etc/krb5.conf
)。 - 安全:域账户权限应遵循最小权限原则。
通过以上步骤,可确保RHEL服务器安全地加入或退出AD域。根据实际环境调整域名和用户组名称。