可以使用以下过程将 RHEL 9.x/8.x 虚拟机 (VM) 与 Active Directory (AD) 域集成以进行智能卡重定向。

该过程中的一些示例使用占位符值以表示网络配置中的实体,例如,AD 域的 DNS 名称。请将占位符值替换为您的配置特定的信息,如下表中所述。

占位符值 说明
dns_IP_ADDRESS DNS 名称服务器的 IP 地址
rhelsc.domain.com 虚拟机的完全限定主机名
rhelsc 虚拟机的非限定主机名
domain.com AD 域的 DNS 名称
DOMAIN.COM AD 域的 DNS 名称,全部为大写字母
DOMAIN 包含 Samba 服务器的工作组或 NT 域的 DNS 名称,全部为大写字母
dnsserver.domain.com AD 服务器的主机名

过程

  1. 在 RHEL 虚拟机上,执行以下操作。
    1. 根据组织要求配置网络和 DNS 设置。
    2. 关闭 IPv6
    3. 关闭自动 DNS
  2. 配置 /etc/hosts 配置文件,使其类似于以下示例。
    127.0.0.1        rhelsc.domain.com rhelsc localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1              localhost localhost.localdomain localhost6 localhost6.localdomain6
     
    dns_IP_ADDRESS   dnsserver.domain.com
  3. 配置 /etc/resolv.conf 配置文件,使其类似于以下示例。
    # Generated by NetworkManager
    search domain.com
    nameserver dns_IP_ADDRESS
  4. 安装 AD 集成所需的软件包。
    sudo yum install -y samba-common-tools oddjob-mkhomedir
  5. 指定系统身份和身份验证源。
    sudo authselect select sssd with-smartcard with-mkhomedir
    
    
  6. 启动 oddjobd 服务。
    • (RHEL 8.x) 运行以下命令。
      sudo systemctl enable oddjobd.service
      sudo systemctl start oddjobd.service
      
    • (RHEL 9.x) 运行以下命令。
      sudo systemctl enable --now oddjobd.service
  7. 要支持智能卡身份验证,请创建 /etc/sssd/sssd.conf 文件。
    sudo touch /etc/sssd/sssd.conf
    sudo chmod 600 /etc/sssd/sssd.conf
    sudo chown root:root /etc/sssd/sssd.conf
  8. 将所需内容添加到 /etc/sssd/sssd.conf 中,如以下示例中所示。在 [pam] 部分下,指定 pam_cert_auth = True
    [sssd]
    config_file_version = 2
    domains = domain.com
    services = nss, pam, pac
     
    [domain/DOMAIN.COM]
    id_provider = ad
    auth_provider = ad
    chpass_provider = ad
    access_provider = ad
    cache_credentials = true
     
    [pam]
    pam_cert_auth = True
  9. (RHEL 8.x) 启用 sssd 服务。
    sudo systemctl enable sssd.service
    sudo systemctl start sssd.service
  10. 编辑 /etc/krb5.conf 配置文件,使其类似于以下示例。
    # To opt out of the system crypto-policies configuration of krb5, remove the
    # symlink at /etc/krb5.conf.d/crypto-policies which will not be recreated.
    includedir /etc/krb5.conf.d/
     
    [logging]
        default = FILE:/var/log/krb5libs.log
        kdc = FILE:/var/log/krb5kdc.log
        admin_server = FILE:/var/log/kadmind.log
     
    [libdefaults]
        dns_lookup_realm = false
        ticket_lifetime = 24h
        renew_lifetime = 7d
        forwardable = true
        rdns = false
        pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt
        spake_preauth_groups = edwards25519
        default_realm = DOMAIN.COM
        default_ccache_name = KEYRING:persistent:%{uid}
     
    [realms]
     DOMAIN.COM = {
         kdc = dnsserver.domain.com
         admin_server = dnsserver.domain.com
         default_domain = dnsserver.domain.com
         pkinit_anchors = FILE:/etc/pki/nssdb/certificate.pem
         pkinit_cert_match = <KU>digitalSignature
         pkinit_kdc_hostname = dnsserver.domain.com
     }
     
    [domain_realm]
     .domain.com = DOMAIN.COM
     domain.com = DOMAIN.COM
  11. 编辑 /etc/samba/smb.conf 配置文件,使其类似于以下示例。
    [global]
            workgroup = DOMAIN
            security = ads
            passdb backend = tdbsam
            printing = cups
            printcap name = cups
            load printers = yes
            cups options = raw
            password server = dnsserver.domain.com
            realm = DOMAIN.COM
            idmap config * : range = 16777216-33554431
            template homedir =/home/DOMAIN/%U
            template shell = /bin/bash
            kerberos method = secrets and keytab
     
    [homes]
            comment = Home Directories
            valid users = %S, %D%w%S
            browseable = No
            read only = No
            inherit acls = Yes
     
    [printers]
            comment = All Printers
            path = /var/tmp
            printable = Yes
            create mask = 0600
            browseable = No
     
    [print$]
            comment = Printer Drivers
            path = /var/lib/samba/drivers
            write list = @printadmin root
            force group = @printadmin
            create mask = 0664
            directory mask = 0775
  12. 加入 AD 域,如以下示例中所示。
    sudo net ads join -U AdminUser
    运行 join 命令将返回类似于以下示例的输出。
    Enter AdminUser's password:
    Using short domain name -- DOMAIN
    Joined 'rhelsc' to dns domain 'domain.com'
  13. 确认虚拟机已成功加入 AD 域。
    sudo net ads testjoin

    成功的 AD 加入操作将返回以下输出。

    Join is OK

下一步做什么

在 RHEL 9.x/8.x 虚拟机上配置智能卡重定向功能