搭建 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

image

# 配置示例:

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

# 出现以下提示表示安装成功

image

# 4. 验证 Server

image

# 确保服务都是 RUNNING 状态

image

# Web UI

可以直接访问 https://192.168.121.126,也可以在 C:\Windows\System32\drivers\etc\hosts 添加解析后访问 https://ipa.demoduan.com

# Web UI admin 登录密码为 kinit admin 命令设置的密码

image

image

# 登录后的界面如下

image

# 5. FreeIPA Client 

apt update

apt install -y freeipa-client

image

image

image

image

image

image

# ipa-clinet-install

image

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. 统一认证验证

# 创建用户

image

image

# 客户端登录测试

image

# 本地切换

image

# 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

ipa sudorule-mod allow-admin --hostcat=all

# 配置 sudo 免密(可选)

ipa sudorule-add-option allow-admin --sudooption='!authenticate'

# web 界面也可配置 sudo 权限

image

# 命令执行成功后 ipa client 无需再配置 /etc/sudoers 或 /etc/sudoers.d/*

image

image

image

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

image

image

image

image

image

image

# 8. 常见问题 & 排查清单

ipa config-show 和 ipa config-show --all 可查看 server 端配置

# 登录慢 / 卡住

可能原因:DNS / PTR 记录问题

journalctl -u sssd

# Kerberos 错误

Clock skew too great(时间不同步)

检查 chronyd 服务状态和配置

# 找不到域

ipa-client-install: Unable to resolve host

DNS 未指向 IPA

 

posted @ 2026-01-16 23:32  demoduan  阅读(5)  评论(0)    收藏  举报