手動將 Amazon EC2 Linux 執行個體加入您的 AWS 受管 Microsoft AD 活動目錄 - AWS Directory Service

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

手動將 Amazon EC2 Linux 執行個體加入您的 AWS 受管 Microsoft AD 活動目錄

除了 Amazon EC2 Windows 執行個體之外,您還可以將某些 Amazon EC2 Linux 執行個體加入您的 AWS 受管 Microsoft AD 活動目錄。系統支援下列 Linux 執行個體分佈和版本:

  • Amazon Linux AMI 2018.03.0

  • Amazon Linux 2 (64 位元 x86)

  • Amazon

  • 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 管理 Microsoft AD

在將 Amazon Linux、CentOS、Red Hat 或 Ubuntu 執行個體加入目錄之前,必須先依照 無縫加入您的 Linux 執行個體 中的指定啟動執行個體。

重要

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

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

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

Amazon Linux
  1. 使用任何 SSH 用戶端連線到執行個體。

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

  3. 請確定您的 Amazon Linux - 64 位元執行個體處於最新狀態。

    sudo yum -y update
  4. 在您的 Linux 執行個體上安裝所需的 Amazon Linux 套件。

    注意

    系統可能已安裝其中一些套裝服務。

    在安裝套件時,可能會出現好幾個跳出式設定畫面。您通常可以將這些畫面中的欄位留白。

    Amazon Linux
    sudo yum install samba-common-tools realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
    注意

    如需協助確定您所使用的 Amazon Linux 版本,請參閱 《Amazon EC2 Linux 執行個體使用者指南》中的識別 Amazon Linux 映像

  5. 使用下列命令將執行個體加入目錄。

    sudo realm join -U join_account@EXAMPLE.COM example.com --verbose
    join_account@EXAMPLE.COM

    example.com 域中具備域加入權限的帳戶。請在系統提示時,輸入該帳戶的密碼。如需委派這些權限的詳細資訊,請參閱「委派 AWS 受管 Microsoft AD 目錄加入權限」。

    example.com

    目錄的完整 DNS 名稱。

    ... * Successfully enrolled machine in realm
  6. 設定 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
  7. 重新啟動執行個體之後,請透過任何安全殼層用戶端連線至該執行個體,然後執行下列步驟將 AWS 委派管理員群組新增至 sudoers 清單:

    1. 使用下列命令開啟 sudoers 檔案:

      sudo visudo
    2. sudoers 檔案的底部加入下列程式碼,然後儲存檔案。

      ## Add the "AWS Delegated Administrators" group from the example.com domain. %AWS\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL

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

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

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

  3. 請確定您的 CentOS 7 執行個體處於最新狀態。

    sudo yum -y update
  4. 在您的 CentOS 7 執行個體上安裝必要的套裝服務。

    注意

    系統可能已安裝其中一些套裝服務。

    在安裝套件時,可能會出現好幾個跳出式設定畫面。您通常可以將這些畫面中的欄位留白。

    sudo yum -y install sssd realmd krb5-workstation samba-common-tools
  5. 使用下列命令將執行個體加入目錄。

    sudo realm join -U join_account@example.com example.com --verbose
    join_account@example.com

    example.com 域中具備域加入權限的帳戶。請在系統提示時,輸入該帳戶的密碼。如需委派這些權限的詳細資訊,請參閱「委派 AWS 受管 Microsoft AD 目錄加入權限」。

    example.com

    目錄的完整 DNS 名稱。

    ... * Successfully enrolled machine in realm
  6. 設定 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
  7. 重新啟動執行個體之後,請透過任何安全殼層用戶端連線至該執行個體,然後執行下列步驟將 AWS 委派管理員群組新增至 sudoers 清單:

    1. 使用下列命令開啟 sudoers 檔案:

      sudo visudo
    2. sudoers 檔案的底部加入下列程式碼,然後儲存檔案。

      ## Add the "AWS Delegated Administrators" group from the example.com domain. %AWS\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL

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

