Winbind를 사용하여 AWS 관리형 Microsoft AD Active Directory에 Amazon EC2 인스턴스를 수동으로 조인 - AWS Directory Service

Winbind를 사용하여 AWS 관리형 Microsoft AD Active Directory에 Amazon EC2 인스턴스를 수동으로 조인

Winbind 서비스를 사용하여 Amazon EC2 Linux 인스턴스를 AWS 관리형 Microsoft AD Active Directory 도메인에 수동으로 조인할 수 있습니다. 이렇게 하면 기존 온프레미스 Active Directory 사용자가 AWS 관리형 Microsoft AD Active Directory에 조인된 Linux 인스턴스에 액세스할 때 Active Directory 보안 인증을 사용할 수 있습니다. 다음과 같은 Linux 인스턴스 배포판과 버전이 지원됩니다.

  • Amazon Linux AMI 2018.03.0

  • Amazon Linux 2(64비트 x86)

  • Amazon Linux 2023 AMI

  • Red Hat Enterprise Linux 8(HVM)(64비트 x86)

  • Ubuntu Server 18.04 LTS 및 Ubuntu Server 16.04 LTS

  • CentOS 7 x86-64

  • SUSE Linux Enterprise Server 15 SP1

참고

기타 Linux 배포판 및 버전은 작동이 가능할 수도 있지만, 테스트는 거치지 않았습니다.

AWS 관리형 Microsoft AD Active Directory에 Linux 인스턴스를 조인

중요

아래의 일부 절차들로 인해(올바르게 수행되지 않은 경우) 인스턴스 접속이나 사용이 불가능해질 수 있습니다. 따라서 이러한 절차를 수행하기 전에 인스턴스에 대한 백업을 생성하거나 스냅샷을 만드는 것이 좋습니다.

디렉터리에 Linux 인스턴스 조인

다음 탭 중 하나를 이용해 특정 Linux 인스턴스의 단계를 수행합니다.

Amazon Linux/CENTOS/REDHAT
  1. SSH 클라이언트를 사용하여 인스턴스에 연결합니다.

  2. AWS Directory Service가 제공하는 DNS 서버의 DNS 서버 IP 주소를 사용하도록 Linux 인스턴스를 구성합니다. VPC에 연결된 DHCP 옵션 세트에서 이를 설정하거나 인스턴스에서 이를 수동으로 설정하는 방법으로 이러한 구성이 가능합니다. 수동 설정을 원할 경우에는 AWS Knowledge Center의 프라이빗 Amazon EC2 인스턴스에 정적 DNS 서버를 할당하는 방법에서 특정 Linux 배포판 및 버전에서 지속적인 DNS 서버를 설정하는 방법에 대한 지침을 참조하세요.

  3. Linux 인스턴스가 최신 버전인지 확인합니다.

    sudo yum -y update
  4. Linux 인스턴스에 필요한 Samba/Winbind 패키지를 설치합니다.

    sudo yum -y install authconfig samba samba-client samba-winbind samba-winbind-clients
  5. 오류가 발생할 경우 되돌릴 수 있도록 기본 smb.conf 파일을 백업해 두세요.

    sudo cp /etc/samba/smb.conf /etc/samba/smb.bk
  6. 텍스트 편집기에서 저장된 원본 파일[/etc/samba/smb.conf]을 엽니다.

    sudo vim /etc/samba/smb.conf

    아래 예와 같이 Active Directory 도메인 환경 정보를 입력합니다.

    [global] workgroup = example security = ads realm = example.com idmap config * : rangesize = 1000000 idmap config * : range = 1000000-19999999 idmap config * : backend = autorid winbind enum users = no winbind enum groups = no template homedir = /home/%U@%D template shell = /bin/bash winbind use default domain = false
  7. 텍스트 편집기에서 호스트 파일[/etc/hosts]을 엽니다.

    sudo vim /etc/hosts

    다음과 같이 Linux 인스턴스 프라이빗 IP 주소를 추가합니다.

    10.x.x.x Linux_hostname.example.com Linux_hostname
    참고

    /etc/hosts 파일에 IP 주소를 지정하지 않은 경우 인스턴스를 도메인에 조인하는 동안 다음 DNS 오류가 발생할 수 있습니다.

    No DNS domain configured for linux-instance. Unable to perform DNS Update. DNS update failed: NT_STATUS_INVALID_PARAMETER

    이 오류는 조인에 성공했지만 [net ads] 명령으로 DNS에 DNS 레코드를 등록할 수 없었음을 의미합니다.

  8. net 유틸리티를 사용하여 Linux 인스턴스를 Active Directory에 조인합니다.

    sudo net ads join -U join_account@example.com
    join_account@example.com

    도메인 조인 권한을 가진 example.com 도메인의 계정입니다. 메시지가 나타나면 계정에 대한 암호를 입력합니다. 이러한 권한의 위임에 대한 자세한 정보는 AWS Managed Microsoft AD에 대한 디렉터리 조인 권한 위임을 참조하세요.

    example.com

    디렉터리의 정규화된 DNS 이름.

    Enter join_account@example.com's password: Using short domain name -- example Joined 'IP-10-x-x-x' to dns domain 'example.com'
  9. PAM 구성 파일을 수정하고, 아래 명령을 사용하여 winbind 인증에 필요한 항목을 추가합니다.

    sudo authconfig --enablewinbind --enablewinbindauth --enablemkhomedir --update
  10. /etc/ssh/sshd_config 파일을 편집하여 암호 인증을 허용하도록 SSH 서비스를 설정합니다.

    1. 텍스트 편집기에서 /etc/ssh/sshd_config 파일을 엽니다.

      sudo vi /etc/ssh/sshd_config
    2. PasswordAuthentication 설정값을 yes로 설정합니다.

      PasswordAuthentication yes
    3. SSH 서비스를 다시 시작합니다.

      sudo systemctl restart sshd.service

      대안:

      sudo service sshd restart
  11. 인스턴스가 재시작되고 나면 SSH 클라이언트에 이를 연결하고 다음 단계를 수행하여 sudoers 목록에 도메인 사용자 또는 그룹에 대한 루트 권한을 추가합니다.

    1. 다음 명령을 통해 sudoers 파일을 엽니다.

      sudo visudo
    2. 신뢰하는(Trusting) 또는 신뢰할 수 있는(Trusted) 도메인에서 필요한 그룹 또는 사용자를 다음과 같이 추가한 다음 저장합니다.

      ## Adding Domain Users/Groups. %domainname\\AWS\ Delegated\ Administrators ALL=(ALL:ALL) ALL %domainname\\groupname ALL=(ALL:ALL) ALL domainname\\username ALL=(ALL:ALL) ALL %Trusted_DomainName\\groupname ALL=(ALL:ALL) ALL Trusted_DomainName\\username ALL=(ALL:ALL) ALL

      위 예제에서는 Linux 공백 문자를 생성하기 위해 "\<space>"를 사용합니다.

