手动将 Amazon EC2 Linux 实例加入你的 Simple AD 活动目录 - Amazon Directory Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

手动将 Amazon EC2 Linux 实例加入你的 Simple AD 活动目录

除了亚马逊 EC2 Windows 实例外,你还可以将某些亚马逊 EC2 Linux 实例加入你的 Simple AD Active Directory。支持以下 Linux 实例分发版和版本:

  • 亚马逊 Linux AMI 2018.03.0

  • Amazon Linux 2(64 位 x86)

  • 亚马逊 Linux 2023 AMI

  • 红帽企业 Linux 8 (HVM) (64 位 x86)

  • Ubuntu Server 18.04 LTS 和 Ubuntu Server 16.04 LTS

  • CentOS 7 x86-64

  • SUSELinux 企业服务器 15 SP1

注意

其他 Linux 分发版和版本可能会正常运行,但未经过测试。

先决条件

必须先按照 将 Amazon EC2 Linux 实例无缝加入你的 Simple AD 活动目录 中指定的步骤启动实例,然后才能将 Amazon Linux、CentOS、Red Hat 或 Ubuntu 实例加入目录。

重要

以下某些过程如果未正确执行,可能会使实例无法访问或不可用。因此,我们强烈建议在执行这些过程之前对实例创建备份或拍摄快照。

将 Linux 实例加入目录

使用以下选项卡之一对特定 Linux 实例执行步骤:

Amazon Linux
  1. 使用任何SSH客户端连接到实例。

  2. 将 Linux 实例配置为使用 Amazon Directory Service提供的DNS服务器的DNS服务器 IP 地址。您可以通过在附加的DHCP选项集中进行设置VPC或在实例上手动设置来实现此目的。如果您想手动设置,请参阅 Amazon 知识中心中的如何将静态DNS服务器分配给私有 Amazon EC2 实例,以获取有关为您的特定 Linux 发行版和版本设置永久DNS服务器的指南。

  3. 确保 64 位 Amazon Linux 实例为最新状态。

    sudo yum -y update
  4. 在 Linux 实例上安装所需的 Amazon Linux 软件包。

    注意

    其中一些程序包可能已安装。

    安装程序包时,可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。

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

    有关确定您使用的亚马逊 Linux 版本的帮助,请参阅亚马逊 Linux 实例EC2用户指南中的识别亚马逊 Linux 镜像

  5. 使用以下命令将实例加入目录。

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

    中的一个账户 example.com 具有域加入权限的域。在出现提示时输入账户的密码。有关委托这些权限的更多信息,请参阅为托 Amazon 管 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. 实例重新启动后,使用任意SSH客户端连接到该实例,然后通过执行以下步骤将域管理员组添加到 sudoers 列表中:

    1. 使用以下命令打开 sudoers 文件:

      sudo visudo
    2. 将以下内容添加到 sudoers 文件的底部并保存该文件。

      ## Add the "Domain Admins" group from the example.com domain. %Domain\ Admins@example.com ALL=(ALL:ALL) ALL

      (以上示例使用“\<space>”形成 Linux 空格字符。)

CentOS
  1. 使用任何SSH客户端连接到实例。

  2. 将 Linux 实例配置为使用 Amazon Directory Service提供的DNS服务器的DNS服务器 IP 地址。您可以通过在附加的DHCP选项集中进行设置VPC或在实例上手动设置来实现此目的。如果您想手动设置,请参阅 Amazon 知识中心中的如何将静态DNS服务器分配给私有 Amazon EC2 实例,以获取有关为您的特定 Linux 发行版和版本设置永久DNS服务器的指南。

  3. 确保 CentOS 7 实例为最新状态。

    sudo yum -y update
  4. 在 Linux 实例上安装所需 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 具有域加入权限的域。在出现提示时输入账户的密码。有关委托这些权限的更多信息,请参阅为托 Amazon 管 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. 实例重新启动后,使用任意SSH客户端连接到该实例,然后通过执行以下步骤将域管理员组添加到 sudoers 列表中:

    1. 使用以下命令打开 sudoers 文件:

      sudo visudo
    2. 将以下内容添加到 sudoers 文件的底部并保存该文件。

      ## Add the "Domain Admins" group from the example.com domain. %Domain\ Admins@example.com ALL=(ALL:ALL) ALL

      (以上示例使用“\<space>”形成 Linux 空格字符。)