Red Hat
  1. 使用任何 SSH 用戶端連線到執行個體。

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

  3. 確定 Red Hat 64 位元執行個體是最新版本。

    sudo yum -y update
  4. 在您的 Linux 執行個體上,安裝必要的 Red Hat 套件。

    注意

    系統可能已安裝其中一些套裝服務。

    在安裝套件時,可能會出現好幾個跳出式設定畫面。您通常可以將這些畫面中的欄位留白。

    sudo yum -y install sssd realmd krb5-workstation samba-common-tools
  5. 使用下列命令將執行個體加入目錄。

    sudo realm join -v -U join_account example.com --install=/
    join_account

    example.com 網域中具有網域加入權限之帳戶的 SAM AccountName。請在系統提示時,輸入該帳戶的密碼。如需委派這些權限的詳細資訊,請參閱「委派 AWS 受管 Microsoft AD 目錄加入權限」。

    example.com

    目錄的完整 DNS 名稱。

    ... * Successfully enrolled machine in realm
  6. 設定 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
  7. 重新啟動執行個體之後,請透過任何安全殼層用戶端連線至該執行個體,然後執行下列步驟將 AWS 委派管理員群組新增至 sudoers 清單:

    1. 使用下列命令開啟 sudoers 檔案:

      sudo visudo
    2. sudoers 檔案的底部加入下列程式碼,然後儲存檔案。

      ## Add the "AWS Delegated Administrators" group from the example.com domain. %AWS\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL

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

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

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

  3. 請確定您的 SUSE Linux 15 執行個體處於最新狀態。

    1. 連接套件儲存庫。

      sudo SUSEConnect -p PackageHub/15.1/x86_64
    2. 更新 SUSE。

      sudo zypper update -y
  4. 在您的 Linux 執行個體上安裝所需的 SUSE Linux 15 套件。

    注意

    系統可能已安裝其中一些套裝服務。

    在安裝套件時,可能會出現好幾個跳出式設定畫面。您通常可以將這些畫面中的欄位留白。

    sudo zypper -n install realmd adcli sssd sssd-tools sssd-ad samba-client krb5-client
  5. 使用下列命令將執行個體加入目錄。

    sudo realm join -U join_account example.com --verbose
    join_account

    例如 .com 網域AccountName 中具有網域加入權限的 SAM。請在系統提示時,輸入該帳戶的密碼。如需委派這些權限的詳細資訊,請參閱「委派 AWS 受管 Microsoft AD 目錄加入權限」。

    example.com

    目錄的完整 DNS 名稱。

    … realm: Couldn't join realm: Enabling SSSD in nsswitch.conf and PAM failed.

    請注意,以下兩者都是預期會發生的傳回項目。

    ! Couldn't authenticate with keytab while discovering which salt to use: ! Enabling SSSD in nsswitch.conf and PAM failed.
  6. 手動啟用 PAM 中的 SSSD

    sudo pam-config --add --sss
  7. 編輯 nsswitch.conf 以在 nsswitch.conf 中啟用 SSSD

    sudo vi /etc/nsswitch.conf
    passwd: compat sss group: compat sss shadow: compat sss
  8. 將以下資料行新增到 /etc/pam.d/common-session ,以便在初始登入時自動建立主目錄

    sudo vi /etc/pam.d/common-session
    session optional pam_mkhomedir.so skel=/etc/skel umask=077
  9. 重新啟動執行個體以完成加入網域的程序。

    sudo reboot
  10. 使用任何 SSH 用戶端重新連線至執行個體,以確認域加入已成功完成並完成其他步驟。

    1. 確認執行個體已在網域上註冊

      sudo realm list
      example.com type: kerberos realm-name: EXAMPLE.COM domain-name: example.com configured: kerberos-member server-software: active-directory client-software: sssd required-package: sssd-tools required-package: sssd required-package: adcli required-package: samba-client login-formats: %U@example.com login-policy: allow-realm-logins
    2. 驗證 SSSD 精靈的狀態

      systemctl status sssd
      sssd.service - System Security Services Daemon Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2020-04-15 16:22:32 UTC; 3min 49s ago Main PID: 479 (sssd) Tasks: 4 CGroup: /system.slice/sssd.service ├─479 /usr/sbin/sssd -i --logger=files ├─505 /usr/lib/sssd/sssd_be --domain example.com --uid 0 --gid 0 --logger=files ├─548 /usr/lib/sssd/sssd_nss --uid 0 --gid 0 --logger=files └─549 /usr/lib/sssd/sssd_pam --uid 0 --gid 0 --logger=files
  11. 允許使用者透過 SSH 和主控台存取

    sudo realm permit join_account@example.com

    允許透過 SSH 和主控台存取網域群組

    sudo realm permit -g 'AWS Delegated Administrators'

    或者允許所有使用者存取

    sudo realm permit --all
  12. 設定 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
  13. 13. 重新啟動執行個體之後,請透過任何安全殼層用戶端連線至該執行個體,然後執行下列步驟將 AWS 委派管理員群組新增至 sudoers 清單:

    1. 使用下列命令開啟 sudoers 檔案:

      sudo visudo
    2. 在 sudoers 檔案的底部加入下列程式碼,然後儲存檔案。

      ## Add the "Domain Admins" group from the awsad.com domain. %AWS\ Delegated\ Administrators@example.com ALL=(ALL) NOPASSWD: ALL
