Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第 2 章 安装和卸载身份管理服务器

身份管理 (IdM) 服务器 是一个域控制器:它定义和管理 IdM 域。要设置 IdM 服务器,您必须:
  1. 安装所需的软件包
  2. 使用设置脚本配置机器
红帽强烈建议在您的域中设置多个域控制器,以实现负载平衡和冗余。这些额外的服务器是初始 master IdM 服务器 的副本
本章论述了安装第一个初始 IdM 服务器。有关从初始服务器安装副本的详情请参考 第 4 章 安装和卸载身份管理副本

2.1. 安装服务器的先决条件

2.1.1. 最低硬件要求

要运行身份管理(IdM),服务器至少需要以下硬件配置:
  • 1(虚拟)CPU 内核
  • 2 GB RAM
    即使您可以安装较少的 RAM 的 IdM,某些操作(如更新 IdM)至少需要 4 GB RAM。
  • 10 GB 硬盘
重要
根据数据库中存储的数据量,IdM 需要更多资源,特别是更多 RAM。详情请查看 第 2.1.2 节 “硬件建议”。所需的硬件资源还依赖于其他因素,如服务器的生产工作负载或者配置了与 Active Directory 的信任。

2.1.2. 硬件建议

对于性能调整,RAM 是最重要的硬件。要确定您需要的 RAM 量,请考虑以下建议:
  • 对于 10,000 用户和 100 组:至少 3 GB RAM 和 1 GB 交换空间
  • 对于 100,000 个用户和 50,000 个组:至少 16 GB RAM 和 4 GB swap 空间
注意
基本用户条目或具有证书的简单主机条目的大小约为 5 - 10 KiB。
对于较大的部署,增加 RAM 比增加磁盘空间更为有效,因为许多数据都存储在缓存中。
要提高性能,您可以调优底层目录服务器以提高性能。详情请查看 红帽目录服务器性能调优指南

2.1.3. 系统要求

Red Hat Enterprise Linux 7 支持身份管理。在干净的系统中安装 IdM 服务器,而无需为 DNS、Kerberos 或 Directory Server 等服务配置任何自定义配置。
重要
出于性能和稳定性的原因,红帽建议您不要在 IdM 服务器上安装其他应用程序或服务。例如,IdM 服务器可能会对系统完成,特别是当 LDAP 对象的数量很高时。另外,IdM 会在系统中集成,如果第三方应用程序更改了 IdM 依赖于的配置文件,IdM 可能会中断。
IdM 服务器安装覆盖了系统文件来设置 IdM 域。IdM 将原始系统文件备份到 /var/lib/ipa/sysrestore/
名称服务缓存守护进程(NSCD)要求
红帽建议在身份管理机器上禁用 NSCD。另外,如果没有禁用 NSCD,则只为 SSSD 不缓存的映射启用 NSCD。
NSCD 和 SSSD 服务都执行缓存,当系统同时同时使用这两个服务时,可能会出现问题。有关如何避免 NSCD 和 SSSD 之间冲突的信息,请参阅 系统级身份验证指南
必须在系统中启用 IPv6
IdM 服务器必须在内核中启用 IPv6 协议。请注意,Red Hat Enterprise Linux 7 系统中默认启用 IPv6。
注意
IdM 不需要在您要注册为客户端的主机的内核中启用 IPv6 协议。例如,如果您的内部网络仅使用 IPv4 协议,您可以将系统安全服务守护进程(SSSD)配置为仅使用 IPv4 与 IdM 服务器通信。您可以将以下行插入到 /etc/sssd/sssd.conf 文件的 [domain/_NAME_] 部分中:
lookup_family_order = ipv4_only
有关 lookup_family_order 的更多信息,请参阅 sssd.conf (5) 手册页。

2.1.4. 在 FIPS 环境中安装服务器的先决条件

