FreeIPA是 Linux 的开源安全解决方案,提供帐户管理和集中身份验证,类似于 Microsoft 的 Active Directory。 FreeIPA 构建在多个开源项目之上,包括 389 Directory Server、MIT Kerberos 和 SSSD。
FreeIPA 有 CentOS 7、Fedora 和 Ubuntu 14.04/16.04 的客户端。这些客户端使将计算机添加到 IPA 域变得相当简单。其他操作系统可以使用 SSSD 或 LDAP 针对 FreeIPA 进行身份验证。
在本教程中,我们将在 CentOS 7 服务器上安装 FreeIPA 服务器。然后,您可以配置客户端计算机,允许 FreeIPA 用户使用其 IPA 凭据登录。
完成本教程后,您可以在 Ubuntu 16.04 上配置 FreeIPA 客户端 or 在 CentOS 7 上配置 FreeIPA 客户端.
要学习本教程,您将需要:
-
一台 CentOS 7 服务器,至少具有 1 GB RAM。默认情况下,CentOS 7仅使用root用户。由于我们将使用 FreeIPA 来管理用户,因此无需手动添加其他用户。您只需以 root 用户身份遵循本教程即可。
-
您的服务器上启用了防火墙,您可以按照以下步骤进行设置CentOS 7 教程的其他推荐步骤中的防火墙步骤。强烈建议这样做,因为 FreeIPA 处理敏感的用户凭据。
-
用于服务器和客户端的完全注册域。您可以在名称廉价或免费获得一份Freenom.
-
为您的服务器设置以下 DNS 记录。您可以关注这个主机名教程有关如何添加它们的详细信息。
- An A record with your server name (e.g.
ipa.example.com
) pointing to your server’s IPv4 address.
- 如果您希望通过 IPv6 访问您的服务器,则您的服务器名称指向您服务器的 IPv6 地址的 AAAA 记录。
-
可选地,nano
文本编辑器安装有yum install nano
。 CentOS 附带vi
默认情况下是文本编辑器,但是nano
可以更加用户友好。
在开始安装任何东西之前,我们需要做一些事情来确保服务器准备好运行 FreeIPA。具体来说,我们将设置服务器主机名、更新系统软件包、检查先决条件中的 DNS 记录是否已传播,并确保防火墙允许流向 FreeIPA 的流量。
To begin, the hostname of your server will need to match your fully qualified domain name (FQDN) for FreeIPA to work correctly. We’ll be using ipa.example.com
as the FQDN throughout this tutorial.
您可以在创建服务器时设置主机名,也可以在创建服务器后从命令行设置主机名,使用hostname
命令:
现在,更新包存储库yum
.
接下来,在防火墙中打开 FreeIPA 所需的端口。
- 防火墙命令- 永恒的--添加端口={80/tcp,443/tcp,389/tcp,636/tcp,88/tcp,464/tcp,53/tcp,88/udp,464/udp,53/udp,123/udp}
重新加载防火墙以使更改生效。
最后,您需要验证 DNS 名称是否正确解析。您可以使用dig
为此的命令。安装bind-utils
包获取dig
和其他 DNS 测试实用程序。
然后使用dig
检查A记录。
-
dig +short ipa.example.org A
This should return your_server_ipv4
.
如果启用了 IPv6,则可以以相同的方式测试 AAAA 记录。
-
dig +short ipa.example.org AAAA
This should return your_server_ipv6
.
您还可以测试反向查找。这测试您是否可以从 IP 地址解析主机名。
-
dig +short -x your_server_ipv4
-
dig +short -x your_server_ipv6
These should both return ipa.example.com.
FreeIPA 大量使用 DNS,因此在下一步中,我们将确保我们的服务器满足 FreeIPA 正常工作所需的特定 DNS 要求。
所有运行 FreeIPA 的计算机都必须使用我们在上一步中设置的完全限定域名 (FQDN) 作为主机名。此外,每个服务器的主机名必须解析为其 IP 地址,而不是localhost
.
Note:如果您要在 LAN 内的服务器上设置 FreeIPA,请改用私有 IP。
在DigitalOcean上,您可以在以下位置看到您服务器的公共IP地址:控制面板。您还可以使用以下命令查找服务器 IP 地址ip
命令。
这应该产生类似于以下内容的输出:
Output
. . .
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
inet 111.111.111.111/18 brd 111.111.111.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 1111:1111:1111:1111::1111:1111/64 scope global
valid_lft forever preferred_lft forever
. . .
IPv4 地址直接出现在inetIPv6 地址(如果您已启用)将出现在inet6。如果您启用了专用网络,您还可能会看到其他专用 IP 地址;您可以忽略这些地址。要区分公共 IP 地址和私有 IP 地址,请注意私有 IPv4 地址将在以下范围内:192.168.*.*
, 10.*.*.*
, or 172.16.*.*
to 172.31.*.*
。私有 IPv6 地址将始终以前缀开头fe80::
.
现在我们需要更改主机文件,将服务器的主机名指向其外部 IP 地址。主机文件,/etc/hosts
,将域名映射到计算机本地的 IP 地址。打开此文件nano
或您最喜欢的文本编辑器。
查找后面包含您的服务器主机名的行127.0.0.1
:
/etc/主机
. . .
# The following lines are desirable for IPv4 capable hosts
127.0.0.1 ipa.example.com ipa.example.com
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
. . .
Change 127.0.01
到您的服务器 IPv4 地址。
修改/etc/hosts
. . .
# The following lines are desirable for IPv4 capable hosts
your_server_ipv4 ipa.example.com ipa.example.com
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
. . .
如果您启用了 IPv6,您还需要编辑 IPv6 映射,更改::1
与您的主机名一致。
/etc/主机
...
# The following lines are desirable for IPv6 capable hosts
::1 ipa.example.com ipa.example.com
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
...
Change ::1
到您的服务器 IPv6 地址。
修改/etc/hosts
...
# The following lines are desirable for IPv6 capable hosts
your_server_ipv6 ipa.example.com ipa.example.com
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
...
保存并退出文件。
默认情况下,每次系统启动时。 CentOS使用的配置是/etc/cloud/templates/hosts.redhat.tmpl
生成/etc/hosts
。为了使此配置更改永久生效,我们还需要在该文件中进行类似的更改。
打开文件。
-
nano/etc/cloud/templates/hosts.redhat.tmpl
改变127.0.0.1 ${fqdn} ${hostname}
行使用您的服务器 IPv4 地址。
修改/etc/cloud/templates/hosts.redhat.tmpl
...
# The following lines are desirable for IPv4 capable hosts
your_server_ipv4 ${fqdn} ${hostname}
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
...
同样,更改::1 ${fqdn} ${hostname}
行来使用您的 IPv6 地址(如果您正在使用 IPv6 地址)。
修改/etc/cloud/templates/hosts.redhat.tmpl
...
# The following lines are desirable for IPv6 capable hosts
your_server_ipv6 ${fqdn} ${hostname}
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
...
退出并保存文件。
接下来我们将在 CentOS 中配置随机数生成器。这将允许 FreeIPA 执行身份验证所需的加密功能。
设置 FreeIPA 需要大量随机数据来执行其运行的加密操作。默认情况下,虚拟机将很快耗尽随机数据或熵。为了解决这个问题,我们将使用rngd
,一个软件随机数生成器。rngd
其工作原理是从连接到服务器的硬件设备获取数据并将其输入内核的随机数生成器。
首先,安装rngd
.
然后启用它。
确保该服务在启动时自动启动。
最后验证一下rngd
在跑。
输出应包括active (running)
为绿色。
配置完所有依赖项并使其正常运行后,我们可以继续安装 FreeIPA 服务器软件本身。
我们可以继续安装ipa-server
,FreeIPA 服务器包本身。
然后运行FreeIPA安装命令。这将运行一个脚本,提示您配置选项并安装 FreeIPA。
除了身份验证之外,FreeIPA 还能够管理主机的 DNS 记录。这可以使主机的配置和管理变得更加容易。在本教程中,我们不会使用 FreeIPA 的集成 DNS。基本设置不需要它。
安装脚本提示
Do you want to configure integrated DNS (BIND)? [no]: no
接下来,您需要输入服务器的主机名、域名和 Kerberos 领域名称。 Kerberos 是一种身份验证协议,FreeIPA 在后台使用它来验证主机。强烈建议您使用您的域名作为 Kerberos 领域。使用不同的命名方案将导致 FreeIPA 的 Active Directory 集成出现问题,并可能导致其他问题。
Warning:不要使用您的根域(example.com
) 作为您的 IPA 域名。这可能会导致 DNS 问题。
安装脚本提示
Server host name [ipa.example.org]: ipa.example.org
Please confirm the domain name [example.org]: ipa.example.org
Please provide a realm name [EXAMPLE.ORG]: IPA.EXAMPLE.ORG
接下来,为 LDAP 目录管理器创建密码。这是 FreeIPA 的 LDAP 功能所需要的。然后是 IPA 管理员密码,以管理员用户身份登录 FreeIPA 时将使用该密码。强烈建议在这里使用安全的随机生成的密码,因为整个系统的安全取决于它们。
确认配置。之后,安装程序将运行。
安装脚本提示
Continue to configure the system with these values? [no]: yes
安装过程可能需要几分钟时间,具体取决于服务器的速度。
现在我们已经完成了服务器安装,我们需要对其进行测试。
首先,通过尝试为管理员用户初始化 Kerberos 令牌来验证 Kerberos 领域是否已正确安装。
如果工作正常,这将提示您输入在安装过程中输入的 IPA 管理员密码。输入它,然后按ENTER
.
接下来,验证 IPA 服务器是否正常运行。
这应该打印出以下内容:
Output
--------------
1 user matched
--------------
User login: admin
Last name: Administrator
Home directory: /home/admin
Login shell: /bin/bash
Principal alias: admin@IPA.EXAMPLE.COM
UID: 494800000
GID: 494800000
Account disabled: False
----------------------------
Number of entries returned 1
----------------------------
We should also be able to access the web UI at https://ipa.example.com
.
Note: The TLS certificate will be untrusted. For now, we’ll just bypass the warnings. In the future, you can use your favorite certificate authority to get a valid TLS certificate. Once you have it, you’ll need to upload your CA certificate (usually ca.crt
), certificate file (your_domain.crt
), and key file ( your_domain.key
) to the server.
获得文件后,使用您之前设置的目录管理器密码安装 CA。您可以在命令前面添加一个空格,以防止将其保存到 shell 历史记录中。
- ipa-cacert-manage -p your_directory_manager_password -n httpcrt -t C,, install ca.crt
然后安装站点证书和密钥。
- ipa-server-certinstall -w -d your_domain.key your_domain.crt
您需要重新启动服务器才能使这些更改生效。
在 Web UI 中,以管理员用户身份登录。Username将admin and Password将是您之前设置的 IPA 管理员密码。页面顶部会说正在验证...然后您将进入 IPA 主页面,如下所示:
最后,让我们通过添加新用户来探索 FreeIPA 的一些功能。
FreeIPA 具有非常广泛的用户管理和策略功能集。与标准 Unix 用户类似,FreeIPA 用户可以属于组。根据策略,可以允许或拒绝组或个人用户访问主机(客户端计算机)或主机组(主机组)。 FreeIPA 还可以管理 sudo 访问;可以授予组或用户对主机或主机组的 sudo 访问权限。
本教程将介绍如何添加新用户以帮助您入门。
要添加用户,请单击Identity选项卡并单击Users。这将显示一个用户表。点击+ Add表格上方的按钮可添加新用户。在打开的表单中填写必填字段(例如名字和姓氏),然后单击Add按原样添加用户或添加和编辑配置高级详细信息。
还可以通过单击原始表中的用户来访问高级详细信息。这是管理员在查看用户详细信息时看到的内容:
普通用户也可以登录 IPA GUI。他们将能够查看自己的权限并编辑个人详细信息。
新用户首次登录 IPA 计算机时将被要求更改密码。这适用于 IPA GUI 以及 SSH。一项有用的功能是添加 SSH 密钥的能力。用户可以上传他们的公共 SSH 密钥并将其传播到 IPA 计算机,从而允许无密码登录。然后,用户可以随时删除 SSH 密钥,而不必担心它仍然存在于各个服务器上。
现在您已经有了一个可用的 FreeIPA 服务器,您将需要配置客户端对其进行身份验证。您可以关注Ubuntu 16.04 FreeIPA 客户端教程 or 这个 CentOS 7 FreeIPA 客户端教程这样做。此外,FreeIPA 是一个 LDAP 服务器。任何支持 LDAP 身份验证的服务都可以设置为针对您的 FreeIPA 服务器进行身份验证。
您可以通过 FreeIPA GUI 或其 CLI 配置用户、组和访问策略。 Sudo 规则可以提供一种相对简单的方式来管理 root 访问。对于大型部署,建议设置多个具有复制功能的 IPA 服务器。最后,如果您想桥接到 Windows 环境,您可以建立对 Active Directory 服务器的信任。
FreeIPA 是一种极其通用的身份验证工具,您接下来需要做什么很大程度上取决于您打算如何使用它。如需了解更多信息,请访问 FreeIPA 网站文档资源列表.