Ubuntu
  1. 使用任何 SSH 用戶端連線到執行個體。

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

  3. 確定 Ubuntu 64 位元執行個體是最新版本。

    sudo apt-get update sudo apt-get -y upgrade
  4. 在您的 Linux 執行個體上,安裝必要的 Ubuntu 套件。

    注意

    系統可能已安裝其中一些套裝服務。

    在安裝套件時,可能會出現好幾個跳出式設定畫面。您通常可以將這些畫面中的欄位留白。

    sudo apt-get -y install sssd realmd krb5-user samba-common packagekit adcli
  5. 停用反向 DNS 解析,並將預設領域設定為網域的 FQDN。Ubuntu 執行個體在 DNS 中必須能夠反向解析,領域才能使用。否則,您必須依照下列步驟,停用在 /etc/krb5.conf 中的反向 DNS:

    sudo vi /etc/krb5.conf
    [libdefaults] default_realm = EXAMPLE.COM rdns = false
  6. 使用下列命令將執行個體加入目錄。

    sudo realm join -U join_account example.com --verbose
    join_account@example.com

    example.com 網域中具有網域加入權限之帳戶的 SAM AccountName。請在系統提示時,輸入該帳戶的密碼。如需委派這些權限的詳細資訊,請參閱「委派 AWS 受管 Microsoft AD 目錄加入權限」。

    example.com

    目錄的完整 DNS 名稱。

    ... * Successfully enrolled machine in realm
  7. 設定 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
  8. 重新啟動執行個體之後,請透過任何安全殼層用戶端連線至該執行個體,然後執行下列步驟將 AWS 委派管理員群組新增至 sudoers 清單:

    1. 使用下列命令開啟 sudoers 檔案:

      sudo visudo
    2. sudoers 檔案的底部加入下列程式碼,然後儲存檔案。

      ## Add the "AWS Delegated Administrators" group from the example.com domain. %AWS\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL

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

限制帳戶登入存取

由於在 Active Directory 中定義了所有帳戶,因此目錄中的所有使用者預設可登入該執行個體。您可以在 sssd.conf 中使用 ad_access_filter 只允許特定使用者登入執行個體。例如:

ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)
memberOf

表示唯有使用者是特定群組的成員時,才可以存取執行個體。

cn

應該具備存取權的群組通用名稱。在此範例中,群組名稱為 admins

ou

這代表上述群組所在的組織單位。在此範例中,OU 為 Testou

dc