SUSE
  1. SSH 클라이언트를 사용하여 인스턴스에 연결합니다.

  2. AWS Directory Service가 제공하는 DNS 서버의 DNS 서버 IP 주소를 사용하도록 Linux 인스턴스를 구성합니다. VPC에 연결된 DHCP 옵션 세트에서 이를 설정하거나 인스턴스에서 이를 수동으로 설정하는 방법으로 이러한 구성이 가능합니다. 수동 설정을 원할 경우에는 AWS Knowledge Center의 프라이빗 Amazon EC2 인스턴스에 정적 DNS 서버를 할당하는 방법에서 특정 Linux 배포판 및 버전에서 지속적인 DNS 서버를 설정하는 방법에 대한 지침을 참조하세요.

  3. SUSE Linux 15 인스턴스가 최신 버전인지 확인합니다.

    1. 패키지 리포지토리를 연결합니다.

      sudo SUSEConnect -p PackageHub/15.1/x86_64
    2. SUSE를 업데이트합니다.

      sudo zypper update -y
  4. Linux 인스턴스에 필요한 Samba/Winbind 패키지를 설치합니다.

    sudo zypper in -y samba samba-winbind
  5. 오류가 발생할 경우 되돌릴 수 있도록 기본 smb.conf 파일을 백업해 두세요.

    sudo cp /etc/samba/smb.conf /etc/samba/smb.bk
  6. 텍스트 편집기에서 저장된 원본 파일[/etc/samba/smb.conf]을 엽니다.

    sudo vim /etc/samba/smb.conf

    아래 예와 같이 Active Directory 도메인 환경 정보를 입력합니다.

    [global] workgroup = example security = ads realm = example.com idmap config * : rangesize = 1000000 idmap config * : range = 1000000-19999999 idmap config * : backend = autorid winbind enum users = no winbind enum groups = no template homedir = /home/%U@%D template shell = /bin/bash winbind use default domain = false
  7. 텍스트 편집기에서 호스트 파일[/etc/hosts]을 엽니다.

    sudo vim /etc/hosts

    다음과 같이 Linux 인스턴스 프라이빗 IP 주소를 추가합니다.

    10.x.x.x Linux_hostname.example.com Linux_hostname
    참고

    /etc/hosts 파일에 IP 주소를 지정하지 않은 경우 인스턴스를 도메인에 조인하는 동안 다음 DNS 오류가 발생할 수 있습니다.

    No DNS domain configured for linux-instance. Unable to perform DNS Update. DNS update failed: NT_STATUS_INVALID_PARAMETER

    이 오류는 조인에 성공했지만 [net ads] 명령으로 DNS에 DNS 레코드를 등록할 수 없었음을 의미합니다.

  8. 다음 명령을 통해 디렉터리에 Linux 인스턴스를 조인합니다.

    sudo net ads join -U join_account@example.com
    join_account

    도메인 조인 권한을 가진 example.com 도메인의 sAMAccountName입니다. 메시지가 나타나면 계정에 대한 암호를 입력합니다. 이러한 권한의 위임에 대한 자세한 정보는 AWS Managed Microsoft AD에 대한 디렉터리 조인 권한 위임을 참조하세요.

    example.com

    디렉터리의 정규화된 DNS 이름입니다.

    Enter join_account@example.com's password: Using short domain name -- example Joined 'IP-10-x-x-x' to dns domain 'example.com'
  9. PAM 구성 파일을 수정하고, 아래 명령을 사용하여 Winbind 인증에 필요한 항목을 추가합니다.

    sudo pam-config --add --winbind --mkhomedir
  10. 텍스트 편집기에서 Name Service Switch 구성 파일[/etc/nsswitch.conf]을 엽니다.

    vim /etc/nsswitch.conf

    아래에 나와 있는 것과 같이 Winbind 지시문을 추가합니다.

    passwd: files winbind shadow: files winbind group: files winbind
  11. /etc/ssh/sshd_config 파일을 편집하여 암호 인증을 허용하도록 SSH 서비스를 설정합니다.

    1. 텍스트 편집기에서 /etc/ssh/sshd_config 파일을 엽니다.

      sudo vim /etc/ssh/sshd_config
    2. PasswordAuthentication 설정값을 yes로 설정합니다.

      PasswordAuthentication yes
    3. SSH 서비스를 다시 시작합니다.

      sudo systemctl restart sshd.service

      대안:

      sudo service sshd restart
  12. 인스턴스가 재시작되고 나면 SSH 클라이언트에 이를 연결하고 다음 단계를 수행하여 sudoers 목록에 도메인 사용자 또는 그룹에 대한 루트 권한을 추가합니다.

    1. 다음 명령을 통해 sudoers 파일을 엽니다.

      sudo visudo
    2. 신뢰하는(Trusting) 또는 신뢰할 수 있는(Trusted) 도메인에서 필요한 그룹 또는 사용자를 다음과 같이 추가한 다음 저장합니다.

      ## Adding Domain Users/Groups. %domainname\\AWS\ Delegated\ Administrators ALL=(ALL:ALL) ALL %domainname\\groupname ALL=(ALL:ALL) ALL domainname\\username ALL=(ALL:ALL) ALL %Trusted_DomainName\\groupname ALL=(ALL:ALL) ALL Trusted_DomainName\\username ALL=(ALL:ALL) ALL

      위 예제에서는 Linux 공백 문자를 생성하기 위해 "\<space>"를 사용합니다.

