注:
- Oracle 提供的免费实验室环境中提供了此教程。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请用特定于您的云环境的实验室值替换这些值。
在 Oracle Linux 上安装 FreeIPA 服务器
简介
FreeIPA 是适用于 Linux 网络环境的开源身份和验证管理系统。该服务器包括 389 Directory Server 作为中央数据存储,提供完整的多主 LDAPv3 功能。
除了本教程的范围之外,FreeIPA 还通过 ISC 绑定服务器提供用于单点登录验证的 MIT Kerberos、Dogtag 证书颁发机构以及可选的域名管理。
本教程说明如何安装 FreeIPA 和配置包含的 LDAP 目录。
目标
- 安装 FreeIPA 服务器
- 禁用匿名绑定数
- 添加用户和组
需要做哪些准备?
- 安装了至少 2 个 vCPUs、2GB RAM 和 Oracle Linux 的系统
- 指向服务器 IP 地址的 FQDN(Fully Qualified Domain Name,全限定域名)
有关 FreeIPA 要求的详细信息,请参阅上游快速入门指南。
设置实验室环境
注:使用空闲实验环境时,有关连接和其他使用说明,请参见Oracle Linux Lab Basics 。
-
打开终端并通过 ssh 连接到 freeipa-server 实例(如果尚未连接)。
ssh oracle@<ip_address_of_instance>
确认服务器 HostName
FreeIPA 服务器需要有效的 DNS 配置。使用 ipa
命令行工具注册的客户机通过文件 /etc/ipa/default.conf
中定义的 xmlrpc_url
和 domain
参数查找服务器。
-
验证服务器的主机名。
sudo hostname
输出不应返回
localhost
或localhost6
。
确认全限定域名 (FQDN)。
对于在安装期间验证的 FQDN,FreeIPA 的限制为 64 个字符。如果 FQDN 超过 64 个字符,请使用 sudo hostnamectl set-hostname NAME
,其中 NAME
是 FQDN,以将其缩短。
-
验证 FQDN 及其长度。
hostname -f
echo $(hostname -f) | wc -m
注: FQDN 包含
freeipa.<RND_SUBNET>.linuxvirt.oraclevcn.com
,其中<RND_SUBNET>
是以字母o
为前缀的 4 个字符的随机字符串。
确认名称解析。
-
获取服务器的 IP 地址。
sudo ip addr show
输出示例:
[oracle@freeipa ~]$ sudo ip addr show ... 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:00:17:02:b3:9e brd ff:ff:ff:ff:ff:ff altname enp0s3 inet 10.0.0.150/24 brd 10.0.0.255 scope global dynamic noprefixroute ens3 valid_lft 85923sec preferred_lft 85923sec inet6 fe80::200:17ff:fe02:b39e/64 scope link noprefixroute valid_lft forever preferred_lft forever
IPv4 地址显示在以
inet
开头的行上。 -
验证正向 DNS 配置。
host $(hostname -f)
输出示例:
[oracle@freeipa ~]$ host $(hostname -f) freeipa.o6fb5.linuxvirt.oraclevcn.com has address 10.0.0.150
验证正向 DNS 配置的另一种方法是使用
dig +short $(hostname -f) A
。host
和dig
都是bind-utils
软件包的一部分,该软件包提供了用于查询 DNS 名称服务器的不同实用程序。 -
验证反向 DNS 配置(PTR 记录)。
host $(hostname -i)
输出示例:
[oracle@freeipa ~]$ host $(hostname -i) 150.0.0.10.in-addr.arpa domain name pointer freeipa.o6fb5.linuxvirt.oraclevcn.com.
另一种方法是使用
dig +short -x $(hostname -i)
。
打开所需的防火墙端口
FreeIPA 要求打开多个端口,并且这些端口可用于与其服务通信。
服务 | 端口 | 协议 |
---|---|---|
HTTP/HTTPS | 80,443 | TCP |
LDAP/LDAP | 389,636 | TCP |
Kerberos | 88,464 | TCP 和 UDP |
DNS | 53 | TCP 和 UDP |
非专业人员 | 123 | UDP |
Oracle Linux 提供了 freeipa-4
服务来打开这些必需的端口。有关详细信息,请参见 /usr/lib/firewalld/services/freeipa-4.xml
。freeipa-4
服务将替换过时的 freeipa-ldap
和 freeipa-ldaps
服务。
-
添加
firewalld
服务。sudo firewall-cmd --permanent --add-service=freeipa-4
sudo firewall-cmd --reload
安装所需的程序包
-
为没有集成 DNS 服务的 FreeIPA 服务器安装软件包。
sudo dnf install ipa-server -y
注意:本教程不使用集成 DNS 服务。如果需要,将软件包
ipa-server-dns
添加到安装列表中。
安装和配置 FreeIPA 服务器
-
运行安装实用程序。
sudo ipa-server-install
该脚本首先提供安装日志文件位置以及 FreeIPA 服务器包含的内容摘要。
输出示例:
[oracle@freeipa ~]$ sudo ipa-server-install The log file for this installation can be found in /var/log/ipaserver-install.log ============================================================================== This program will set up the IPA Server. Version 4.9.8 This includes: * Configure a stand-alone CA (dogtag) for certificate management * Configure the NTP client (chronyd) * Create and configure an instance of Directory Server * Create and configure a Kerberos Key Distribution Center (KDC) * Configure Apache (httpd) * Configure SID generation * Configure the KDC to enable PKINIT ...
然后,脚本使用多个提示设置服务器的配置。终端显示对括号内的提示的缺省响应,按
Enter
接受缺省响应。 -
接受
no
的默认响应以配置集成 DNS 服务。Do you want to configure integrated DNS (BIND)? [no]:
-
接受默认主机名、域名和领域名称。
这些是在本实验开始时验证的值。建议领域名称与主 DNS 域名匹配,全部为大写字母。
Enter the fully qualified domain name of the computer on which you're setting up server software. Using the form <hostname>.<domainname> Example: master.example.com. Server host name [freeipa.o6fb5.linuxvirt.oraclevcn.com]: The domain name has been determined based on the host name. Please confirm the domain name [o6fb5.linuxvirt.oraclevcn.com]: The kerberos protocol requires a Realm name to be defined. This is typically the domain name converted to uppercase. Please provide a realm name [O6FB5.linuxvirt.ORACLEVCN.COM]:
-
输入并确认目录服务器超级用户和 FreeIPA
admin
用户的密码。目录服务器超级用户映射到目录中的
cn=Directory Manager
。Certain directory server operations require an administrative user. This user is referred to as the Directory Manager and has full access to the Directory for system management tasks and will be added to the instance of directory server created for IPA. The password must be at least 8 characters long. Directory Manager password: Password (confirm): The IPA server requires an administrative user, named 'admin'. This user is a regular system account used for IPA server administration. IPA admin password: Password (confirm):
-
接受 NETBIOS 域名和配置时间的默认值。
NetBIOS domain name [O6FB5]: Do you want to configure chrony with NTP server or pool address? [no]:
-
该脚本显示服务器配置的摘要。
-
输入
yes
以接受服务器配置。Continue to configure the system with these values? [no]: yes
-
该脚本将继续配置服务器。
完成此操作可能需要几分钟的时间。
... Client configuration complete. The ipa-client-install command was successful Please add records in this file to your DNS system: /tmp/ipa.system.records.mv9i0ec2.db ============================================================================== Setup complete Next steps: 1. You must make sure these network ports are open: TCP Ports: * 80, 443: HTTP/HTTPS * 389, 636: LDAP/LDAPS * 88, 464: kerberos UDP Ports: * 88, 464: kerberos * 123: ntp 2. You can now obtain a kerberos ticket using the command: 'kinit admin' This ticket will allow you to use the IPA tools (e.g., ipa user-add) and the web user interface. Be sure to back up the CA certificates stored in /root/cacert.p12 These files are required to create replicas. The password for these files is the Directory Manager password The ipa-server-install command was successful
完成后,脚本将提供:
- 摘要。
- 要添加到 DNS 系统的记录列表。
- 建议备份生成的 CA 证书。
所需的网络端口已使用
freeipa-4
firewalld
服务打开。
测试 FreeIPA 服务器
FreeIPA 安装包括命令行客户机和用于与服务器交互的 WebUI。使用 WebUI 超出本教程的范围。
访问命令行界面 (CLI)
-
根据 Kerberos 领域验证
admin
用户。kinit admin
出现提示时,输入在安装和配置步骤期间创建的
admin
用户的密码。然后,kinit
命令将生成 Kerberos 票证。 -
列出票证的信息
klist
输出示例:
[oracle@freeipa ~]$ sudo klist Ticket cache: KCM:0 Default principal: admin@O6FB5.LINUXVIRT.ORACLEVCN.COM Valid starting Expires Service principal 09/28/2022 14:05:46 09/29/2022 13:05:53 krbtgt/O6FB5.LINUXVIRT.ORACLEVCN.COM@O6FB5.LINUXVIRT.ORACLEVCN.COM
-
获取 FreeIPA 服务器上所有现有用户的列表。
ipa user-find
结果将返回
admin
用户,这是当前存在的唯一用户。输出示例:
[oracle@freeipa ~]$ sudo ipa user-find -------------- 1 user matched -------------- User login: admin Last name: Administrator Home directory: /home/admin Login shell: /bin/bash Principal alias: admin@O6FB5.LINUXVIRT.ORACLEVCN.COM, root@O6FB5.LINUXVIRT.ORACLEVCN.COM UID: 872200000 GID: 872200000 Account disabled: False ---------------------------- Number of entries returned 1 ----------------------------
安全设置和强化
以下是安全使用 FreeIPA 服务器的几种方法。
禁用匿名绑定数
FreeIPA LDAP 服务器启用匿名绑定作为默认值,从而公开特定的配置设置和目录值。
nsslapd-allow-anonymous-access
属性控制此行为。可接受的值包括:
on
:允许所有匿名绑定(默认)rootdse
:仅允许对根 DSE 信息进行匿名绑定off
:禁止任何匿名绑定
建议在禁止匿名绑定时使用 rootdse
而不是 off
,因为使用 off
还会阻止外部客户机检查服务器配置。非域客户机(如 LDAP 和 Web 客户机)通过读取根 DSE 文件以获得连接详细信息匿名连接。
-
检查是否启用了匿名绑定。
ldapsearch -x -h $(hostname -f) -b dc=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com
-x
设置简单或匿名验证。-h
设置 LDAP 服务器主机。-b
设置用于搜索的基本 DN。
密钥设置(包括 FreeIPA 服务器的基本 DN)存储在
/etc/ipa/default.conf
文件中。$RND_SUBNET
是自由实验室环境中设置的环境变量,表示 FQDN 中的 4 个字符随机化字符串。输出示例:
... # Default SMB Group, groups, accounts, o6fb5.linuxvirt.oraclevcn.com dn: cn=Default SMB Group,cn=groups,cn=accounts,dc=o6fb5,dc=linuxvirt,dc=oraclevc n,dc=com cn: Default SMB Group description: Fallback group for primary group RID, do not add users to this gr oup objectClass: top objectClass: ipaobject objectClass: posixgroup objectClass: ipantgroupattrs ipaUniqueID: 0c9cf178-4324-11ed-bf0b-02001704fe22 gidNumber: 921600001 ipaNTSecurityIdentifier: S-1-5-21-2697967063-3375457457-2974965896-1001 # search result search: 2 result: 0 Success # numResponses: 110 # numEntries: 109
搜索结果返回 LDAP 目录的整个树。
-
修改配置并禁用匿名绑定。
ldapmodify
命令接受包含对标准输入执行 make 或读取操作的更改的 LDIF 文件。-
创建 LDIF 文件。
cat << 'EOF' | tee ~/disable_anon_bind.ldif > /dev/null dn: cn=config changetype: modify replace: nsslapd-allow-anonymous-access nsslapd-allow-anonymous-access: rootdse EOF
可以通过单独在一行上使用短划线
-
字符分隔多个属性来更改这些属性。每次附加更改均从属性更改类型开始,并提供必需的属性。 -
应用 LDIF 更改。
ldapmodify -x -D "cn=Directory Manager" -W -H ldap:// -ZZ -f ~/disable_anon_bind.ldif
-x
设置简单或匿名验证。-D
设置绑定 DN。-W
提示输入 LDAPadmin
口令。-H
使用 LDAP 统一资源标识符 (Uniform Resource Identifier,URI) 进行连接,而不是使用 LDAP 服务器主机进行连接。-ZZ
启动 TLS 请求并强制成功响应。
注:由于使用自签名证书,因此需要
-ZZ
。输出示例:
[oracle@freeipa ~]$ ldapmodify -x -D "cn=Directory Manager" -W -H ldap:// -ZZ -f ~/disable_anon_bind.ldif Enter LDAP Password: modifying entry "cn=config"
-
重新启动 FreeIPA 服务器。
sudo systemctl restart ipa.service
-
-
通过匿名查询目录来验证修改。
ldapsearch -x -h $(hostname -f) -b dc=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com
请注意响应
Anonymous access is not allowed
。输出示例:
[oracle@freeipa ~]$ ldapsearch -x -h freeipa.o6fb5.linuxvirt.oraclevcn.com -b dc=o6fb5,dc=linuxvirt,dc=oraclevcn,dc=com # extended LDIF # # LDAPv3 # base <dc=o6fb5,dc=linuxvirt,dc=oraclevcn,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL # # search result search: 2 result: 48 Inappropriate authentication text: Anonymous access is not allowed. # numResponses: 1
-
使用验证验证验证验证查询目录是否有效。
ldapsearch -D uid=admin,cn=users,cn=accounts,dc=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com -W -H ldap://
输出示例:
... # freeipa.o6fb5.linuxvirt.oraclevcn.com + 389, subordinate-ids, dna, ipa, etc, o6fb5.linuxvirt.oraclevcn.com dn: dnaHostname=freeipa.o6fb5.linuxvirt.oraclevcn.com+dnaPortNum=389,cn=subord inate-ids,cn=dna,cn=ipa,cn=etc,dc=o6fb5,dc=linuxvirt,dc=oraclevcn,dc=com objectClass: dnaSharedConfig objectClass: top dnaHostname: freeipa.o6fb5.linuxvirt.oraclevcn.com dnaPortNum: 389 dnaSecurePortNum: 636 dnaRemainingValues: 32766 # search result search: 2 result: 0 Success # numResponses: 475 # numEntries: 474
验证 TLS 是否已启用
从 Oracle Linux 8 开始,FreeIPA 使用系统范围的加密策略。有关更多详细信息,请参见 crypto-policies(7)
手册页。
-
列出当前系统范围的加密策略。
cat /etc/crypto-policies/config
-
列出加密策略详细信息。
cat /usr/share/crypto-policies/$(cat /etc/crypto-policies/config)/nss.txt
输出示例:
[oracle@freeipa ~]$ cat /usr/share/crypto-policies/$(cat /etc/crypto-policies/config)/nss.txt library= name=Policy NSS=flags=policyOnly,moduleDB config="disallow=ALL allow=HMAC-SHA256:HMAC-SHA1:HMAC-SHA384:HMAC-SHA512:CURVE25519:SECP256R1:SECP384R1:SECP521R1:aes256-gcm:chacha20-poly1305:aes256-cbc:aes128-gcm:aes128-cb > c:SHA256:SHA384:SHA512:SHA224:ECDHE-RSA:ECDHE-ECDSA:RSA:DHE-RSA:ECDSA:RSA-PSS:RSA-PKCS:tls-version-min=tls1.2:dtls-version-min=dtls1.2:DH-MIN=2048:DSA-MIN=2048:RSA-MIN=2048"
请注意,
DEFAULT
策略至少使用TLS 1.2
。
查看 FreeIPA 服务器状态
FreeIPA 服务器包含用于查看已配置服务的状态的 ipactl
实用程序。同一实用程序还可以启动、停止和重新启动整个 FreeIPA 服务器。如果需要 start
、stop
或 restart
个组件,请使用 systemctl COMMAND name.service
。
-
显示所有服务的状态。
sudo ipactl status
输出示例:
[oracle@freeipa ~]$ sudo ipactl status Directory Service: RUNNING krb5kdc Service: RUNNING kadmin Service: RUNNING httpd Service: RUNNING ipa-custodia Service: RUNNING pki-tomcatd Service: RUNNING ipa-otpd Service: RUNNING ipa: INFO: The ipactl command was successful
使用
sudo ipactl --help
可查看其他命令选项。
创建用户和组
完成 FreeIPA 服务器的基本安装和配置后,下一步是处理身份管理,其中包括创建用户和组。在执行此操作之前,生成 Kerberos 令牌。
-
为用户
admin
生成令牌。kinit admin
-
获取现有令牌的列表。
klist
默认情况下,Kerberos 令牌有效期为 24 小时。由于以前在 "Access the Command-Line Interface (CLI)" 步骤中运行了这些命令,因此列表将显示原始标记,而不是创建新标记。
-
添加新用户组。
FreeIPA 将用户组定义为具有标准密码策略、权限和其他特征的一组用户。
用户组可以包括:
- 用户
- 其他用户组
- 存在于 FreeIPA 外部的外部用户
ipa group-add foo
输出示例:
[oracle@freeipa ~]$ ipa group-add foo ----------------- Added group "foo" ----------------- Group name: foo GID: 1326400003
FreeIPA 服务器支持三种组类型:
- POSIX(默认值)
- 非 POSIX
- 外部
组 foo
是 POSIX 用户组。要指定不同的组类型,请使用以下选项之一:
--nonposix
创建非 POSIX 组--external
,用于创建外部组- 获取所有现有用户组的列表。
ipa group-find
输出示例:
[oracle@freeipa ~]$ ipa group-find ---------------- 5 groups matched ---------------- Group name: admins Description: Account administrators group GID: 1326400000 Group name: editors Description: Limited admins who can edit other users GID: 1326400002 Group name: foo GID: 1326400003 Group name: ipausers Description: Default group for all users Group name: trust admins Description: Trusts administrators group ---------------------------- Number of entries returned 5 ----------------------------
FreeIPA 服务器在安装期间创建以下用户组。
admins
ipausers
trust admins
警告:请勿删除
admin
组,因为它包含默认的admin
用户。FreeIPA 服务器要求admin
组正常运行。
-
添加新的用户帐户。
ipa user-add
该命令运行交互式脚本,提示您提供创建用户帐户所需的最少数据集 FreeIPA。
输出示例:
[oracle@freeipa ~]$ ipa user-add First name: Oracle Last name: User User login [ouser]: oracle ------------------- Added user "oracle" ------------------- User login: oracle First name: Oracle Last name: User Full name: Oracle User Display name: Oracle User Initials: OU Home directory: /home/oracle GECOS: Oracle User Login shell: /bin/sh Principal name: oracle@OD1F5.LINUXVIRT.ORACLEVCN.COM Principal alias: oracle@OD1F5.LINUXVIRT.ORACLEVCN.COM Email address: oracle@od1f5.linuxvirt.oraclevcn.com UID: 1326400004 GID: 1326400004 Password: False Member of groups: ipausers Kerberos keys available: False
或者,运行带有多个选项的命令允许在非交互模式下创建用户帐户。要获取可用选项的列表,请运行
ipa user-add --help
。 -
将新用户添加到新用户组。
ipa group-add-member foo --users=oracle
输出示例:
[oracle@freeipa ~]$ ipa group-add-member foo --users=oracle Group name: foo GID: 1326400003 Member users: oracle ------------------------- Number of members added 1 -------------------------
ipa
命令的功能比所显示的功能更多。有关其他命令,请运行 ipa help commands
以获得完整列表。
汇总
此练习结束,介绍了安装和使用 FreeIPA 服务器的基本知识。使用下面的链接探索更多内容,或者阅读产品手册页面,因为 FreeIPA 除了这里介绍的内容之外还有许多其他功能。
详细信息
请参阅其他相关资源:
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或在 Oracle Learning YouTube 频道上访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Install FreeIPA Server on Oracle Linux
F71514-01
October 2022
Copyright © 2022, Oracle and/or its affiliates.