這代表網域的網域元件。在此範例中為 example

dc

這代表額外的網域元件。在此範例中為 com

您必須將 ad_access_filter 手動新增至 /etc/sssd/sssd.conf

在文字編輯器中開啟 /etc/sssd/sssd.conf 檔案。

sudo vi /etc/sssd/sssd.conf

執行此動作後,您的 sssd.conf 可能如下所示:

[sssd] domains = example.com config_file_version = 2 services = nss, pam [domain/example.com] ad_domain = example.com krb5_realm = EXAMPLE.COM realmd_tags = manages-system joined-with-samba cache_credentials = True id_provider = ad krb5_store_password_if_offline = True default_shell = /bin/bash ldap_id_mapping = True use_fully_qualified_names = True fallback_homedir = /home/%u@%d access_provider = ad ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)

您需要重新啟動 sssd 服務,才能使設定生效:

sudo systemctl restart sssd.service

或者,您可以使用:

sudo service sssd restart

由於在 Active Directory 中定義了所有帳戶,因此目錄中的所有使用者預設可登入該執行個體。您可以在 sssd.conf 中使用 ad_access_filter 只允許特定使用者登入執行個體。

例如:

ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)
memberOf

表示唯有使用者是特定群組的成員時,才可以存取執行個體。

cn

應該具備存取權的群組通用名稱。在此範例中,群組名稱為 admins

ou

這代表上述群組所在的組織單位。在此範例中,OU 為 Testou

dc

這代表網域的網域元件。在此範例中為 example

dc

這代表額外的網域元件。在此範例中為 com

您必須將 ad_access_filter 手動新增至 /etc/sssd/sssd.conf

  1. 在文字編輯器中開啟 /etc/sssd/sssd.conf 檔案。

    sudo vi /etc/sssd/sssd.conf
  2. 執行此動作後,您的 sssd.conf 可能如下所示:

    [sssd] domains = example.com config_file_version = 2 services = nss, pam [domain/example.com] ad_domain = example.com krb5_realm = EXAMPLE.COM realmd_tags = manages-system joined-with-samba cache_credentials = True id_provider = ad krb5_store_password_if_offline = True default_shell = /bin/bash ldap_id_mapping = True use_fully_qualified_names = True fallback_homedir = /home/%u@%d access_provider = ad ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)
  3. 您需要重新啟動 sssd 服務,才能使設定生效:

    sudo systemctl restart sssd.service

    或者,您可以使用:

    sudo service sssd restart

識別碼對應

識別碼對應可以透過兩種方法執行,以維持 UNIX/Linux 使用者識別碼 (UID) 與群組識別碼 (GID) 與視窗與Active Directory安全性識別碼 (SID) 身分之間的統一體驗。

  1. 集中式

  2. 分散式

注意

中的集中式使用者身分對應Active Directory需要可攜式作業系統介面或 POSIX。

集中使用者身分對應

Active Directory或其他輕量型目錄存取通訊協定 (LDAP) 服務提供 UID 和 GID 給 Linux 使用者。在中Active Directory,這些識別碼會儲存在使用者屬性中:

  • UID-使用者名稱 (字串)

  • UID 號碼-Linux 使用者識別碼編號 (整數)

  • GID 號碼-Linux 群組識別碼 (整數)

若要將 Linux 執行個體設定為使用來源的 UID 和 GIDActive Directory,請在 sssd.conf 檔案ldap_id_mapping = False中設定。在設定此值之前,請確認您已將 UID、UID 號碼和 GID 號碼新增至中的使用者和群組。Active Directory

分佈式用戶身份映射

如果Active Directory沒有 POSIX 擴充功能,或者您選擇不集中管理身分對應,Linux 可以計算 UID 和 GID 值。Linux 會使用使用者的唯一安全性識別碼 (SID) 來維持一致性。

若要設定分散式使用者識別碼對應,請ldap_id_mapping = True在 sssd.conf 檔案中進行設定。

Connect 至 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%