暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

FreeIPA部署实战

IT那活儿 2026-03-09
49

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!



背 景

曾经有一家公司,运维团队每天要花数小时在不同服务器上重复创建相同的用户账号。一次权限变更需要手动修改几十台机器的 sudoers 文件,直到某天因为漏改了一台服务器导致安全事件——这种场景在企业 IT 管理中并不罕见。
今天我们要介绍的 FreeIPA,就是为解决这类问题而生的开源身份管理解决方案。
在传统的 Linux 环境管理模式下,每台服务器都维护着自己的用户数据库(/etc/passwd)和认证机制。当企业规模扩大,这种分散管理方式的弊端逐渐显现:用户需要在多台机器上记忆不同密码、权限变更难以同步、员工离职后账号清理不彻底......这些安全隐患和管理负担,催生了集中式身份管理的需求。
FreeIPA 应运而生,它整合了 LDAP 目录服务、Kerberos 认证、DNS 和证书管理,形成了一套完整的身份管理生态系统。
这套系统不仅被 Red Hat 官方支持并整合到 RHEL 中,也被许多大型企业和机构采用,包括欧洲核子研究中心(CERN)等科研机构。


核心架构

FreeIPA 的强大功能建立在四个核心组件之上:
  • 389 Directory Server 
    提供 LDAP 目录服务,存储所有用户、组、主机和服务信息。与传统的 OpenLDAP 相比,它提供了更友好的管理界面和更强的可扩展性。
  • MIT Kerberos 
    负责网络认证协议,实现了无需密码传输的单点登录体验。这是 FreeIPA 安全性的关键所在——密码永远不会通过网络传输。
  • Dogtag Certificate System 
    管理 PKI 证书的整个生命周期,包括签发、续期和撤销。这个组件让 FreeIPA 能够处理基于证书的认证场景。
  • BIND DNS 
    提供动态 DNS 更新功能,与 Kerberos 和主机管理紧密集成。在 FreeIPA 中,DNS 不仅仅是域名解析工具,更是安全基础设施的一部分。
这些组件通过统一的 Web 界面和命令行工具进行管理,极大降低了运维复杂度。


安装部署

3.1 环境准备与规划
在开始安装前,需要做好以下准备:
  • 服务器要求
    至少 2GB 内存,10GB 磁盘空间,建议使用 CentOS 8/RHEL 8 或更新版本。
  • 网络配置
    确保主机名解析正常,时间同步服务(NTP/Chrony)正常运行。
  • 规划考虑
    决定 FreeIPA 服务器的域名(如 ipa.example.com)、管理员密码和复制拓扑结构。
3.2 系统准备
# 设置正确的主机名 
   hostnamectl set-hostname ipa-server.example.com
    
   # 更新系统并安装必要工具 
   dnf update -y
   dnf install -y firewalld vim
    
   # 配置防火墙规则 
   firewall-cmd --permanent --add-service={http,https,dns,ntp,freeipa-4
   firewall-cmd --reload

3.3 安装 FreeIPA 服务端
# 安装 IPA 服务器及相关组件 
dnf install -y freeipa-server freeipa-server-dns 

# 运行安装程序 
ipa-server-install \ 
--domain=example.com \ 
--realm=EXAMPLE.COM \ 
--ds-password='StrongDSPassword123!' \ 
--admin-password='StrongAdminPassword456!' \ 
--hostname=ipa-server.example.com \ 
--ip-address=XXX.XXX.1.10 \ 
--setup-dns \ 
--forwarder=8.8.8.8 \ 
--forwarder=8.8.4.4 \ 
--no-host-dns \ 
  --unattended

安装程序将自动配置所有组件,整个过程大约需要10-15分钟。
3.4 验证安装结果
安装完成后,访问 https://ipa-server.example.com 即可看到 FreeIPA 的 Web 登录界面。
使用命令行验证安装:
# 使用管理员凭证获取 Kerberos 票据 
kinit admin 

#
 测试用户查询功能 
ipa user-find 

#
 查看服务器状态 
ipactl status



初始配置

安装完成后的基础配置同样重要:
4.1 创建组织架构
# 创建用户组 
ipa group-add --desc="开发团队" developers 
ipa group-add --desc="运维团队" operations 

# 创建 sudo 规则 
ipa sudorule-add --desc="开发人员权限" dev-sudo 
ipa sudorule-add-user --groups=developers dev-sudo 
ipa sudorule-add-option --sudoruleoption='!authenticate' dev-sudo

4.2 批量导入用户
FreeIPA 支持从 CSV 文件批量导入用户:
# 准备用户数据文件 users.csv 
# username,firstname,lastname,email,password 
# zhangsan,张,三,zhangsan@example.com,TempPass123 
# lisi,李,四,lisi@example.com,TempPass456 

ipa user-import users.csv --update

4.3 配置自助服务
启用用户自助密码重置功能:
允许用户自己重置密码 
ipa config-mod --user-default-password-expiration-days=90



客户端集成

服务器配置好后,需要将客户端机器加入 FreeIPA 域:
# 在客户端机器上执行 
dnf install -y freeipa-client

# 加入域 
ipa-client-install \ 
--domain=example.com \ 
--server=ipa-server.example.com \ 
--principal=admin \ 
--password='StrongAdminPassword456!' \ 
--mkhomedir \ 
--enable-dns-updates \ 
--unattended

客户端加入后,用户即可使用域账户登录系统。


功能验证

部署完成后,必须进行全面的功能测试,确保一切正常运行。
6.1 认证测试
# 获取 Kerberos 票据 
kinit zhangsan 

#
 查看票据信息 
klist 

#
 测试 SSH 单点登录 
ssh -l zhangsan localhost

6.2 权限测试
验证 sudo 规则是否正确应用:
# 切换用户 
su - zhangsan 

#
 测试 sudo 权限 
sudo -l 

#
 执行需要特权的命令 
sudo systemctl status sshd

6.3 高可用性测试
如果部署了副本服务器,测试故障转移:
# 在主服务器上停止服务 
ipactl stop 

#
 客户端应自动故障转移到副本服务器 
kinit zhangsan



高级特性与最佳实践

7.1 高级特性
FreeIPA 不仅限于基础功能,还提供了一系列高级特性:
  • 基于主机的访问控制(HBAC) 
    允许管理员定义哪些用户可以在哪些主机上执行哪些服务,实现精细化的访问控制策略。
  • 证书自动续期 
    通过集成的 certmonger 服务,可以自动监控和管理证书的生命周期,避免因证书过期导致的服务中断。
  • 审计日志集成 
    所有管理操作和认证事件都被详细记录,支持导出到 SIEM 系统进行安全分析。
7.2 最佳实践建议
  • 在生产环境中至少部署两个副本以确保高可用性;
  • 定期备份 LDAP 数据库和证书数据;
  • 使用 Ansible 等自动化工具管理 FreeIPA 配置;
  • 实施定期安全审计和权限审查。
注意事项:
  • 组件依赖关系
    Kerberos严重依赖NTP时间同步;
  • 网络要求
    所有组件需要在同一时间域内;
  • 安全配置
    确保组件间的通信使用加密通道;
  • 性能考虑
    LDAP查询优化和Kerberos票据缓存。

END


本文作者:王玉坤(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论