7장. 인증 공급자로 AD를 사용하도록 RHEL 호스트 구성

시스템 관리자는 호스트를 AD에 연결하지 않고 RHEL(Red Hat Enterprise Linux) 호스트의 인증 공급자로 AD(Active Directory)를 사용할 수 있습니다.

예를 들면 다음과 같은 경우 이 작업을 수행할 수 있습니다.

  • AD 관리자에게 호스트 활성화 및 비활성화에 대한 제어 권한을 부여하지는 않습니다.
  • 회사 PC가 될 수 있는 호스트는 회사의 한 명의 사용자만 사용해야 합니다.
중요

이 접근 방식이 선호되는 드물지만 이 절차를 구현하십시오.

시스템을 AD 또는 Red Hat IdM(Identity Management)에 완전히 참여시키는 것이 좋습니다. RHEL 호스트를 도메인에 연결하면 설정을 쉽게 관리할 수 있습니다. 클라이언트를 AD에 직접 연결하는 것과 관련된 클라이언트 액세스 라이센스에 관심이 있는 경우 AD와의 신뢰 계약에 있는 IdM 서버를 활용하는 것이 좋습니다. IdM-AD 신뢰에 대한 자세한 내용은 IdM과 AD 간의 교차 포리스트 신뢰 계획 및 IdM과 AD 간의 신뢰 설치를 참조하십시오.

이 절차를 통해 AD_user 라는 사용자가 example.com 도메인의 AD(Active Directory) 사용자 데이터베이스에 설정된 암호를 사용하여 rhel_host 시스템에 로그인할 수 있습니다. 이 예제에서 EXAMPLE.COM Kerberos 영역은 example.com 도메인에 해당합니다.

사전 요구 사항

  • rhel_host 에 대한 루트 액세스 권한이 있습니다.
  • AD_user 사용자 계정은 example.com 도메인에 있습니다.
  • Kerberos 영역은 EXAMPLE.COM 입니다.
  • rhel_hostrealm join 명령을 사용하여 AD에 가입되지 않았습니다.

절차

  1. 암호를 할당하지 않고 AD_user 사용자 계정을 로컬로 생성합니다.

    # useradd AD_user
  2. 편집을 위해 /etc/nsswitch.conf 파일을 열고 다음 행을 포함하는지 확인합니다.

    passwd:     sss files systemd
    group:      sss files systemd
    shadow:     files sss
  3. 편집을 위해 /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 = EXAMPLE.COM
        default_ccache_name = KEYRING:persistent:%{uid}
    
    [realms]
     EXAMPLE.COM = {
         kdc = ad.example.com
         admin_server = ad.example.com
     }
    
    [domain_realm]
     .example.com = EXAMPLE.COM
     example.com = EXAMPLE.COM
  4. /etc/sssd/sssd.conf 파일을 생성하고 여기에 다음 섹션과 행을 삽입합니다.

    [sssd]
        services = nss, pam
        domains = EXAMPLE.COM
    
    [domain/EXAMPLE.COM]
        id_provider = files
        auth_provider = krb5
        krb5_realm = EXAMPLE.COM
        krb5_server = ad.example.com
  5. /etc/sssd/sssd.conf 파일에 대한 권한을 변경합니다.

    # chmod 600 /etc/sssd/sssd.conf
  6. SSSD(보안 시스템 서비스 데몬)를 시작합니다.

    # systemctl start sssd
  7. SSSD를 활성화합니다.

    # systemctl enable sssd
  8. /etc/pam.d/system-auth 파일을 열고 다음 섹션과 행을 포함하도록 수정합니다.

    # Generated by authselect on Wed May  8 08:55:04 2019
    # Do not modify this file manually.
    
    auth        required                                     pam_env.so
    auth        required                                     pam_faildelay.so delay=2000000
    auth        [default=1 ignore=ignore success=ok]         pam_succeed_if.so uid >= 1000 quiet
    auth        [default=1 ignore=ignore success=ok]         pam_localuser.so
    auth        sufficient                                   pam_unix.so nullok try_first_pass
    auth        requisite                                    pam_succeed_if.so uid >= 1000 quiet_success
    auth        sufficient                                   pam_sss.so forward_pass
    auth        required                                     pam_deny.so
    
    account     required                                     pam_unix.so
    account     sufficient                                   pam_localuser.so
    account     sufficient                                   pam_succeed_if.so uid < 1000 quiet
    account     [default=bad success=ok user_unknown=ignore] pam_sss.so
    account     required                                     pam_permit.so
    
    password    requisite                                    pam_pwquality.so try_first_pass local_users_only
    password    sufficient                                   pam_unix.so sha512 shadow nullok try_first_pass use_authtok
    password    sufficient                                   pam_sss.so use_authtok
    password    required                                     pam_deny.so
    
    session     optional                                     pam_keyinit.so revoke
    session     required                                     pam_limits.so
    -session    optional                                     pam_systemd.so
    session     [success=1 default=ignore]                   pam_succeed_if.so service in crond quiet use_uid
    session     required                                     pam_unix.so
    session     optional                                     pam_sss.so
  9. /etc/pam.d/system-auth 파일의 콘텐츠를 /etc/pam.d/password-auth 파일에 복사합니다. yes 를 입력하여 파일의 현재 내용을 덮어쓰는 것을 확인합니다.

    # cp /etc/pam.d/system-auth /etc/pam.d/password-auth
    cp: overwrite '/etc/pam.d/password-auth'? yes

검증 단계

  1. AD_user 의 Kerberos TGT(Tross-granting 티켓) 요청. 요청한 대로 AD_user 의 암호를 입력합니다.

    # kinit AD_user
    Password for AD_user@EXAMPLE.COM:
  2. 가져온 TGT를 표시합니다.

    # klist
    Ticket cache: KEYRING:persistent:0:0
    Default principal: AD_user@EXAMPLE.COM
    
    Valid starting     Expires            Service principal
    11/02/20 04:16:38  11/02/20 14:16:38  krbtgt/EXAMPLE.COM@EXAMPLE.COM
    	renew until 18/02/20 04:16:34

AD_userEXAMPLE.COM Kerberos 도메인의 자격 증명을 사용하여 rhel_host 에 성공적으로 로그인했습니다.