在使用 Red Hat Enterprise Linux 7.4 及更新的版本设置的环境中:
  • 您可以在启用了联邦信息处理标准(FIPS)模式的系统中配置新的 IdM 服务器或副本。安装脚本自动检测启用了 FIPS 的系统,并在没有管理员干预的情况下配置 IdM。
    要在操作系统中启用 FIPS,请参阅 安全指南 中的启用 FIPS 模式
    重要
    您不能:
    • 在之前禁用 FIPS 模式的现有 IdM 服务器上启用 FIPS 模式。
    • 当使用禁用 FIPS 模式的现有 IdM 服务器时,以 FIPS 模式安装副本。
在使用 Red Hat Enterprise Linux 7.3 及更早版本设置的环境中:
  • IdM 不支持 FIPS 模式。在安装 IdM 服务器或副本前禁用您的系统 FIPS,并在安装后不要启用它。
有关 FIPS 模式的详情,请参阅 安全指南 中的 联邦信息处理标准(FIPS )。

2.1.5. 主机名和 DNS 配置

警告
请非常小心,并确保:
  • 您有一个经过测试和功能的 DNS 服务可用
  • 服务配置正确
此要求适用于具有集成 DNS 服务的 IdM 服务器以及在没有 DNS 的情况下安装的 IdM 服务器。DNS 记录对于几乎所有 IdM 域功能至关重要,包括运行 LDAP 目录服务、Kerberos 和 Active Directory 集成。
请注意,在安装后无法更改主 DNS 域和 Kerberos 域。
不要使用单标签域名,例如 .company : IdM 域必须由一个或多个子域和一个顶级域组成,如 example.comcompany.example.com
服务器主机必须正确配置 DNS,无论 DNS 服务器是在 IdM 中集成还是外部托管。
身份管理需要将单独的 DNS 域用于服务记录。为了避免 DNS 级别( 主 IdM DNS 域 )冲突,名称为 IdM Kerberos 名称小写版本的 DNS 域无法与其他系统(如其它 IdM 或 AD 域)共享
主 IdM DNS 域必须包含其自身用于标准 IdM 服务的 SRV 记录。所需的记录有:
  • _kerberos._tcp.domain_name 和 _kerberos._ udp.domain_name的 SRV 记录
  • _ldap._tcp.domain_name的 SRV 记录
  • _kerberos.domain_name的 TXT 记录
当注册的客户端通过 ipa 命令行工具查找 IdM 提供的服务或介质服务时,它会在 /etc/ipa/default.conf 文件中查找由 xmlrpc_uri 参数指定的服务器。如果需要,它还会查找同一文件中域参数中提供的 IdM DNS 域名,并查询该域的 _ldap._tcp.domain_name SRV 记录,以标识正在查找的服务器。如果 /etc/ipa/default.conf 文件中没有给出的域,客户端仅联系文件的 xmlrpc_uri 参数中设置的服务器。
请注意,IdM 客户端和服务器的主机名不需要是主 DNS 域的一部分。但是,在使用 Active Directory(AD)的信任环境中,IdM 服务器的主机名必须是 IdM 拥有的域(与 IdM 域关联的域),而不是 AD 拥有的域(与可信 AD 域关联的域)。从信任的角度来看,此关联通过 Realm 域进行管理
有关使用 Active Directory DNS 域的主机名配置用户访问 IdM 客户端的详情,请参考 Windows 集成指南中的 Active Directory DNS 域中的 IdM 客户端

验证服务器主机名

主机名必须是完全限定域名,如 server.example.com
重要
不要使用单标签域名,例如 .company:IdM 域必须由一个或多个子域和一个顶层域组成,如 example.com 或 company.example.com。
完全限定域名必须满足以下条件:
  • 它是一个有效的 DNS 名称,即只允许数字、字母字符和连字符(-)。主机名中的其他字符(如下划线(_))会导致 DNS 失败。
  • 都是小写。不允许使用大写字母。
  • 完全限定域名不能解析到环回地址。它必须解析到计算机的公共 IP 地址,而不是 127.0.0.1
有关其他推荐的命名实践,请参阅 Red Hat Enterprise Linux 安全指南中的 推荐命名实践
要验证机器的主机名,请使用 hostname 工具:
[root@server ~]# hostname
server.example.com
hostname 的输出不能是 localhostlocalhost6

