在未部署统一身份管理系统时,管理员需要分别在每一台主机上为对应的系统管理员创建、维护账号和密码,无法进行统一的管理。当主机数量增加到一定程度后,也将难以进行有效的安全管理,对账号密码泄露等问题难以进行控制。统一身份认证系统可以帮助我们解决这一问题。Windows环境下可以使用域账号进行身份管理,而在Linux环境下,Freeipa可以快速、便捷的将linux系统接入,进行统一的身份认证和权限管理。
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凭据登录。
要学习本教程,您需要:
在我们开始安装之前,我们需要做一些事情来确保服务器已准备好运行FreeIPA。具体来说,我们将设置服务器主机名,更新系统包,检查准备中的DNS记录是否已记录,并确保防火墙允许FreeIPA流量。
首先,服务器的主机名需要与FreeIPA的完全限定域名(FQDN)匹配才能正常工作。我们将在本教程中将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
来检查A记录。
dig +short ipa.example.org A
这应该会返回你的服务器IP地址。
您还可以测试反向查找,测试您是否可以从IP地址解析主机名。
dig +short -x your_server_ipv4
这些都应该指向你的域名。在下一步中,我们将确保我们的服务器满足FreeIPA正常工作所需的特定DNS要求。
运行FreeIPA的所有计算机必须使用完全限定的域名(FQDN)作为我们在上一步中设置的主机名。此外,每个服务器的主机名必须解析为其IP地址,而不是localhost。
注意:如果要在内网的服务器上设置FreeIPA,请改用私有IP。
在腾讯云CVM上,您可以在控制台上看到服务器的公共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之后,现在我们需要更改主机文件,将服务器的主机名指向其外部IP地址。hosts文件/etc/hosts
将域名映射到计算机本地的IP地址。用nano
或您喜欢的文本编辑器打开此文件。
nano /etc/hosts
在以下位置127.0.0.1
之后查找包含服务器主机名的行:
. . .
# 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地址。
. . .
# 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行。
...
# 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地址。
...
# 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地址。
...
# 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
...
同样,如果您正在使用IPv6地址,请更改::1 ${fqdn} ${hostname}
行以使用您的IPv6地址。
...
# 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
。
yum install rng-tools
然后启用它。
systemctl start rngd
确保服务在引导时自动启动。
systemctl enable rngd
最后,验证rngd是否正在运行。
systemctl status rngd
输出应包括active (running)
,字体为绿色。
在配置了所有依赖项并运行后,我们可以继续安装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管理员密码,将在以管理员用户身份登录FreeIPA时使用。强烈建议使用安全随机生成的密码,因为整个系统的安全性取决于它们。
确认配置。在此之后,安装程序将运行。
Continue to configure the system with these values? [no]: yes
安装过程可能需要几分钟,具体取决于服务器的速度。现在我们已完成服务安装,我们需要对其进行测试。
首先,通过尝试为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
。
注意:TLS证书不受信任。我们绕过警告。将来,您可以使用腾讯云免费SSL获取有效的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管理员密码。页面顶部将显示Authenticating...然后您将进入主IPA页面,如下所示:
最后,让我们通过添加新用户来探索FreeIPA的一些功能。
FreeIPA拥有非常广泛的用户管理和策略功能。与标准Unix用户类似,FreeIPA用户可以属于组。可以允许或拒绝组或个人用户基于策略访问主机(客户端计算机)或主机组(主机组)。FreeIPA还可以管理sudo访问,可以在主机或主机组上授予组或用户sudo访问权限。
本教程将介绍如何添加新用户以帮助您入门。
要添加用户,请单击“ 标识”选项卡,然后单击“用户”。这将显示一个用户表。单击表格上方的+添加按钮以添加新用户。在打开的表单中填写必填字段(如名字和姓氏),然后单击添加以按原样添加用户或添加和编辑以配置高级详细信息。
单击原始表中的用户也可以访问高级详细信息。这是管理员在查看用户详细信息时看到的内容:
普通用户也可以登录IPA GUI。他们将能够查看自己的权限并编辑个人详细信息。
首次登录IPA计算机时,系统会要求新用户更改密码。这适用于IPA GUI以及SSH。IPA可以添加添加SSH密钥的能力。用户可以上传他们的公共SSH密钥并将它们传播到IPA机器,允许无密码登录。然后,用户可以随时删除SSH密钥,无需担心它仍存在于各个服务器上。
您可以通过FreeIPA GUI配置用户、组和访问策略以及Sudo规则。FreeIPA提供一种相对简单的方法来管理root访问。对于较大的部署,建议使用复制设置多个IPA服务器。更多Linux教程请前往腾讯云+社区学习更多知识。
参考文献:《How To Set Up Centralized Linux Authentication with FreeIPA on CentOS 7》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。