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
-
-
SSH 클라이언트를 사용하여 인스턴스에 연결합니다.
-
AWS Directory Service가 제공하는 DNS 서버의 DNS 서버 IP 주소를 사용하도록 Linux 인스턴스를 구성합니다. VPC에 연결된 DHCP 옵션 세트에서 이를 설정하거나 인스턴스에서 이를 수동으로 설정하는 방법으로 이러한 구성이 가능합니다. 수동 설정을 원할 경우에는 AWS Knowledge Center의 프라이빗 Amazon EC2 인스턴스에 정적 DNS 서버를 할당하는 방법에서 특정 Linux 배포판 및 버전에서 지속적인 DNS 서버를 설정하는 방법에 대한 지침을 참조하세요.
-
Linux 인스턴스가 최신 버전인지 확인합니다.
sudo yum -y update
-
Linux 인스턴스에 필요한 Samba/Winbind 패키지를 설치합니다.
sudo yum -y install authconfig samba samba-client samba-winbind samba-winbind-clients
-
오류가 발생할 경우 되돌릴 수 있도록 기본 smb.conf
파일을 백업해 두세요.
sudo cp /etc/samba/smb.conf /etc/samba/smb.bk
-
텍스트 편집기에서 저장된 원본 파일[/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
-
텍스트 편집기에서 호스트 파일[/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 레코드를 등록할 수 없었음을 의미합니다.
-
net 유틸리티를 사용하여 Linux 인스턴스를 Active Directory에 조인합니다.
sudo net ads join -U join_account@example.com
Enter join_account@example.com
's password:
Using short domain name -- example
Joined 'IP-10-x-x-x
' to dns domain 'example.com
'
-
PAM 구성 파일을 수정하고, 아래 명령을 사용하여 winbind 인증에 필요한 항목을 추가합니다.
sudo authconfig --enablewinbind --enablewinbindauth --enablemkhomedir --update
-
/etc/ssh/sshd_config
파일을 편집하여 암호 인증을 허용하도록 SSH 서비스를 설정합니다.
-
텍스트 편집기에서 /etc/ssh/sshd_config
파일을 엽니다.
sudo vi /etc/ssh/sshd_config
-
PasswordAuthentication
설정값을 yes
로 설정합니다.
PasswordAuthentication yes
-
SSH 서비스를 다시 시작합니다.
sudo systemctl restart sshd.service
대안:
sudo service sshd restart
-
인스턴스가 재시작되고 나면 SSH 클라이언트에 이를 연결하고 다음 단계를 수행하여 sudoers 목록에 도메인 사용자 또는 그룹에 대한 루트 권한을 추가합니다.
-
다음 명령을 통해 sudoers
파일을 엽니다.
sudo visudo
-
신뢰하는(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
-
-
SSH 클라이언트를 사용하여 인스턴스에 연결합니다.
-
AWS Directory Service가 제공하는 DNS 서버의 DNS 서버 IP 주소를 사용하도록 Linux 인스턴스를 구성합니다. VPC에 연결된 DHCP 옵션 세트에서 이를 설정하거나 인스턴스에서 이를 수동으로 설정하는 방법으로 이러한 구성이 가능합니다. 수동 설정을 원할 경우에는 AWS Knowledge Center의 프라이빗 Amazon EC2 인스턴스에 정적 DNS 서버를 할당하는 방법에서 특정 Linux 배포판 및 버전에서 지속적인 DNS 서버를 설정하는 방법에 대한 지침을 참조하세요.
-
SUSE Linux 15 인스턴스가 최신 버전인지 확인합니다.
-
패키지 리포지토리를 연결합니다.
sudo SUSEConnect -p PackageHub/15.1/x86_64
-
SUSE를 업데이트합니다.
sudo zypper update -y
-
Linux 인스턴스에 필요한 Samba/Winbind 패키지를 설치합니다.
sudo zypper in -y samba samba-winbind
-
오류가 발생할 경우 되돌릴 수 있도록 기본 smb.conf
파일을 백업해 두세요.
sudo cp /etc/samba/smb.conf /etc/samba/smb.bk
-
텍스트 편집기에서 저장된 원본 파일[/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
-
텍스트 편집기에서 호스트 파일[/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 레코드를 등록할 수 없었음을 의미합니다.
-
다음 명령을 통해 디렉터리에 Linux 인스턴스를 조인합니다.
sudo net ads join -U join_account@example.com
Enter join_account@example.com
's password:
Using short domain name -- example
Joined 'IP-10-x-x-x
' to dns domain 'example.com
'
-
PAM 구성 파일을 수정하고, 아래 명령을 사용하여 Winbind 인증에 필요한 항목을 추가합니다.
sudo pam-config --add --winbind --mkhomedir
-
텍스트 편집기에서 Name Service Switch 구성 파일[/etc/nsswitch.conf
]을 엽니다.
vim /etc/nsswitch.conf
아래에 나와 있는 것과 같이 Winbind 지시문을 추가합니다.
passwd: files winbind
shadow: files winbind
group: files winbind
-
/etc/ssh/sshd_config
파일을 편집하여 암호 인증을 허용하도록 SSH 서비스를 설정합니다.
-
텍스트 편집기에서 /etc/ssh/sshd_config
파일을 엽니다.
sudo vim /etc/ssh/sshd_config
-
PasswordAuthentication
설정값을 yes
로 설정합니다.
PasswordAuthentication yes
-
SSH 서비스를 다시 시작합니다.
sudo systemctl restart sshd.service
대안:
sudo service sshd restart
-
인스턴스가 재시작되고 나면 SSH 클라이언트에 이를 연결하고 다음 단계를 수행하여 sudoers 목록에 도메인 사용자 또는 그룹에 대한 루트 권한을 추가합니다.
-
다음 명령을 통해 sudoers
파일을 엽니다.
sudo visudo
-
신뢰하는(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
-
-
SSH 클라이언트를 사용하여 인스턴스에 연결합니다.
-
AWS Directory Service가 제공하는 DNS 서버의 DNS 서버 IP 주소를 사용하도록 Linux 인스턴스를 구성합니다. VPC에 연결된 DHCP 옵션 세트에서 이를 설정하거나 인스턴스에서 이를 수동으로 설정하는 방법으로 이러한 구성이 가능합니다. 수동 설정을 원할 경우에는 AWS Knowledge Center의 프라이빗 Amazon EC2 인스턴스에 정적 DNS 서버를 할당하는 방법에서 특정 Linux 배포판 및 버전에서 지속적인 DNS 서버를 설정하는 방법에 대한 지침을 참조하세요.
-
Linux 인스턴스가 최신 버전인지 확인합니다.
sudo apt-get -y upgrade
-
Linux 인스턴스에 필요한 Samba/Winbind 패키지를 설치합니다.
sudo apt -y install samba winbind libnss-winbind libpam-winbind
-
오류가 발생할 경우 되돌릴 수 있도록 기본 smb.conf
파일을 백업해 두세요.
sudo cp /etc/samba/smb.conf /etc/samba/smb.bk
-
텍스트 편집기에서 저장된 원본 파일[/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
-
텍스트 편집기에서 호스트 파일[/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 레코드를 등록할 수 없었음을 의미합니다.
-
net 유틸리티를 사용하여 Linux 인스턴스를 Active Directory에 조인합니다.
sudo net ads join -U join_account@example.com
Enter join_account@example.com
's password:
Using short domain name -- example
Joined 'IP-10-x-x-x
' to dns domain 'example.com
'
-
PAM 구성 파일을 수정하고, 아래 명령을 사용하여 Winbind 인증에 필요한 항목을 추가합니다.
sudo pam-auth-update --add --winbind --enable mkhomedir
-
텍스트 편집기에서 Name Service Switch 구성 파일[/etc/nsswitch.conf
]을 엽니다.
vim /etc/nsswitch.conf
아래에 나와 있는 것과 같이 Winbind 지시문을 추가합니다.
passwd: compat winbind
group: compat winbind
shadow: compat winbind
-
/etc/ssh/sshd_config
파일을 편집하여 암호 인증을 허용하도록 SSH 서비스를 설정합니다.
-
텍스트 편집기에서 /etc/ssh/sshd_config
파일을 엽니다.
sudo vim /etc/ssh/sshd_config
-
PasswordAuthentication
설정값을 yes
로 설정합니다.
PasswordAuthentication yes
-
SSH 서비스를 다시 시작합니다.
sudo systemctl restart sshd.service
대안:
sudo service sshd restart
-
인스턴스가 재시작되고 나면 SSH 클라이언트에 이를 연결하고 다음 단계를 수행하여 sudoers 목록에 도메인 사용자 또는 그룹에 대한 루트 권한을 추가합니다.
-
다음 명령을 통해 sudoers
파일을 엽니다.
sudo visudo
-
신뢰하는(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%