如何在 CentOS 7 上使用 FreeIPA 设置集中式 Linux 身份验证

介绍

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 客户端

前提条件

要遵循本教程,您将需要:

  • 一个带有您服务器名( 如 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

您需要重新启动您的服务器,以便这些更改生效。

美元

在网页用户界面中,登录为管理员用户 用户名将是 adminPassword将是您先前设置的IPA管理员密码。

FreeIPA UI main page

最后,让我们通过添加新用户来探索FreeIPA的一些功能。

步骤 6 – 配置 IPA 用户

FreeIPA 具有非常广泛的用户管理和策略功能,类似于标准的 Unix 用户,FreeIPA 用户可以属于群组,可以允许或拒绝访问主机(客户机)或基于政策的主机组(主机组)。

本教程将简单地介绍如何添加新用户来让您开始。

若要添加用户,请单击身份选项卡,然后单击用户选项卡。这将显示一个用户表。单击表上方的添加按钮以添加新用户。在打开的表格中填写所需的字段(如姓名和姓名),然后单击添加以添加用户或添加和编辑以配置高级细节。

可以通过点击原表中的用户来访问高级详细信息,这是管理员在查看用户的详细信息时看到的:

FreeIPA UI user edit

常规用户还可以登录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 是一个非常多功能的身份验证工具,接下来你需要做的很大程度上取决于你打算如何使用它。

Published At
Categories with 技术
Tagged with
comments powered by Disqus