Red hat
  1. 使用任何SSH客户端连接到实例。

  2. 将 Linux 实例配置为使用 Amazon Directory Service提供的DNS服务器的DNS服务器 IP 地址。您可以通过在附加的DHCP选项集中进行设置VPC或在实例上手动设置来实现此目的。如果您想手动设置,请参阅 Amazon 知识中心中的如何将静态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

    中账户的sAMAccount名称 example.com 具有域加入权限的域。在出现提示时输入账户的密码。有关委托这些权限的更多信息,请参阅为托 Amazon 管 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. 实例重新启动后,使用任意SSH客户端连接到该实例,然后通过执行以下步骤将域管理员组添加到 sudoers 列表中:

    1. 使用以下命令打开 sudoers 文件:

      sudo visudo
    2. 将以下内容添加到 sudoers 文件的底部并保存该文件。

      ## Add the "Domain Admins" group from the example.com domain. %Domain\ Admins@example.com ALL=(ALL:ALL) ALL

      (以上示例使用“\<space>”形成 Linux 空格字符。)

Ubuntu
  1. 使用任何SSH客户端连接到实例。

  2. 将 Linux 实例配置为使用 Amazon Directory Service提供的DNS服务器的DNS服务器 IP 地址。您可以通过在附加的DHCP选项集中进行设置VPC或在实例上手动设置来实现此目的。如果您想手动设置,请参阅 Amazon 知识中心中的如何将静态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才能正常运行。否则,你必须按如下方式禁用反向 DNS in /etc/krb 5.conf:

    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

    中账户的sAMAccount名称 example.com 具有域加入权限的域。在出现提示时输入账户的密码。有关委托这些权限的更多信息,请参阅为托 Amazon 管 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. 实例重新启动后,使用任意SSH客户端连接到该实例,然后通过执行以下步骤将域管理员组添加到 sudoers 列表中:

    1. 使用以下命令打开 sudoers 文件:

      sudo visudo
    2. 将以下内容添加到 sudoers 文件的底部并保存该文件。

      ## Add the "Domain Admins" group from the example.com domain. %Domain\ Admins@example.com ALL=(ALL:ALL) ALL

      (以上示例使用“\<space>”形成 Linux 空格字符。)

注意

使用 Simple AD 时,如果在 Linux 实例上创建用户账户时使用了“强制用户在首次登录时更改密码”选项,则该用户无法使用 kpasswd 首次更改其密码。要首次更改密码,域管理员必须使用 Active Directory 管理工具更新用户密码。

通过 Linux 实例管理账户

要通过 Linux 实例管理 Simple AD 中的账户,您必须更新您的 Linux 实例上的特定配置文件,如下所示:

  1. 在 /.conf 文件中将 krb5_use_kdcin fo 设置为 False。etc/sssd/sssd例如:

    [domain/example.com] krb5_use_kdcinfo = False
  2. 需要重启 sssd 服务配置才能生效:

    $ sudo systemctl restart sssd.service

    或者,您也可以使用:

    $ sudo service sssd start
  3. 如果您将通过 CentOS Linux 实例管理用户,还必须编辑文件 /etc/smb.conf 以包括:

    [global] workgroup = EXAMPLE.COM realm = EXAMPLE.COM netbios name = EXAMPLE security = ads

限制账户登录访问

因为所有账户都是在 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

身份映射

可以通过两种方法执行 ID 映射,以在 UNIX /Linux 用户标识符 (UID) 和组标识符 (GID) 和 Windows 之间保持统一的体验 Active Directory 安全标识符 (SID) 身份。

  1. 集中化

  2. 分布式

注意

集中式用户身份映射 Active Directory 需要便携式操作系统接口或POSIX。

集中式用户身份映射

Active Directory 或其他向 Linux 用户提供的UID轻量级目录访问协议 (LDAP) 服务。GIDIn Active Directory,这些标识符存储在用户的属性中:

  • UID-Linux 用户名(字符串)

  • UID数字-Linux 用户 ID 号(整数)

  • GID数字-Linux 群组 ID 号(整数)

将 Linux 实例配置为使用UID和 GID Active Directory,ldap_id_mapping = False在 sssd.conf 文件中设置。在设置此值之前,请确认您已向中的用户和组添加了数字和GID数字 UID UID Active Directory.

分布式用户身份映射

如果 Active Directory 没有POSIX扩展名,或者如果您选择不集中管理身份映射,Linux 可以计算UID和GID值。Linux 使用用户的唯一安全标识符 (SID) 来保持一致性。

要配置分布式用户 ID 映射,请在 sssd.conf 文件ldap_id_mapping = True中进行设置。

连接到 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

SUSELinu

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%