介绍
FreeIPA是为Linux提供帐户管理和集中身份验证的开源安全解决方案,类似于微软的Active Directory。
FreeIPA 拥有 CentOS 7, Fedora 和 Ubuntu 14.04/16.04 的客户端,这些客户端使得将机器添加到您的 IPA 域中相当简单。
在本教程中,我们将在 CentOS 7 服务器上安装 FreeIPA 服务器,然后您可以配置客户端机器,允许 FreeIPA 用户使用他们的 IPA 凭证登录。
在您遵循本教程后,您可以 在 Ubuntu 16.04 上配置 FreeIPA 客户端 或 在 CentOS 7 上配置 FreeIPA 客户端 。
前提条件
要遵循本教程,您将需要:
- 1 CentOS 7服务器,至少有1GB的RAM. 默认情况下,CentOS 7只使用根用户. 因为我们将使用FreeIPA来管理用户,因此不需要手动添加另一个用户. 您可以简单地作为根用户跟踪此教程 。
- 在您的服务器上启用了防火墙, 您可以按照 [CentOS 7 教程附加推荐步骤中的防火墙步骤] (https://andsky.com/tech/tutorials/additional-recommended-steps-for-new-centos-7-servers#configuring-a-basic-firewall) 设置 。 此举被极力推荐,因为FreeIPA处理敏感的用户证书.
- 一个完全注册的域,用于服务器和客户端. 您可以在 [Namecheap] (https://namecheap.com) 上购买,也可以在 [Freenom] (http://www.freenom.com/en/index.html 上免费购买。
- 为您的服务器设置的以下 DNS 记录 。 您可以跟随 [此主机名教程] (https://andsky.com/tech/tutorials/how-to-set-up-a-host-name-with-digitalocean) 来了解如何添加它们的细节 。
- 一个带有您服务器名( 如
ipa. example.com
) 的记录, 指向您的服务器的IPv4 地址 。 - AAAA 记录,其服务器名称指向您的服务器的IPv6地址,如果您想要您的服务器可以通过IPv6到达.
- " nano " 文本编辑器可选地安装在 " yum安装纳米 " 上。 CentOS默认带有 " vi " 文本编辑器,但 " nano " 可以更加方便用户。 (英语)
步骤 1 – 准备IPA服务器
在我们开始安装任何东西之前,我们需要做一些事情来确保服务器已准备好运行 FreeIPA. 具体来说,我们将设置服务器主机名,更新系统包,检查先决条件中的 DNS 记录是否传播,并确保防火墙允许流量到 FreeIPA。
首先,您的服务器的主机名称将需要匹配您的完全合格域名(FQDN),以便FreeIPA正确工作。
您可以在创建服务器时设置主机名称,或者在创建服务器后从命令行设置主机名称,使用主机名称
命令:
1hostname ipa.example.org
现在,用yum
更新包库。
1yum update
接下来,在防火墙中打开所需的 FreeIPA 端口。
1firewall-cmd --permanent --add-port={80/tcp,443/tcp,389/tcp,636/tcp,88/tcp,464/tcp,53/tcp,88/udp,464/udp,53/udp,123/udp}
重新加载防火墙,以便更改生效。
1firewall-cmd --reload
最后,您需要验证 DNS 名称是否正确解决,您可以使用挖掘
命令来执行此操作,安装bind-utils
包以获取挖掘
和其他 DNS 测试工具。
1yum install bind-utils
然后使用dig
来检查 A 记录。
1dig +short ipa.example.org A
然后返回your_server_ipv4
。
如果您有 IPv6 啟用,您可以以同樣的方式測試 AAAA 記錄。
1dig +short ipa.example.org AAAA
然后返回your_server_ipv6
。
您还可以测试反向搜索,测试您是否可以从 IP 地址中解决主机名称。
1dig +short -x your_server_ipv4
2dig +short -x your_server_ipv6
兩者都應該返回「ipa.example.com」。
FreeIPA 使用 DNS 大量,所以在下一步,我们将确保我们的服务器满足 FreeIPA 需要正常工作的特定 DNS 要求。
第2步:设置DNS
所有运行 FreeIPA 的机器都必须使用完全合格的域名(FQDNs)作为其主机名称,我们在上一步设置了它们。
美元(注)
** 注意**:如果您在 LAN 内的服务器上设置 FreeIPA,请使用私人 IP。
美元
在DigitalOcean上,您可以在 控制面板中看到服务器的公共IP地址,您也可以使用ip
命令找到服务器的IP地址。
1ip addr show
这应该产生类似于以下的产量:
1[secondary_label Output]
2. . .
32: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
4 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
5 inet 111.111.111.111/18 brd 111.111.111.255 scope global eth0
6 valid_lft forever preferred_lft forever
7 inet6 1111:1111:1111:1111::1111:1111/64 scope global
8 valid_lft forever preferred_lft forever
9. . .
IPv4 地址直接出现在 inet之后,如果已启用,则 IPv6 地址也会出现在 inet6之后。如果启用了私人网络,您可能会看到额外的私人 IP 地址;您可以忽略这些地址。 为了区分公共和私人 IP 地址,请注意,私人 IPv4 地址将在以下范围内: 192.168.*
, 10.*.*
,或 172.16.*.*
到 172.31.*.*
。
现在我们需要更改主机文件,将服务器的主机名指向其外部IP地址。 主机文件, /etc/hosts
,将域名地图到机器上本地的IP地址。
1nano /etc/hosts
尋找在「127.0.0.1」之後有您的伺服器主機名號的行:
1[label /etc/hosts]
2. . .
3# The following lines are desirable for IPv4 capable hosts
4127.0.0.1 ipa.example.com ipa.example.com
5127.0.0.1 localhost.localdomain localhost
6127.0.0.1 localhost4.localdomain4 localhost4
7. . .
将127.0.01
更改为您的服务器IPv4地址。
1[label Modified /etc/hosts]
2. . .
3# The following lines are desirable for IPv4 capable hosts
4your_server_ipv4 ipa.example.com ipa.example.com
5127.0.0.1 localhost.localdomain localhost
6127.0.0.1 localhost4.localdomain4 localhost4
7. . .
如果您有 IPv6 启用,您还需要编辑 IPv6 地图,更改您的主机名称的 ::1
行。
1[label /etc/hosts]
2...
3# The following lines are desirable for IPv6 capable hosts
4::1 ipa.example.com ipa.example.com
5::1 localhost.localdomain localhost
6::1 localhost6.localdomain6 localhost6
7...
将::1 更改为您的 IPv6 服务器地址。
1[label Modified /etc/hosts]
2...
3# The following lines are desirable for IPv6 capable hosts
4your_server_ipv6 ipa.example.com ipa.example.com
5::1 localhost.localdomain localhost
6::1 localhost6.localdomain6 localhost6
7...
保存和退出文件。
默认情况下,每次系统启动,CentOS 都会使用 /etc/cloud/templates/hosts.redhat.tmpl
中的配置来生成 /etc/hosts
。
打开文件。
1nano /etc/cloud/templates/hosts.redhat.tmpl
更改`127.0.0.1 ${fqdn} ${hostname}」行以使用您的服务器IPv4地址。
1[label Modified /etc/cloud/templates/hosts.redhat.tmpl]
2...
3# The following lines are desirable for IPv4 capable hosts
4your_server_ipv4 ${fqdn} ${hostname}
5127.0.0.1 localhost.localdomain localhost
6127.0.0.1 localhost4.localdomain4 localhost4
7...
同样,如果您正在使用一个 IPv6 地址,请更改 `::1 ${fqdn} ${hostname}' 行。
1[label Modified /etc/cloud/templates/hosts.redhat.tmpl]
2...
3# The following lines are desirable for IPv6 capable hosts
4your_server_ipv6 ${fqdn} ${hostname}
5::1 localhost.localdomain localhost
6::1 localhost6.localdomain6 localhost6
7...
退出并保存文件。
接下来,我们将在CentOS内配置随机数字生成器,这将允许FreeIPA预定义其对身份验证所需的加密功能。
步骤 3 – 配置随机号码生成器
设置 FreeIPA 需要大量的随机数据来执行其加密操作。默认情况下,虚拟机将很快失去随机数据或热量。 为了绕过这一点,我们将使用rngd
,一个软件随机数字生成器。
首先,安装rngd
。
1yum install rng-tools
然后允许它。
1systemctl start rngd
确保服务在启动时自动启动。
1systemctl enable rngd
最后,检查rngd
是否正在运行。
1systemctl status rngd
输出应以绿色表示`活跃(运行)。
随着所有依赖的配置和运作,我们可以继续安装FreeIPA服务器软件本身。
步骤 4 – 安装 FreeIPA 服务器
我们可以继续安装ipa-server
,即FreeIPA服务器包本身。
1yum install ipa-server
然后运行 FreeIPA 安装命令. 这将运行一个脚本,提示您进行配置选项并安装 FreeIPA。
1ipa-server-install
除了身份验证之外,FreeIPA 还能够为主机管理 DNS 记录,这可以使提供和管理主机变得更容易。 在本教程中,我们不会使用FreeIPA 的集成 DNS。
1[secondary_label Installation script prompt]
2Do you want to configure integrated DNS (BIND)? [no]: no
接下来,您需要输入服务器的主机名称、域名和Kerberos 领域名称。Kerberos 是 FreeIPA 在幕后使用的身份验证协议,用于身份验证主机。 强烈建议您将您的域名作为 Kerberos 领域。 使用不同的命名方案会导致 FreeIPA 的 Active Directory 集成问题,并可能导致其他问题。
<$>[警告]
警告: 不要将您的根域(example.com
)作为您的IPA域名。
1[secondary_label Installation script prompt]
2Server host name [ipa.example.org]: ipa.example.org
3Please confirm the domain name [example.org]: ipa.example.org
4Please provide a realm name [EXAMPLE.ORG]: IPA.EXAMPLE.ORG
接下来,为 LDAP 目录管理器创建密码. 这是 FreeIPA 的 LDAP 功能所需的。 然后是 IPA 管理员密码,在登录 FreeIPA 作为管理员用户时使用。
确认配置,此后,安装程序将运行。
1[secondary_label Installation script prompt]
2Continue to configure the system with these values? [no]: yes
安装过程可能需要几分钟,这取决于您的服务器的速度。
现在我们已经完成了服务器安装,我们将需要测试它。
步骤 5 – 验证 FreeIPA 服务器功能
首先,通过尝试为管理员用户初始化一个 Kerberos 代币来验证 Kerberos 领域是否正确安装。
1kinit admin
如果工作正确,这应该提示您在安装过程中输入的IPA管理密码. 输入它,然后按ENTER
。
接下来,检查 IPA 服务器是否正常运行。
1ipa user-find admin
这应该印出以下内容:
1[secondary_label Output]
2--------------
31 user matched
4--------------
5 User login: admin
6 Last name: Administrator
7 Home directory: /home/admin
8 Login shell: /bin/bash
9 Principal alias: [email protected]
10 UID: 494800000
11 GID: 494800000
12 Account disabled: False
13----------------------------
14Number of entries returned 1
15----------------------------
我们还应该能够访问网页用户界面在https://ipa.example.com
。
美元(注)
** 注意**: TLS 证书将不受信任. 目前,我们只会绕过警告。 将来,您可以使用您最喜欢的 证书权威获取有效的 TLS 证书。 一旦您拥有该证书,您将需要将 CA 证书(通常是 ca.crt
)、证书文件(your_domain.crt
)和密钥文件( your_domain.key
)上传到服务器。
一旦您有檔案,請使用您先前設定的目錄管理器密碼安裝 CA。
1ipa-cacert-manage -p your_directory_manager_password -n httpcrt -t C,, install ca.crt
然后安装网站证书和密钥。
1ipa-server-certinstall -w -d your_domain.key your_domain.crt
您需要重新启动您的服务器,以便这些更改生效。
美元
在网页用户界面中,登录为管理员用户 用户名将是 admin和 Password将是您先前设置的IPA管理员密码。
最后,让我们通过添加新用户来探索FreeIPA的一些功能。
步骤 6 – 配置 IPA 用户
FreeIPA 具有非常广泛的用户管理和策略功能,类似于标准的 Unix 用户,FreeIPA 用户可以属于群组,可以允许或拒绝访问主机(客户机)或基于政策的主机组(主机组)。
本教程将简单地介绍如何添加新用户来让您开始。
若要添加用户,请单击身份
选项卡,然后单击用户
选项卡。这将显示一个用户表。单击表上方的添加
按钮以添加新用户。在打开的表格中填写所需的字段(如姓名和姓名),然后单击添加
以添加用户或添加和编辑
以配置高级细节。
可以通过点击原表中的用户来访问高级详细信息,这是管理员在查看用户的详细信息时看到的:
常规用户还可以登录IPA GUI,他们将能够查看自己的权限并编辑个人信息。
新用户将被要求在首次登录 IPA 机器时更改密码。这在 IPA GUI 和 SSH 上都有效。 一个有用的功能是添加 SSH 密钥的能力。 用户可以上传他们的公共 SSH 密钥,并将它们传播到 IPA 机器,允许无密码登录。 然后用户可以随时删除 SSH 密钥,而无需担心它仍然存在于单个服务器上。
结论
现在你有一个工作 FreeIPA 服务器,你需要 配置客户端来对它进行身份验证. 你可以遵循 这个 Ubuntu 16.04 FreeIPA 客户端教程或 这个 CentOS 7 FreeIPA 客户端教程来这样做。
您可以通过 FreeIPA GUI 或其 CLI 配置用户、群组和访问策略. Sudo 规则可以提供一个相对简单的方法来管理 root 访问. 对于更大的部署,建议设置多个 IPA 服务器以复制。
FreeIPA 是一个非常多功能的身份验证工具,接下来你需要做的很大程度上取决于你打算如何使用它。