FreeIPA是Linux企业级集中认证平台,集成389 Directory Server、MIT Kerberos、DNS、NTP、CA和SSSD等组件,开箱即用;部署必须满足FQDN主机名、双向DNS解析、时间同步≤5秒、SELinux精准授权、防火墙放行关键端口五大硬性条件。

集中式认证服务在 Linux 服务器环境中,核心目标是让多台机器共用一套用户账号、密码策略和权限规则,避免“每台服务器单独建用户”的运维黑洞。真正生产可用的方案不是拼凑组件,而是选型明确、集成度高、开箱即用的平台。FreeIPA 是 CentOS/RHEL 生态下最成熟、最贴近企业需求的选择——它不是“能用”,而是“设计出来就为扛住几十台服务器+等保合规要求”。
FreeIPA 是什么,为什么不是自己搭 OpenLDAP + Kerberos?
FreeIPA 把 389 Directory Server(LDAP)、MIT Kerberos、DNS、NTP、证书颁发机构(CA)、SSSD 客户端管理、Web 管理界面和 CLI 工具全部打包并深度调优。你不用手动配 /etc/krb5.conf、不用写 LDIF 导入用户、不用反复调试 pam_ldap.so 参数。安装完就能创建用户、分配 sudo 权限、启用双因子、导出客户端配置脚本——所有策略统一管控,日志自动归集到审计模块。
部署前必须卡死的五个硬性条件
这五点不满足,ipa-server-install 会直接退出或后续登录必然失败:
FQDN 主机名 + 双向 DNS 解析
服务器必须有完整域名(如ipa.example.com),且:dig ipa.example.com A→ 返回正确 IPdig -x <IP> PTR→ 返回完全相同的ipa.example.com
若无独立 DNS,加--setup-dns参数由 FreeIPA 自建;若已有 DNS,需提前配好 A 和 PTR 记录。时间严格同步(Kerberos 生命线)
所有节点(服务端 + 后续客户端)必须与同一 NTP 源对时,偏差 ≤ 5 秒:timedatectl set-ntp truechronyc makestep(首次强制校准)chronyc tracking | grep "System clock offset"→ 确认在 ±100ms 内SELinux 不关,只授权
禁用 SELinux 是安全倒退。应执行:setsebool -P httpd_can_network_connect on(Web UI 访问外网资源)semanage port -a -t ldap_port_t -p tcp 389(开放 LDAP 端口)ausearch -m avc -ts today | audit2why查拒绝项,精准修复防火墙放行关键端口
至少开通:
TCP 80/443(Web 管理)
TCP/UDP 389/636(LDAP/LDAPS)
TCP/UDP 88/749(Kerberos)
TCP 53(DNS,如启用内置 DNS)firewall-cmd --permanent --add-service={http,https,freeipa-ldap,freeipa-kdc}磁盘与内存达标
最小要求:2 核 CPU、4GB RAM、20GB 磁盘(含日志与证书存储)。若开启 DNS + CA + Web UI 全功能,建议 8GB RAM 起。
服务端一键部署(CentOS 7/RHEL 7)
yum install -y ipa-server ipa-server-dns ipa-server-install \ --domain=example.com \ --realm=EXAMPLE.COM \ --hostname=ipa.example.com \ --admin-password='StrongPass123!' \ --ds-password='DirSrvPass456!' \ --setup-dns \ --auto-forwarders \ --no-ntp
注意:
--no-ntp仅在已确认 NTP 全局同步时使用;--setup-dns表示由 FreeIPA 自建 DNS,省去外部依赖。
客户端加入域(同样需满足 FQDN + 时间同步)
yum install -y ipa-client ipa-client-install \ --server=ipa.example.com \ --domain=example.com \ --realm=EXAMPLE.COM \ --principal=admin \ --password='StrongPass123!' \ --mkhomedir \ --enable-dns-updates
成功后,任意客户端即可用 FreeIPA 用户 ssh user@client-host 登录,密码、sudo 规则、SSH 密钥均由服务端统一下发。
验证是否真正生效
- 在服务端执行:
getent passwd admin→ 应返回完整用户信息 - 在客户端执行:
kinit admin→ 成功获取票据,再klist查看 - 尝试用新创建的 IPA 用户 SSH 登录客户端,观察
/var/log/secure是否记录pam_succeed_if(sssd:auth):日志
整个流程不复杂,但每个环节都不可跳过。FreeIPA 的价值不在“装上”,而在“一次配置、全局生效、审计可溯”。


