验证转发和反向 DNS 配置

  1. 获取服务器的 IP 地址。ip addr show 命令显示 IPv4 和 IPv6 地址:
    • IPv4 地址显示在以 inet 开头的行上。在以下示例中,配置的 IPv4 地址为 192.0.2.1
    • IPv6 地址显示在以 inet6 开头的行中。只有范围为 global 的 IPv6 地址与此流程相关。在以下示例中,返回的 IPv6 地址为 2001:DB8::1111
    [root@server ~]# ip addr show
    ...
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    	link/ether 00:1a:4a:10:4e:33 brd ff:ff:ff:ff:ff:ff
    	inet 192.0.2.1/24 brd 192.0.2.255 scope global dynamic eth0
    		valid_lft 106694sec preferred_lft 106694sec
    	inet6 2001:DB8::1111/32 scope global dynamic
     		valid_lft 2591521sec preferred_lft 604321sec
    	inet6 fe80::56ee:75ff:fe2b:def6/64 scope link
    	       valid_lft forever preferred_lft forever
    
  2. 使用 dig 工具并添加主机名,验证转发 DNS 配置。
    1. 运行 dig +short server.example.com A 命令。返回的 IPv4 地址必须与 ip addr show 返回的 IP 地址匹配:
      [root@server ~]# dig +short server.example.com A
      192.0.2.1
      
    2. 运行 dig +short server.example.com AAAA 命令。如果命令返回地址,它必须与 ip addr show 返回的 IPv6 地址匹配:
      [root@server ~]# dig +short server.example.com AAAA
      2001:DB8::1111
      
      注意
      如果没有为 AAAA 记录返回任何输出,它不会指出配置不正确;没有输出仅表示服务器计算机的 DNS 中未配置 IPv6 地址。如果您不打算在网络中使用 IPv6 协议,则可以继续进行安装。
  3. 使用 dig 工具并添加 IP 地址,验证反向 DNS 配置(PTR 记录)。
    1. 运行 dig +short -x IPv4 address 命令。服务器主机名必须显示在命令输出中。例如:
      [root@server ~]# dig +short -x 192.0.2.1
      server.example.com
      
    2. 如果上一步中的 dig +short -x server.example.com AAAA 命令返回 IPv6 地址,则使用 dig 查询 IPv6 地址。同样,必须在命令输出中显示服务器主机名。例如:
      [root@server ~]# dig +short -x 2001:DB8::1111
      server.example.com
      
      注意
      如果上一步中的 dig +short server.example.com AAAA 没有显示任何 IPv6 地址,查询 AAAA 记录不会输出任何内容。在这种情况下,这是正常的行为,不代表配置不正确。
    如果显示不同的主机名或主机名,即使上一步中的 dig +short server.example.com 返回 IP 地址,这表示反向 DNS 配置不正确。

验证 DNS Forwarders 的标准合规性

当使用集成的 DNS 配置 IdM 时,建议使用 DNS 安全扩展 (DNSSEC)记录验证。通过验证来自其他服务器的已签名 DNS 记录,您可以防止 IdM 安装被欺骗地址。但是,DNSSEC 验证不是成功安装 IdM 的硬要求。
IdM 安装程序默认启用 DNSSEC 记录验证。要成功进行 DNSSEC 验证,务必要让 DNSSEC 正确配置的转发器已正确配置。在安装过程中,IdM 会检查全局转发器,如果转发器不支持 DNSSEC,则转发器上将禁用 DNSSEC 验证。
要验证您要与 IdM DNS 服务器使用的所有 DNS 转发器是否符合 DNS(EDNS0)和 DNSSEC 标准扩展机制
$ dig +dnssec @IP_address_of_the_DNS_forwarder . SOA
命令显示的预期输出包含以下信息:
  • 状态:NOERROR
  • 标记: ra
  • EDNS 标志: do
  • RRSIG 记录必须在 ANSWER 部分中存在
如果输出中缺少其中任何一个项目,请检查 DNS 转发器的文档,并验证是否支持并启用了 EDNS0 和 DNSSEC。在最新版本的 BIND 服务器中,dnssec-enable yes; 选项必须在 /etc/named.conf 文件中设置。
例如,预期的输出如下:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48655
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096

