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

FreeIPA是一个用于Linux的开源安全解决方案,提供帐户管理和集中式认证,类似于Microsoft的Active Directory。在本教程中,我们将在CentOS 7服务器上安装FreeIPA服务器。然后,您可以配置客户端计算机,允许FreeIPA用户使用其IPA凭据登录。

介绍

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凭据登录。

先决条件

要遵循本教程,您需要:
  • 一个CentOS 7服务器,至少有1 GB的RAM。默认情况下,CentOS 7仅使用root用户。因为我们将使用FreeIPA来管理用户,所以不必手动添加其他用户。您可以以root用户身份简单地按照本教程。
  • 您的服务器上启用了防火墙,您可以通过以下设置在CentOS 7教程中的其他建议的步骤防火墙一步 。强烈建议这样做,因为FreeIPA处理敏感的用户凭据。
  • 用于服务器和客户端的完全注册的域。 你可以购买一个Namecheap或得到一个免费Freenom
  • 为您的服务器设置以下DNS记录。您可以按照本教程的主机名有关如何添加这些细节。
    • 与您的服务器名称的A记录(如: ipa. example.com指向您的服务器的IPv4地址)。
    • 如果您希望通过IPv6访问服务器,则服务器名称指向您服务器的IPv6地址的AAA​​A记录。
  • 可选的, nano安装文本编辑器yum install nano 。 CentOS的自带的vi默认的文本编辑器,但nano可以更人性化。

第1步 - 准备IPA服务器

在我们开始安装任何东西之前,我们需要做一些事情,以确保服务器已准备好运行FreeIPA。具体来说,我们将设置服务器主机名,更新系统包,检查先决条件中的DNS记录是否已传播,并确保防火墙允许流量到FreeIPA。 首先,您的服务器的主机名将需要与您的完全限定域名(FQDN)匹配,FreeIPA才能正常工作。我们将使用ipa. example.com ipa. example.com作为本教程的FQDN。 您可以设置主机名,当您创建服务器或命令行设置创建服务器后,使用hostname命令:
hostname ipa.example.org
现在,更新包库yum
yum update
接下来,在防火墙中打开FreeIPA所需的端口。
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}
重新加载防火墙,以使更改生效。
firewall-cmd --reload
最后,您需要验证DNS名称是否正确解析。您可以使用dig命令这一点。 安装bind-utils包得到dig和其他DNS测试工具。
yum install bind-utils
然后使用dig检查的记录。
dig +short ipa.example.org A
这应该返回your_server_ipv4 。 如果启用IPv6,您可以以相同的方式测试AAAA记录。
dig +short ipa.example.org AAAA
这应该返回your_server_ipv6 。 您还可以测试反向查找。这将测试是否可以从IP地址解析主机名。
dig +short -x your_server_ipv4
dig +short -x your_server_ipv6
这些应该都返回ipa. example.com . ipa. example.com . FreeIPA大量使用DNS,因此在下一步中,我们将确保我们的服务器满足特定的DNS要求FreeIPA需要正常工作。

第2步 - 设置DNS

所有运行FreeIPA的计算机必须使用完全限定的域名(FQDN)作为它们的主机名,这是我们在上一步中设置的。此外,每个服务器的主机名必须解析为IP地址,而不是localhost注意 :如果您在您的局域网内的服务器上设置FreeIPA,使用私有IP地址来代替。 在DigitalOcean,你可以看到你的服务器的公网IP地址的控制面板 。 您也可以使用服务器的IP地址, ip命令。
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后出现。 如果启用了专用网络,您还可能会看到其他私有IP地址; 您可以忽略这些地址。 公共和私有IP地址区分,注意,私人IPv4地址将在以下范围: 192.168.*.*10.*.*.*172.16.*.*172.31.*.* 。 私人IPv6地址将总是以前缀开头fe80:: 。 现在,我们需要更改主机文件,将服务器的主机名指向其外部IP地址。 hosts文件, /etc/hosts ,映射域名到IP的计算机上本地地址。 有打开这个文件nano或您喜爱的文本编辑器。
nano /etc/hosts
寻找那些具有后您的服务器主机名行127.0.0.1
/ etc / hosts
. . .
# 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
. . .
更改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 / hosts
...
# The following lines are desirable for IPv6 capable hosts
::1 ipa.example.com ipa.example.com
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
...
更改::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地址,如果你使用一个。
修改/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实现其认证所需的加密功能。

第3步 - 配置随机数发生器

设置FreeIPA需要大量随机数据用于运行的加密操作。默认情况下,虚拟机将非常快地耗尽随机数据或熵。为了解决这个问题,我们将使用rngd ,软件随机数发生器。 rngd的工作原理是从连接到服务器的硬件设备获取数据并将其馈送到内核的随机数发生器。 首先,安装rngd
yum install rng-tools
然后启用它。
systemctl start rngd
确保服务在引导时自动启动。
systemctl enable rngd
最后,验证rngd运行。
systemctl status rngd
输出应包括active (running)的绿色。 随着所有依赖项配置和运行,我们可以继续安装FreeIPA服务器软件本身。

