@Linux服务器加域&退域


以下是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.COM
    
    klist
    预期输出:
    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/

三、故障排查

  1. 加域失败
    • 检查/var/log/sssd/sssd.logjournalctl -xe
    • 验证时间同步(NTP):chronyc sources
  2. 用户无法登录
    • 检查SSSD配置中的use_fully_qualified_namesfallback_homedir
    • 确保pam_sss.so在PAM配置中启用(/etc/pam.d/system-auth)。

四、注意事项

  • 权限:加域操作需root权限。
  • 备份:修改关键文件前备份(如/etc/sssd/sssd.conf/etc/krb5.conf)。
  • 安全:域账户权限应遵循最小权限原则。

通过以上步骤,可确保RHEL服务器安全地加入或退出AD域。根据实际环境调整域名和用户组名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值