介绍
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地址的AAAA记录。
- 与您的服务器名称的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
这应该产生类似以下的输出:
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地址
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。它不需要一个基本的设置。
Installation script promptDo you want to configure integrated DNS (BIND)? [no]: no
接下来,您需要输入服务器的主机名,域名和Kerberos域名。 Kerberos是一种认证协议,FreeIPA利用后台验证主机。强烈建议您使用您的域名作为Kerberos领域。使用不同的命名方案会导致FreeIPA Active Directory集成出现问题,并可能导致其他问题。
警告:不要用你的根域( example.com
)作为您的IPA域名。这可能会导致DNS问题。
Installation script promptServer 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时使用。强烈建议在这里使用安全的随机生成的密码,因为整个系统的安全性取决于它们。 确认配置。之后,安装程序将运行。
Installation script promptContinue to configure the system with these values? [no]: yes
安装过程可能需要几分钟,具体取决于服务器的速度。 现在我们有一个完整的服务器安装,我们将需要测试它。
第5步 - 验证FreeIPA服务器功能
首先,通过尝试为admin用户初始化Kerberos令牌来验证Kerberos领域是否正确安装。kinit admin
如果正常工作,应该提示您输入在安装过程中输入的IPA管理员密码。键入它,然后按
ENTER
。 接下来,验证IPA服务器是否正常工作。
ipa user-find admin
这应该打印出以下内容:
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
----------------------------
我们也应该能够访问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的一些功能。