;; ANSWER SECTION:
. 31679 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2015100701 1800 900 604800 86400
. 31679 IN RRSIG SOA 8 0 86400 20151017170000 20151007160000 62530 . GNVz7SQs [...]

/etc/hosts 文件

重要
不要手动修改 /etc/hosts 文件。如果修改了 /etc/hosts,请确保其内容符合以下规则:
以下是正确配置了 /etc/hosts 文件的示例。它正确列出主机的 IPv4 和 IPv6 localhost 条目,后跟 IdM 服务器 IP 地址和主机名作为第一个条目。请注意,IdM 服务器主机名不能是 localhost 条目的一部分。
127.0.0.1	localhost.localdomain	localhost
::1		localhost6.localdomain6	localhost6
192.0.2.1	server.example.com	server
2001:DB8::1111	server.example.com	server

2.1.6. 端口要求

IdM 使用多个端口与其服务通信。这些端口必须处于打开状态,且可供 IdM 使用。它们不能被其他服务使用或受防火墙阻止。

所需端口列表

表 2.1. 身份管理端口

服务 端口 协议
HTTP/HTTPS 80, 443 TCP
LDAP/LDAPS 389, 636 TCP
Kerberos 88, 464 TCP 和 UDP
DNS 53 TCP 和 UDP
NTP 123 UDP
注意
不要担心 IdM 使用端口 80 和 389。
  • 端口 80(HTTP)用于提供在线证书状态协议(OCSP)响应和证书撤销列表(CRL)。二者均经过数字签名,因此可防止中间人攻击。
  • 端口 389(LDAP)使用 STARTTLS 和 GSSAPI 进行加密。
此外,IdM 可以侦听端口 8080,某些安装中也侦听端口 8443 和 749。但是,这三个端口仅在内部使用:尽管 IdM 保持开放,但不需要从外部访问它们。建议您不要打开端口 8080、8443 和 749,而是让端口被防火墙阻止。

firewalld 服务列表

表 2.2. firewalld 服务

服务名称 详情请查看:
freeipa-ldap /usr/lib/firewalld/services/freeipa-ldap.xml
freeipa-ldaps /usr/lib/firewalld/services/freeipa-ldaps.xml
dns /usr/lib/firewalld/services/dns.xml

打开所需端口

  1. 确保 firewalld 服务正在运行。
    • 查看 firewalld 当前是否正在运行:
      # systemctl status firewalld.service
    • 启动 firewalld 并将其配置为在系统引导时自动启动:
      # systemctl start firewalld.service
      # systemctl enable firewalld.service
  2. 使用 firewall-cmd 工具打开所需的端口。选择以下选项之一:
    1. 使用 firewall-cmd --add-port 命令在防火墙中添加各个端口。例如,要在默认区中打开端口:
      # firewall-cmd --permanent --add-port={80/tcp,443/tcp,list_of_ports}
    2. 使用 firewall-cmd --add-service 命令在防火墙中添加 firewalld 服务。例如,要在默认区中打开端口:
      # firewall-cmd --permanent --add-service={freeipa-ldap,list_of_services}
    有关使用 firewall-cmd 在系统上打开端口的详情,请参考 安全指南中的使用 CLI 或 firewall-cmd(1) man page 中的 Runtime 和 Permanent Configuration 中的修改设置
  3. 重新载入 firewall-cmd 配置以确保修改立即生效:
    # firewall-cmd --reload
    请注意,在生产环境的系统上重新载入 firewalld 可能会导致 DNS 连接超时。另请参阅《 安全指南》的使用 CLI 修改运行时和永久 配置中 的设置。如果需要,为了避免超时的风险并在运行的系统上永久保留修改,请使用 firewall-cmd 命令的 --runtime-to-permanent 选项,例如:
    # firewall-cmd --runtime-to-permanent --add-port={80/tcp,443/tcp,389/tcp,636/tcp,88/tcp,88/udp,464/tcp,464/udp,53/tcp,53/udp,123/udp}
  4. 可选。要验证端口现在是否可用,请使用 nctelnetnmap 工具连接到端口或运行端口扫描。
注意
请注意,您还必须为传入和传出流量打开基于网络的防火墙。