前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用FreeIPA对Linux用户权限统一管理

使用FreeIPA对Linux用户权限统一管理

原创
作者头像
大瓜皮
发布2018-08-01 16:41:18
7.2K0
发布2018-08-01 16:41:18
举报

介绍

在未部署统一身份管理系统时,管理员需要分别在每一台主机上为对应的系统管理员创建、维护账号和密码,无法进行统一的管理。当主机数量增加到一定程度后,也将难以进行有效的安全管理,对账号密码泄露等问题难以进行控制。统一身份认证系统可以帮助我们解决这一问题。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凭据登录。

准备

要学习本教程,您需要:

  • 一台已经设置好可以使用root账号的CentOS服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器
  • 在您的服务器上启用防火墙,如果您使用的是腾讯云的服务器,可以参考腾讯云CVM安全组进行设置。
  • 如果你没有域名,建议您先去这里注册一个域名,您需要将域名解析到您的服务器,您可以使用腾讯云云解析进行快速设置。本教程中,你需要将你的域名A记录指向你的CVM的IP地址。

第一步、准备IPA服务器

在我们开始安装之前,我们需要做一些事情来确保服务器已准备好运行FreeIPA。具体来说,我们将设置服务器主机名,更新系统包,检查准备中的DNS记录是否已记录,并确保防火墙允许FreeIPA流量。

首先,服务器的主机名需要与FreeIPA的完全限定域名(FQDN)匹配才能正常工作。我们将在本教程中将ipa.example.com用作FQDN。

您可以在创建服务器时设置主机名,也可以在创建服务器后从命令行设置主机名,使用hostname命令:

代码语言:javascript
复制
hostname ipa.example.org

现在,用yum更新存储库。

代码语言:javascript
复制
yum update

接下来,在防火墙中打开FreeIPA所需的端口。如果您使用的是腾讯云的安全组,则不需要再此设置,请前往控制台进行配置。

代码语言:javascript
复制
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}

重新加载防火墙,以使更改生效。

代码语言:javascript
复制
firewall-cmd --reload

最后,您需要验证DNS名称是否正确解析。您可以使用dig命令。安装bind-utils包以获取dig和其他DNS测试实用程序。

代码语言:javascript
复制
yum install bind-utils

然后用dig来检查A记录。

代码语言:javascript
复制
dig +short ipa.example.org A

这应该会返回你的服务器IP地址。

您还可以测试反向查找,测试您是否可以从IP地址解析主机名。

代码语言:javascript
复制
dig +short -x your_server_ipv4

这些都应该指向你的域名。在下一步中,我们将确保我们的服务器满足FreeIPA正常工作所需的特定DNS要求。

第二步、设置DNS

运行FreeIPA的所有计算机必须使用完全限定的域名(FQDN)作为我们在上一步中设置的主机名。此外,每个服务器的主机名必须解析为其IP地址,而不是localhost。

注意:如果要在内网的服务器上设置FreeIPA,请改用私有IP。

在腾讯云CVM上,您可以在控制台上看到服务器的公共IP地址。您还可以使用ip命令查找服务器IP地址。

代码语言:javascript
复制
ip addr show

类似输出如下:

代码语言:javascript
复制
. . .
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或您喜欢的文本编辑器打开此文件。

代码语言:javascript
复制
nano /etc/hosts

在以下位置127.0.0.1之后查找包含服务器主机名的行:

代码语言:javascript
复制
. . .
# 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地址。

代码语言:javascript
复制
. . .
# 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行。

代码语言:javascript
复制
...
# 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地址。

代码语言:javascript
复制
...
# 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。要使此配置更改为永久更改,我们还需要在该文件中进行类似的更改。

打开文件。

代码语言:javascript
复制
nano /etc/cloud/templates/hosts.redhat.tmpl

更改127.0.0.1 \${fqdn} \${hostname}行以使用您的服务器IPv4地址。

代码语言:javascript
复制
...
# 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地址。

代码语言:javascript
复制
...
# 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

代码语言:javascript
复制
yum install rng-tools

然后启用它。

代码语言:javascript
复制
systemctl start rngd

确保服务在引导时自动启动。

代码语言:javascript
复制
systemctl enable rngd

最后,验证rngd是否正在运行。

代码语言:javascript
复制
systemctl status rngd

输出应包括active (running),字体为绿色。

在配置了所有依赖项并运行后,我们可以继续安装FreeIPA服务器软件本身。

第四步、安装FreeIPA服务

我们可以继续安装ipa-server,也就是FreeIPA服务。

代码语言:javascript
复制
yum install ipa-server

然后运行FreeIPA安装命令。这将运行一个脚本,提示您输入配置选项并安装FreeIPA。

代码语言:javascript
复制
ipa-server-install

除了身份验证,FreeIPA还能够管理主机的DNS记录。这可以使配置和管理主机更容易。在本教程中,我们不会使用FreeIPA的集成DNS,因为基本用不到它。

代码语言:javascript
复制
Do you want to configure integrated DNS (BIND)? [no]: no

接下来,您需要输入服务器的主机名、域名和Kerberos域名。Kerberos是一种身份验证协议,FreeIPA利用这些协议来验证主机的身份。强烈建议您使用域名作为Kerberos域。使用不同的命名方案将导致FreeIPA的Active Directory集成出现问题,并可能导致其他问题。

警告:不要将您的根域(example.com)用作您的IPA域名。这可能会导致DNS问题。

代码语言:javascript
复制
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时使用。强烈建议使用安全随机生成的密码,因为整个系统的安全性取决于它们。

确认配置。在此之后,安装程序将运行。

代码语言:javascript
复制
Continue to configure the system with these values? [no]: yes

安装过程可能需要几分钟,具体取决于服务器的速度。现在我们已完成服务安装,我们需要对其进行测试。

第五步、验证FreeIPA服务功能

首先,通过尝试为admin用户初始化Kerberos令牌来验证Kerberos域是否已正确安装。

代码语言:javascript
复制
kinit admin

如果工作正常,将提示您在安装过程中输入IPA管理员密码然后按ENTER

接下来,验证IPA服务器是否正常运行。

代码语言:javascript
复制
ipa user-find admin

输出内容如下:

代码语言:javascript
复制
--------------
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的一些功能。

第六步、配置IPA用户

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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 第一步、准备IPA服务器
  • 第二步、设置DNS
  • 第三步、配置随机数生成器
  • 第四步、安装FreeIPA服务
  • 第五步、验证FreeIPA服务功能
  • 第六步、配置IPA用户
  • 结论
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档