搭建 FreeIPA Server 实现统一认证
FreeIPA(Free Identity Policy and Audit)是 Linux/Unix 世界的 "Active Directory",一个开源的、一体化的身份管理与集中式策略控制解决方案。它旨在简化并统一在混合环境中管理 Linux 系统和用户的复杂性
简单来说,如果你需要为一批 Linux/Unix 服务器建立一个 "域",实现像 Windows AD 那样的单点登录、集中账户管理、统一安全策略和主机管理,FreeIPA 就是你的首选
核心目标:在一个由 Linux/Unix 主机组成的网络环境中,建立一个单一、可信的权威中心,用于管理:
- 身份:用户、用户组、主机、服务
- 认证:用户如何安全登录到任何一台加入域的主机
- 策略:统一的访问控制、sudo 规则、密码策略
- 审计:集中记录安全相关的事件
解决的问题:
- 避免账户分散:不再需要在每台服务器上手动创建相同的用户账户
- 告别密码同步噩梦:用户一个密码即可访问所有授权系统(单点登录)
- 统一安全基线:在中心点定义密码复杂度、过期时间、sudo 权限等,自动下发到所有主机
FreeIPA 不是单一软件,而是将多个成熟的开源项目深度集成,形成一个统一、易于管理的产品。这是它与自己手动搭建 "OpenLDAP + Kerberos + DNS" 组合的根本区别
FreeIPA 官方文档:Documentation — FreeIPA documentation
# 1. 环境规划
# 主机规划
| Role | Hostname | IP | OS |
| FreeIPA Server | ipa.demoduan.com | 192.168.121.126 | AlmaLinux 9 |
| FreeIPA Client | client01.demoduan.com | 192.168.121.130 | Debian 12 |
| FreeIPA Client | client02.demoduan.com | 192.168.121.134 | Ubuntu 24.04 |
# 域与 Relam 规划
DNS Domain:demoduan.com
Kerberos Realm:DEMODUAN.COM(必须全大写)
# 2. 基础系统准备
# 设置主机名
hostnamectl set-hostname ipa.demoduan.com
hostnamectl set-hostname client01.demoduan.com
hostnamectl set-hostname client02.demoduan.com
# 配置 /etc/hosts(Server 和 Client 都要配置)
192.168.121.126 ipa.demoduan.com ipa
192.168.121.130 client01.demoduan.com client01
192.168.121.134 client02.demoduan.com client02
# 时钟同步(Kerberos 强依赖时间)
dnf -y install chrony(FreeIPA Server)
apt update && apt install -y chrony(FreeIPA Client)
systemctl enable --now chrony(Server & Client)
# 3. FreeIPA Server
systemctl disable --now firewalld
setenforce 0
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
dnf update -y
dnf install -y ipa-server ipa-server-dns

# 配置示例:
Server host name: ipa.demoduan.com
Domain name: demoduan.com
Realm name: DEMODUAN.COM
Directory Manager password: ********
IPA admin password: ********
Do you want to configure DNS forwarders? [yes]: "回车"
Do you want to configure these servers as DNS forwarders? [yes]: "回车"
Enter an IP address for a DNS forwarder, or press Enter to skip: "回车"
Do you want to search for missing reverse zones? [yes]: "回车"
Do you want to create reverse zone for IP 192.168.121.126 [yes]: "回车"
Please specify the reverse zone name [121.168.192.in-addr.arpa.]: "回车"
NetBIOS domain name [DEMODUAN]: "回车"
Do you want to configure chrony with NTP server or pool address? [no]: "回车"
Continue to configure the system with these values? [no]: yes
# 出现以下提示表示安装成功

# 4. 验证 Server

# 确保服务都是 RUNNING 状态

# Web UI
可以直接访问 https://192.168.121.126,也可以在 C:\Windows\System32\drivers\etc\hosts 添加解析后访问 https://ipa.demoduan.com
# Web UI admin 登录密码为 kinit admin 命令设置的密码


# 登录后的界面如下

# 5. FreeIPA Client
apt update
apt install -y freeipa-client






# ipa-clinet-install

User authorized to enroll computers: admin
Password for admin@DEMODUAN.COM: "输入 admin 密码"
输入密码后提示:The ipa-client-install command was successful 表示 ipa-client 安装成功
非交互式命令:
ipa-client-install \
--domain=demoduan.com \
--realm=DEMODUAN.COM \
--server=ipa.demoduan.com \
--hostname=$(hostname -f) \
--principal=admin \
--password='AdminPassword' \
--mkhomedir \
--force-join \
--unattended
# 为了不暴露 admin 密码,可以在 ipa server 端生成随机密码
ipa host-add client01.demoduan.com --random
上面命令输出示例为:Random password: AbCdEf123456
# 客户端非交互加入(无 admin 密码)
ipa-client-install \
--domain=demoduan.com \
--realm=DEMODUAN.COM \
--server=ipa.demoduan.com \
--hostname=client01.demoduan.com \
--password='AbCdEf123456' \
--mkhomedir \
--unattended
# 6. 统一认证验证
# 创建用户


# 客户端登录测试

# 本地切换

# 7. 配置 sudo 权限
ipa sudorule-add allow-admin
ipa sudorule-add-user allow-admin --users=devan
ipa sudorule-add-host allow-admin --hosts=client01.demoduan.com
ipa sudorule-add-host allow-admin --hosts=client02.demoduan.com
ipa sudorule-mod allow-admin --cmdcat=all
# 多主机情况下可设置 Host category 为 all,Host 和 Host category 参数会冲突,所以用 sudorule-mod 代替 sudorule-add-host
# 配置 sudo 免密(可选)
ipa sudorule-add-option allow-admin --sudooption='!authenticate'
# web 界面也可配置 sudo 权限




# 也可以在创建用户的时候指定组信息实现添加 sudo 权限的效果(Redhat 系列添加到 wheel 组中, Debian 系列添加到 sudo 组中)






# 8. 常见问题 & 排查清单
# 登录慢 / 卡住
可能原因:DNS / PTR 记录问题
journalctl -u sssd
# Kerberos 错误
Clock skew too great(时间不同步)
检查 chronyd 服务状态和配置
# 找不到域
ipa-client-install: Unable to resolve host
DNS 未指向 IPA

浙公网安备 33010602011771号