Ubuntu
  1. SSH 클라이언트를 사용하여 인스턴스에 연결합니다.

  2. AWS Directory Service가 제공하는 DNS 서버의 DNS 서버 IP 주소를 사용하도록 Linux 인스턴스를 구성합니다. VPC에 연결된 DHCP 옵션 세트에서 이를 설정하거나 인스턴스에서 이를 수동으로 설정하는 방법으로 이러한 구성이 가능합니다. 수동 설정을 원할 경우에는 AWS Knowledge Center의 프라이빗 Amazon EC2 인스턴스에 정적 DNS 서버를 할당하는 방법에서 특정 Linux 배포판 및 버전에서 지속적인 DNS 서버를 설정하는 방법에 대한 지침을 참조하세요.

  3. Linux 인스턴스가 최신 버전인지 확인합니다.

    sudo apt-get -y upgrade
  4. Linux 인스턴스에 필요한 Samba/Winbind 패키지를 설치합니다.

    sudo apt -y install samba winbind libnss-winbind libpam-winbind
  5. 오류가 발생할 경우 되돌릴 수 있도록 기본 smb.conf 파일을 백업해 두세요.

    sudo cp /etc/samba/smb.conf /etc/samba/smb.bk
  6. 텍스트 편집기에서 저장된 원본 파일[/etc/samba/smb.conf]을 엽니다.

    sudo vim /etc/samba/smb.conf

    아래 예와 같이 Active Directory 도메인 환경 정보를 입력합니다.

    [global] workgroup = example security = ads realm = example.com idmap config * : rangesize = 1000000 idmap config * : range = 1000000-19999999 idmap config * : backend = autorid winbind enum users = no winbind enum groups = no template homedir = /home/%U@%D template shell = /bin/bash winbind use default domain = false
  7. 텍스트 편집기에서 호스트 파일[/etc/hosts]을 엽니다.

    sudo vim /etc/hosts

    다음과 같이 Linux 인스턴스 프라이빗 IP 주소를 추가합니다.

    10.x.x.x Linux_hostname.example.com Linux_hostname
    참고

    /etc/hosts 파일에 IP 주소를 지정하지 않은 경우 인스턴스를 도메인에 조인하는 동안 다음 DNS 오류가 발생할 수 있습니다.

    No DNS domain configured for linux-instance. Unable to perform DNS Update. DNS update failed: NT_STATUS_INVALID_PARAMETER

    이 오류는 조인에 성공했지만 [net ads] 명령으로 DNS에 DNS 레코드를 등록할 수 없었음을 의미합니다.

  8. net 유틸리티를 사용하여 Linux 인스턴스를 Active Directory에 조인합니다.

    sudo net ads join -U join_account@example.com
    join_account@example.com

    도메인 조인 권한을 가진 example.com 도메인의 계정입니다. 메시지가 나타나면 계정에 대한 암호를 입력합니다. 이러한 권한의 위임에 대한 자세한 정보는 AWS Managed Microsoft AD에 대한 디렉터리 조인 권한 위임을 참조하세요.

    example.com

    디렉터리의 정규화된 DNS 이름.

    Enter join_account@example.com's password: Using short domain name -- example Joined 'IP-10-x-x-x' to dns domain 'example.com'
  9. PAM 구성 파일을 수정하고, 아래 명령을 사용하여 Winbind 인증에 필요한 항목을 추가합니다.

    sudo pam-auth-update --add --winbind --enable mkhomedir
  10. 텍스트 편집기에서 Name Service Switch 구성 파일[/etc/nsswitch.conf]을 엽니다.

    vim /etc/nsswitch.conf

    아래에 나와 있는 것과 같이 Winbind 지시문을 추가합니다.

    passwd: compat winbind group: compat winbind shadow: compat winbind
  11. /etc/ssh/sshd_config 파일을 편집하여 암호 인증을 허용하도록 SSH 서비스를 설정합니다.

    1. 텍스트 편집기에서 /etc/ssh/sshd_config 파일을 엽니다.

      sudo vim /etc/ssh/sshd_config
    2. PasswordAuthentication 설정값을 yes로 설정합니다.

      PasswordAuthentication yes
    3. SSH 서비스를 다시 시작합니다.

      sudo systemctl restart sshd.service

      대안:

      sudo service sshd restart
  12. 인스턴스가 재시작되고 나면 SSH 클라이언트에 이를 연결하고 다음 단계를 수행하여 sudoers 목록에 도메인 사용자 또는 그룹에 대한 루트 권한을 추가합니다.

    1. 다음 명령을 통해 sudoers 파일을 엽니다.

      sudo visudo
    2. 신뢰하는(Trusting) 또는 신뢰할 수 있는(Trusted) 도메인에서 필요한 그룹 또는 사용자를 다음과 같이 추가한 다음 저장합니다.

      ## Adding Domain Users/Groups. %domainname\\AWS\ Delegated\ Administrators ALL=(ALL:ALL) ALL %domainname\\groupname ALL=(ALL:ALL) ALL domainname\\username ALL=(ALL:ALL) ALL %Trusted_DomainName\\groupname ALL=(ALL:ALL) ALL Trusted_DomainName\\username ALL=(ALL:ALL) ALL

      위 예제에서는 Linux 공백 문자를 생성하기 위해 "\<space>"를 사용합니다.