第4步 - 安装FreeIPA服务器

我们可以继续安装ipa-server ,该服务器FreeIPA包本身。
yum install ipa-server
然后运行FreeIPA安装命令。这将运行一个脚本,将提示您配置选项和安装FreeIPA。
ipa-server-install
除了身份验证之外,FreeIPA还能够管理主机的DNS记录。这可以使配置和管理主机更容易。在本教程中,我们不会使用FreeIPA的集成DNS。它不需要一个基本的设置。
Do you want to configure integrated DNS (BIND)? [no]: no
接下来,您需要输入服务器的主机名,域名和Kerberos域名。 Kerberos是一种认证协议,FreeIPA利用后台验证主机。强烈建议您使用您的域名作为Kerberos领域。使用不同的命名方案会导致FreeIPA Active Directory集成出现问题,并可能导致其他问题。 警告:不要用你的根域( 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管理员密码,将作为admin用户登录到FreeIPA时使用。强烈建议在这里使用安全的随机生成的密码,因为整个系统的安全性取决于它们。 确认配置。之后,安装程序将运行。
Continue to configure the system with these values? [no]: yes
安装过程可能需要几分钟,具体取决于服务器的速度。 现在我们有一个完整的服务器安装,我们将需要测试它。

第5步 - 验证FreeIPA服务器功能

首先,通过尝试为admin用户初始化Kerberos令牌来验证Kerberos领域是否正确安装。
kinit admin
如果正常工作,应该提示您输入在安装过程中输入的IPA管理员密码。键入它,然后按ENTER 。 接下来,验证IPA服务器是否正常工作。
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
----------------------------
我们也应该能够访问Web UI https://ipa. example.com https://ipa. example.com :TLS证书将是不可信的。 现在,我们将略过警告。 在未来,你可以用你喜欢的证书颁发机构获得一个有效的TLS证书。 一旦你拥有它,你需要将自己的CA证书(一般上传ca.crt ),证书文件( your_domain .crt )和密钥文件( your_domain .key )到服务器。 一旦您拥有这些文件,请使用您之前设置的目录管理器密码安装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中,以admin用户身份登录。用户名将会admin密码将是您先前设置的IPA管理员密码。 在页面的顶部会说验证...然后你会被带到主IPA页面,如下所示: FreeIPA UI主页 最后,让我们通过添加一个新用户来探索FreeIPA的一些功能。

第6步 - 配置IPA用户

FreeIPA有一套非常广泛的用户管理和策略功能。与标准Unix用户类似,FreeIPA用户可以属于组。可以根据策略允许或拒绝组或单个用户访问主机(客户端计算机)或主机组(主机组)。 FreeIPA也可以管理sudo访问;组或用户可以在主机或主机组上被授予sudo访问权限。 本教程将介绍如何添加新用户,以便您开始使用。 要添加用户,单击标识选项卡,然后单击用户 。 这将显示一个用户表。 点击+添加表格上面的按钮,添加一个新用户。 在打开的窗体所需的字段(如姓和名)填充,然后单击添加添加用户原样或添加和编辑配置高级的细节。 也可以通过单击原始表中的用户来访问高级详细信息。这是管理员在查看用户详细信息时看到的内容: FreeIPA UI用户编辑 普通用户还可以登录到IPA GUI。他们将能够查看自己的权限并编辑个人详细信息。 新用户在首次登录IPA计算机时将被要求更改密码。这在IPA GUI以及通过SSH工作。一个有用的功能是能够添加SSH密钥。用户可以上传他们的公共SSH密钥,并将它们传播到IPA机器,允许无密码登录。然后,用户可以随时删除SSH密钥,而无需担心它仍然存在于各个服务器上。

结论

现在,你有一个工作FreeIPA服务器,您需要将客户端配置 ,以反对进行身份验证。 Ubuntu和CentOS都有FreeIPA客户端的安装程序脚本,允许它们被轻松地配置。此外,FreeIPA是一个LDAP服务器。任何支持LDAP身份验证的服务都可以设置为对FreeIPA服务器进行身份验证。 您可以通过FreeIPA GUI或通过CLI配置用户,组和访问策略。 Sudo规则可以提供一种相对直接的方式来管理根访问。对于较大的部署,建议使用复制设置多个IPA服务器。最后,如果您想桥接到Windows环境中,可以设置对Active Directory服务器的信任。 FreeIPA是一个非常多才多艺的身份验证工具,你下一步需要做什么主要取决于你打算如何使用它。如需进一步资料,FreeIPA网站有一个文档资源列表