前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介
FreeIPA 是一个针对 Linux 的开源安全解决方案,提供帐户管理和集中式身份验证,类似于微软的 Active Directory。FreeIPA 基于多个开源项目构建,包括 389 目录服务器、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 客户端,或者在 CentOS 7 上配置 FreeIPA 客户端。
先决条件
要按照本教程操作,您需要:
-
一台至少具有 1GB RAM 的 CentOS 7 服务器。默认情况下,CentOS 7 只使用 root 用户。因为我们将使用 FreeIPA 管理用户,所以不需要手动添加另一个用户。您可以简单地按照本教程使用 root 用户。
-
服务器上启用了防火墙,您可以按照 CentOS 7 教程中的防火墙步骤进行设置。这是强烈建议的,因为 FreeIPA 处理敏感用户凭据。
-
完全注册的域,用于服务器和客户端。您可以在 Namecheap 上购买一个,或者在 Freenom 上免费获取一个。
-
为您的服务器设置以下 DNS 记录。您可以按照主机名教程中的详细信息进行设置。
- 一个 A 记录,将您的服务器名称(例如
ipa.example.com
)指向您服务器的 IPv4 地址。 - 一个 AAAA 记录,将您的服务器名称指向您服务器的 IPv6 地址,如果您希望通过 IPv6 访问您的服务器。
- 一个 A 记录,将您的服务器名称(例如
-
可选地,使用
yum install nano
安装nano
文本编辑器。CentOS 默认使用vi
文本编辑器,但nano
可能更加用户友好。
步骤 1 --- 准备 IPA 服务器
在开始安装任何内容之前,我们需要做一些事情,以确保服务器准备好运行 FreeIPA。具体来说,我们将设置服务器主机名,更新系统软件包,检查先决条件中的 DNS 记录是否已传播,并确保防火墙允许流量到 FreeIPA。
首先,您的服务器的主机名需要与您的完全合格域名(FQDN)匹配,以使 FreeIPA 正常工作。在本教程中,我们将使用 ipa.example.com
作为 FQDN。
您可以在创建服务器时设置主机名,也可以在创建服务器后使用 hostname
命令从命令行设置主机名:
super_user
hostname ipa.example.org
现在,使用 yum
更新软件包存储库。
super_user
yum update
接下来,在防火墙中打开 FreeIPA 所需的端口。
super_user
firewall-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}
重新加载防火墙,以使更改生效。
super_user
firewall-cmd --reload
最后,您需要验证 DNS 名称是否正确解析。您可以使用 dig
命令进行此操作。安装 bind-utils
软件包以获取 dig
和其他 DNS 测试实用程序。
super_user
yum install bind-utils
然后使用 dig
检查 A 记录。
super_user
dig +short ipa.example.org A
这应该返回 your_server_ipv4
。
如果启用了 IPv6,您可以以相同的方式测试 AAAA 记录。
super_user
dig +short ipa.example.org AAAA
这应该返回 your_server_ipv6
。
您还可以测试反向查找。这会测试您是否可以从 IP 地址解析主机名。
super_user
dig +short -x your_server_ipv4
dig +short -x your_server_ipv6
这两者都应返回 ipa.example.com.
FreeIPA 大量使用 DNS,因此在下一步中,我们将确保我们的服务器满足 FreeIPA 正常工作所需的特定 DNS 要求。
步骤 2 --- 设置 DNS
所有运行 FreeIPA 的机器必须使用完全合格的域名(FQDN)作为其主机名,这是我们在上一步中设置的。此外,每台服务器的主机名必须解析到其 IP 地址,而不是解析为 localhost
。
在 DigitalOcean 上,您可以在控制面板上查看服务器的公共 IP 地址。您也可以使用 ip
命令找到服务器的 IP 地址。
super_user
ip addr show
这应该产生类似以下的输出:
. . .
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 地址直接出现在 inet 之后,如果启用了 IPv6,则在 inet6 之后出现 IPv6 地址。如果启用了私有网络,您可能还会看到其他私有 IP 地址;您可以忽略这些地址。要区分公共和私有 IP 地址,注意私有 IPv4 地址将在以下范围内:192.168.*.*
、10.*.*.*
或 172.16.*.*
到 172.31.*.*
。私有 IPv6 地址将始终以前缀 fe80::
开头。
现在,我们需要更改主机文件,将服务器的主机名指向其外部 IP 地址。主机文件 /etc/hosts
在本地将域名映射到 IP 地址。使用 nano
或您喜欢的文本编辑器打开此文件。
super_user
nano /etc/hosts
查找在 127.0.0.1
之后具有您服务器主机名的行:
. . .
```markdown
# 以下内容适用于支持 IPv4 的主机
127.0.0.1 ipa.example.com ipa.example.com
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
. . .
将 127.0.0.1
更改为您的服务器 IPv4 地址。
markdown
. . .
# 以下内容适用于支持 IPv4 的主机
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
行更改为您的主机名。
markdown
...
# 以下内容适用于支持 IPv6 的主机
::1 ipa.example.com ipa.example.com
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
...
将 ::1
更改为您的服务器 IPv6 地址。
markdown
...
# 以下内容适用于支持 IPv6 的主机
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
。为了使此配置更改永久生效,我们还需要在该文件中进行类似的更改。
打开文件。
markdown
super_user
nano /etc/cloud/templates/hosts.redhat.tmpl
将 127.0.0.1 ${fqdn} ${hostname}
行更改为使用您的服务器 IPv4 地址。
markdown
...
# 以下内容适用于支持 IPv4 的主机
your_server_ipv4 ${fqdn} ${hostname}
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
...
类似地,如果您使用 IPv6,将 ::1 ${fqdn} ${hostname}
行更改为使用您的 IPv6 地址。
markdown
...
# 以下内容适用于支持 IPv6 的主机
your_server_ipv6 ${fqdn} ${hostname}
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
...
退出并保存文件。
接下来,我们将配置 CentOS 中的随机数生成器。这将允许 FreeIPA 执行所需的身份验证加密功能。
步骤 3 --- 配置随机数生成器
设置 FreeIPA 需要大量随机数据来运行的加密操作。默认情况下,虚拟机会很快耗尽随机数据或熵。为了解决这个问题,我们将使用 rngd
,一个软件随机数生成器。rngd
通过从服务器连接的硬件设备获取数据并将其输入到内核的随机数生成器中来工作。
首先,安装 rngd
。
markdown
super_user
yum install rng-tools
然后启用它。
markdown
super_user
systemctl start rngd
确保服务在启动时自动启动。
markdown
super_user
systemctl enable rngd
最后,验证 rngd
是否正在运行。
markdown
command
systemctl status rngd
输出应包含绿色的 active (running)
。
所有依赖项配置并正常运行后,我们可以继续安装 FreeIPA 服务器软件本身。
步骤 4 --- 安装 FreeIPA 服务器
我们可以继续安装 ipa-server
,即 FreeIPA 服务器软件包本身。
markdown
super_user
yum install ipa-server
然后运行 FreeIPA 安装命令。这将运行一个脚本,提示您进行配置选项并安装 FreeIPA。
markdown
super_user
ipa-server-install
除了身份验证外,FreeIPA 还具有管理主机的 DNS 记录的功能。这可以使主机的配置和管理更加简单。在本教程中,我们将不使用 FreeIPA 的集成 DNS。这对于基本设置是不需要的。
markdown
[secondary_label 安装脚本提示]
Do you want to configure integrated DNS (BIND)? [no]: no
接下来,您需要输入服务器的主机名、域名和 Kerberos 领域名称。Kerberos 是 FreeIPA 在幕后用于对主机机器进行身份验证的认证协议。强烈建议您将域名用作 Kerberos 领域名称。使用不同的命名方案将导致 FreeIPA 与 Active Directory 集成出现问题,并可能引起其他问题。
markdown
[secondary_label 安装脚本提示]
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。在这里使用安全的随机生成密码是非常推荐的,因为整个系统的安全性取决于它们。
确认配置。之后,安装程序将运行。
markdown
[secondary_label 安装脚本提示]
Continue to configure the system with these values? [no]: yes
安装过程可能需要几分钟,具体取决于服务器的速度。
现在我们已经完成了服务器安装,我们需要对其进行测试。
## 步骤 5 --- 验证 FreeIPA 服务器功能
首先,通过尝试为 admin 用户初始化 Kerberos 令牌来验证 Kerberos 领域是否正确安装。
```super_user
kinit admin
如果工作正常,这应该会提示您输入安装过程中输入的 IPA 管理员密码。输入密码,然后按 ENTER
。
接下来,验证 IPA 服务器是否正常运行。
super_user
ipa user-find admin
这应该会打印出以下内容:
--------------
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
----------------------------
我们还应该能够在 https://ipa.example.com
访问 web UI。
在 web UI 中,以 admin 用户身份登录。用户名 将是 admin ,密码 将是您之前设置的 IPA 管理员密码。页面顶部将显示 Authenticating...,然后您将被带到主 IPA 页面,看起来像这样:
!FreeIPA UI 主页面
最后,让我们通过添加新用户来探索一些 FreeIPA 的功能。
步骤 6 --- 配置 IPA 用户
FreeIPA 拥有非常丰富的用户管理和策略功能。与标准的 Unix 用户类似,FreeIPA 用户可以属于组。基于策略,可以允许或拒绝组或个别用户访问主机(客户端机器)或主机组(hostgroups)。FreeIPA 还可以管理 sudo 访问;可以在主机或主机组上授予组或用户 sudo 访问权限。
本教程将简要介绍如何添加新用户以帮助您入门。
要添加用户,请单击 Identity 选项卡,然后单击 Users 。这将显示一个用户表。单击表格上方的 + Add 按钮以添加新用户。在打开的表单中填写必填字段(如名和姓),然后单击 Add 以添加用户,或者单击 Add and edit 以配置高级详细信息。
管理员也可以通过单击原始表中的用户来访问高级详细信息。这是管理员在查看用户详细信息时看到的内容:
!FreeIPA UI 用户编辑
普通用户也可以登录到 IPA GUI。他们将能够查看自己的权限并编辑个人详细信息。
新用户在首次登录到 IPA 机器时将被要求更改密码。这在 IPA GUI 中以及通过 SSH 上也适用。一个有用的功能是能够添加 SSH 密钥。用户可以上传他们的公共 SSH 密钥,并使其传播到 IPA 机器,从而实现无密码登录。用户随时可以删除 SSH 密钥,而无需担心它仍然存在于各个服务器上。
结论
现在您已经拥有一个可用的 FreeIPA 服务器,您需要配置客户端以对其进行身份验证。您可以按照此 Ubuntu 16.04 FreeIPA 客户端教程或此 CentOS 7 FreeIPA 客户端教程进行操作。此外,FreeIPA 是一个 LDAP 服务器。任何支持 LDAP 认证的服务都可以设置为针对您的 FreeIPA 服务器进行身份验证。
您可以通过 FreeIPA GUI 或其 CLI 配置用户、组和访问策略。Sudo 规则可以提供一个相对简单的方式来管理 root 访问权限。对于较大的部署,建议设置多个 IPA 服务器进行复制。最后,如果您希望与 Windows 环境进行桥接,可以建立与 Active Directory 服务器的信任关系。
FreeIPA 是一个非常多才多艺的身份验证工具,您接下来需要做的事取决于您打算如何使用它。有关更多信息,请访问 FreeIPA 网站上的文档资源列表。