Linux 인스턴스에 연결

SSH 클라이언트를 사용하여 인스턴스 연결을 하면 사용자 이름을 입력하라는 메시지가 나타납니다. 사용자는 username@example.com 또는 EXAMPLE\username 형식으로 사용자 이름을 입력할 수 있습니다. 응답은 사용 중인 Linux 배포판에 따라 다음과 같이 나타납니다.

Amazon Linux, Red Hat Enterprise Linux, CentOS Linux

login as: johndoe@example.com johndoe@example.com's password: Last login: Thu Jun 25 16:26:28 2015 from XX.XX.XX.XX

SUSE Linux

SUSE Linux Enterprise Server 15 SP1 x86_64 (64-bit) As "root" (sudo or sudo -i) use the: - zypper command for package management - yast command for configuration management Management and Config: https://www.suse.com/suse-in-the-cloud-basics Documentation: https://www.suse.com/documentation/sles-15/ Forum: https://forums.suse.com/forumdisplay.php?93-SUSE-Public-Cloud Have a lot of fun...

Ubuntu Linux

login as: admin@example.com admin@example.com@10.24.34.0's password: Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-1057-aws x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Sat Apr 18 22:03:35 UTC 2020 System load: 0.01 Processes: 102 Usage of /: 18.6% of 7.69GB Users logged in: 2 Memory usage: 16% IP address for eth0: 10.24.34.1 Swap usage: 0%