使用 Winbind 手動將 Amazon EC2 Linux 執行個體加入您的 AWS Managed Microsoft AD Active Directory - AWS Directory Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Winbind 手動將 Amazon EC2 Linux 執行個體加入您的 AWS Managed Microsoft AD Active Directory

您可以使用 Winbind 服務,將 Amazon EC2 Linux 執行個體手動加入 AWS Managed Microsoft AD Active Directory 網域。這可讓您現有的內部部署 Active Directory 使用者在存取加入 AWS Managed 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 分佈和版本也許能正常運作,但尚未經過測試。

將 Linux 執行個體加入 AWS Managed Microsoft AD Active Directory

重要

以下某些程序若未正確執行,可能會導致您的執行個體無法連線或無法使用。因此,我們強烈建議您在執行這些程序之前,對您的執行個體進行備份或擷取快照。

將 Linux 執行個體加入您的目錄

使用以下其中一個標籤,依照您的特定 Linux 執行個體的步驟:

Amazon Linux/CENTOS/REDHAT
  1. 使用任何SSH用戶端連線至執行個體。

  2. 設定 Linux 執行個體以使用 AWS Directory Service提供的DNS伺服器的DNS伺服器 IP 地址。您可以在連接到 DHCP的選項集中設定,或在執行個體上手動設定,VPC藉此進行此操作。如果您想要手動設定,請參閱知識庫中心中的如何將靜態DNS伺服器指派給私有 Amazon EC2執行個體,以取得如何設定特定 Linux 發行版本和版本的持久性DNS伺服器的指引。 AWS

  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. 將 SSH服務設定為允許透過編輯/etc/ssh/sshd_config檔案進行密碼身分驗證。

    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. 從信任或受信任域中新增所需群組或使用者,如下所示,然後儲存。

      ## 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

      (上述範例使用 "\<space>" 來建立 Linux 空白字元。)

SUSE
  1. 使用任何SSH用戶端連線至執行個體。

  2. 設定 Linux 執行個體以使用 AWS Directory Service提供的DNS伺服器的DNS伺服器 IP 地址。您可以在連接到 DHCP的選項集中設定,或在執行個體上手動設定,VPC藉此進行此操作。如果您想要手動設定,請參閱 知識中心中的如何將靜態DNS伺服器指派給私有 Amazon EC2執行個體,以取得如何為特定 Linux 發行版本設定持久性DNS伺服器的指引。 AWS

  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

    中的sAMAccount名稱 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-config --add --winbind --mkhomedir
  10. 在文字編輯器中開啟名稱服務交換器組態檔案 [/etc/nsswitch.conf]。

    vim /etc/nsswitch.conf

    新增 Winbind 指令,如下所示。

    passwd: files winbind shadow: files winbind group: files winbind
  11. 將 SSH服務設定為允許透過編輯/etc/ssh/sshd_config檔案進行密碼身分驗證。

    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. 從信任或受信任域中新增所需群組或使用者,如下所示,然後儲存。

      ## 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

      (上述範例使用 "\<space>" 來建立 Linux 空白字元。)

Ubuntu
  1. 使用任何SSH用戶端連線至執行個體。

  2. 設定 Linux 執行個體以使用 AWS Directory Service提供的DNS伺服器的DNS伺服器 IP 地址。您可以在連接到 DHCP的選項集中設定,或在執行個體上手動設定,VPC藉此進行此操作。如果您想要手動設定,請參閱 知識中心中的如何將靜態DNS伺服器指派給私有 Amazon EC2執行個體,以取得設定特定 Linux 發行版本和版本的持久性DNS伺服器的指引。 AWS

  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. 在文字編輯器中開啟名稱服務交換器組態檔案 [/etc/nsswitch.conf]。

    vim /etc/nsswitch.conf

    新增 Winbind 指令,如下所示。

    passwd: compat winbind group: compat winbind shadow: compat winbind
  11. 將 SSH服務設定為允許透過編輯/etc/ssh/sshd_config檔案進行密碼身分驗證。

    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. 從信任或受信任域中新增所需群組或使用者,如下所示,然後儲存。

      ## 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

      (上述範例使用 "\<space>" 來建立 Linux 空白字元。)

連線至 Linux 執行個體

當使用者使用SSH用戶端連線至執行個體時,系統會提示他們輸入使用者名稱。如果使用者想輸入使用者名稱,可以善用 username@example.comEXAMPLE\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%