本页内容

  • 先决条件
  • 配置 FQDN 和 Timezone
  • 安装 Docker CE
  • 构建 FreeIPA Docker 镜像
  • 创建 FreeIPA 服务器容器
  • 对 FreeIPA 服务器进行认证
  • 通过 Command Linux 添加 FreeIPA 用户和组
  • 将主机添加到 FreeIPA 服务器 Setup FQDN and Timezone Installing FreeIPA Client Verify Hosts FreeIPA Client
  • 结论
  • 配置 FQDN 和 Timezone
  • 安装 FreeIPA Client
  • 验证主机 FreeIPA Client

FreeIPA 是面向 Linux/Unix 操作系统的开源身份管理解决方案。它是 RedHat Identity Management System 的上游项目,为 Linux/Unix 系统提供认证与授权解决方案。

FreeIPA 构建于多个组件之上,包括 Directory Server、DNS、Kerberos、PKI、Certmonger、NTP Server、web administration UI 等。它提供用户凭据与访问控制的集中来源。使用 FreeIPA 可让管理员轻松在集中式环境中管理身份,并提供用户监控、认证与访问控制。

在本指南中,你将通过 Docker 在 Debian 12 机器上安装并部署 FreeIPA 服务器。你将安装 Docker CE(Community Edition)、构建 FreeIPA Server Docker 镜像、安装 FreeIPA Server,随后学习 FreeIPA 服务器的基本管理。此外,你还将学习如何将一个 Linux 客户端机器作为 FreeIPA 客户端添加到以 Docker 容器形式运行的 FreeIPA 服务器。

先决条件

对于本指南,你需要一台运行 Debian 12 或 Debian 11、内存至少 4 GB 的 Linux 服务器。你还需要一个 root 用户或具有管理员权限的非 root 用户。至于客户端,你可以使用任何 Linux 发行版,但在本示例中,你将使用 Ubuntu 作为 FreeIPA 客户端机器。

配置 FQDN 和 Timezone

在安装 Docker 和 FreeIPA 之前,你必须首先确保拥有正确的 fqdn(fully qualified domain name,完全限定域名)、正确的 '/etc/hosts' 文件,以及正确的时区。在第一步中,你将在 Debian 服务器上配置 fqdn、/etc/hosts 文件和时区。

首先,通过输入以下命令来设置 FreeIPA 服务器的 fqdn。

sudo hostnamectl set-hostname ipa.hwdomain.lan

首先,通过输入以下命令来设置 FreeIPA 服务器的 fqdn。

sudo nano /etc/hosts

现在使用以下 nano 编辑器命令打开 ' /etc/hosts' 文件。

192.168.5.10 ipa.hwdomain.lan  ipa

添加你系统的 IP 地址、fqdn 和主机名信息。

现在输入以下命令来验证你系统的 fqdn,并确保 fqdn 指向正确的内网 IP 地址。

sudo hostname -f
sudo ping -c3 ipa.hwdomain.lan

接下来,输入以下命令来设置你系统的时区。请务必将命令中的时区替换为你服务器的时区。

sudo timedatectl set-timezone Europe/Stockholm

输入以下命令来设置你系统的 localtime。

sudo unlink /etc/localtime
sudo ln -s /usr/share/timezone/Europe/Stockholm /etc/localtime

现在进入下一步,开始安装 Docker CE。

安装 Docker CE

FreeIPA Server 有多种安装方式,对于基于 Debian 的发行版,你可以使用 Docker。在本节中,你将通过官方 Docker 仓库安装 Docker CE(Community Edition),随后你还将配置你的用户以允许执行和运行 Docker 容器。

首先,输入以下 apt 命令来安装基础依赖。当提示时,输入 y 确认并按 ENTER 继续。

sudo apt install ca-certificates \
    curl \
    gnupg \
    git \
    lsb-release

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

接下来,添加并下载 Docker CE 仓库的 GPG key。

sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

添加 GPG key 后,输入以下命令来添加 Docker CE 仓库。

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

现在运行下面的 ' apt update ' 命令来更新并刷新你的 Debian 软件包索引。

sudo apt update

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

然后,通过输入下面的 'apt install' 命令来安装 Docker CE 软件包。当提示时输入 y 确认并按 ENTER 继续。

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

Docker CE 安装完成后,它也会自动运行并启用。执行下面的 ' systemctl ' 命令来验证 Docker 服务。

sudo systemctl is-enabled docker
sudo systemctl status docker

你应该看到 ' enabled ' 的输出,表示 Docker 服务会在系统启动时自动运行。' active (running) ' 的输出则确认当前 Docker 服务正在运行。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

最后,如果你计划通过非 root 用户运行 Docker 应用,则必须将你的用户添加到 'docker' 组。输入以下命令将你的用户添加到 ' docker ' 组。在本示例中,你将把用户 ' bob ' 添加到 ' docker ' 组。

sudo usermod -aG docker bob

现在以用户 ' bob ' 登录,并输入下面的 docker 命令来运行 ' hello-world ' 容器。如果成功,你应该会在终端屏幕上看到容器打印出的欢迎信息。

su - bob
docker run hello-world

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

至此,你已经成功以名为 ' bob ' 的非 root 用户身份执行并运行了 Docker 容器。在本指南的其余部分,你将使用用户 ' bob ' 来执行命令。

构建 FreeIPA Docker 镜像

在本节中,你将构建 FreeIPA 服务器的 Docker 镜像。为此,你可以轻松地从官方 FreeIPA GitHub 页面下载 freeipa-container 仓库。之后,你可以为基镜像选择任意 Linux 发行版。

首先,通过下面的 apt 命令在你的 Debian 服务器上安装 ' git '。当提示时,输入 y 确认,然后按 ENTER。

sudo apt install git

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

现在运行以下 git 命令将 'freeipa-container' 仓库下载到你的系统。然后,将你的工作目录切换到该仓库内。

git clone https://github.com/freeipa/freeipa-container.git
cd freeipa-container

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

现在运行下面的 ' ls ' 命令来验证 'freeipa-container' 仓库中的文件和目录列表。你应该会看到多个 Dockerfile 文件,可用于在 Debian 系统上部署 FreeIPA 服务器。

ls

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

接下来,输入以下命令来构建一个新的 FreeIPA 服务器 Docker 镜像。在本示例中,你将基于 ' AlmaLinux 9 ' 创建一个名为 ' freeipa-almalinux9 ' 的 FreeIPA 服务器 Docker 镜像。

docker build -t freeipa-almalinux9 -f  Dockerfile.almalinux-9 .

执行 ' docker build ' 命令后,你应该会看到 FreeIPA 服务器 Docker 镜像的构建过程。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

当过程结束时,你应该会看到类似 ' naming to .../.../freeipa-almalinux9 ' 的输出。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

运行以下命令来验证系统中可用的 Docker 镜像列表。你应该会看到名为 ' freeipa-almalinux9 ' 的 Docker 镜像已创建并可用。

docker images

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

FreeIPA Docker 镜像创建完成后,你将通过 Docker 安装 FreeIPA 服务器及其配置。

创建 FreeIPA 服务器容器

在本节中,你将通过 Docker 容器安装并配置 FreeIPA 服务器。你将使用已创建的基镜像 ' freeipa-almalinux9 ' 运行一个新容器,然后开始 FreeIPA 服务器的配置。配置完成后,你接下来将为 FreeIPA 服务器容器设置到 Docker 宿主机的端口映射。

首先,输入以下命令来创建一个新的数据目录 '/var/lib/freeipa-data'。它将用作 FreeIPA 服务器的数据目录。

sudo mkdir -p /var/lib/freeipa-data

现在运行以下 'docker run' 命令来创建并运行 FreeIPA 服务器容器。在本示例中,你将创建一个名为 ' freeipa-server-almalinux9 ' 的新 FreeIPA 容器,并将 FreeIPA 服务器数据存储到宿主机的 '/var/lib/freeipa-data ' 目录。

docker run --name freeipa-server-almalinux9 -ti \
    -h ipa.hwdomain.lan --read-only --sysctl net.ipv6.conf.all.disable_ipv6=0 \
    -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
    -v /var/lib/freeipa-data:/data:Z freeipa-almalinux9

在安装过程中,你应该会被要求输入 FreeIPA 服务器的一些配置。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

当被询问是否通过 BIND 设置集成 DNS 时,按 ENTER 或输入 no。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

现在输入你的 FreeIPA 服务器的主机名、域名和 REALM。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

现在为 Directory manager 和 IPA admin 用户输入并重复一个新密码。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

对于 NetBIOS name,保持默认并按 ENTER。至于 NTP 配置,输入 no 或直接按 ENTER。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

现在检查并验证你 FreeIPA 服务器安装的配置。完成后,输入 ' yes ' 并按 ENTER 确认。此后,FreeIPA 服务器配置应当开始运行并需要一些时间。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

当 FreeIPA 服务器配置完成时,你应该会收到类似 'Setup complete ' 的输出以及后续步骤的说明。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

现在打开一个新的终端会话并连接到你的 Debian 服务器。然后,以用户 ' bob ' 登录,并输入以下 docker 命令来验证系统中正在运行的容器。

docker ps

你应该会看到名为 ' freeipa-server-almalinux9 ' 的容器,其状态为 ' Up '。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

此时,FreeIPA 服务器正在运行,数据现已存储在 ' /var/lib/freeipa-data ' 目录中。在下一步中,你必须为 FreeIPA 服务器添加端口映射。

输入以下命令来停止并移除容器 'freeipa-server-almalinux9'。这会移除容器,但不会移除数据目录 '/var/lib/freeipa-data'。

docker stop freeipa-server-almalinux9
docker rm freeipa-server-almalinux9

然后运行以下命令来创建一个带有端口映射的新容器用于 FreeIPA 服务器。这将创建一个新版本的容器 ' freeipa-server-almalinux9 ',其特定端口映射到宿主机,并使用与之前 FreeIPA 服务器相同的数据。

docker run --name freeipa-server-almalinux9 -ti \
    -h ipa.hwdomain.lan -p 53:53/udp -p 53:53 -p 80:80 -p 443:443 -p 389:389 -p 636:636 -p 88:88 -p 464:464 -p 88:88/udp -p 464:464/udp -p 123:123/udp \
    --read-only --sysctl net.ipv6.conf.all.disable_ipv6=0 \
    -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
    -v /var/lib/freeipa-data:/data:Z freeipa-almalinux9

再次切换到另一个终端会话,并运行以下命令来停止并重新启动容器 'freeipa-server-almalinux9'。这将确保容器 'freeipa-server-almalinux9' 在后台运行。

docker stop freeipa-server-almalinux9
docker start freeipa-server-almalinux9

再次检查系统中正在运行的容器列表,你应该会看到容器 'freeipa-server-almalinux9' 正在运行,并且新的端口已映射到宿主机。

docker ps

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

至此,通过 Docker 部署 FreeIPA Server 已完成。你的 FreeIPA 服务器现在可以从客户端访问,并且你已为 IPA admin 和 Directory Manager 配置了管理员密码。

对 FreeIPA 服务器进行认证

通过 Docker 安装 FreeIPA 服务器后,你现在将通过从 Docker 宿主机向 Kerberos FreeIPA 服务器进行认证来验证安装。为此,你必须确保 FreeIPA 服务器的域名指向正确的服务器,并且已安装 Kerberos 客户端工具。

在开始之前,使用以下 nano 编辑器命令打开 Debian 系统上的 ' /etc/hosts ' 文件。

sudo nano /etc/hosts

将以下行添加到文件中,并务必将 IP 地址和域名替换为你 FreeIPA Server 主机的信息。

192.168.5.10 ipa.hwdomain.lan

完成后保存并关闭文件。

接下来,通过下面的 apt 命令将 ' krb5-user ' 软件包安装到你的系统。这将安装一些可用于连接 FreeIPA 服务器的 Kerberos 工具。

sudo apt install krb5-user

当提示时输入 y 并按 ENTER 继续。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

当被询问默认 REALM 配置时,输入你 FreeIPA 服务器的 REALM —— 在本示例中,REALM 为 ' HWDOMAIN.LAN '。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

至于 Kerberos server,输入你 FreeIPA 服务器的域名,例如 'ipa.hwdomain.lan'。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

为 Kerberos realm 的管理服务器使用相同的值 —— ' ipa.hwdomain.lan '。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

现在安装应当已完成,新的设置已生成在 ' /etc/krb5.conf ' 文件中。

安装 Kerberos 工具后,输入以下命令来测试对以 Docker 容器形式运行的 Kerberos 服务器的认证。当提示时,输入你 FreeIPA 服务器的 admin 密码。

kinit admin

输入以下命令来验证你对 Kerberos 服务器的认证。成功时,你应该会获得 Kerberos 认证票据的详细信息。

klist

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

最后,你也可以访问 FreeIPA 服务器的 Web 管理仪表盘。请务必将 FreeIPA 服务器的域名添加到本地机器的 '/etc/hosts ' 文件中。

打开你的网页浏览器并访问 FreeIPA 服务器的域名(例如:https://ipa.hwdomain.lan/)。成功时,你应该会看到 FreeIPA 服务器的登录页面。

输入用户 admin 和你的密码,然后点击 Log in。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

认证成功后,你应该会看到 FreeIPA 服务器的 Web 管理仪表盘。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

通过 Command Linux 添加 FreeIPA 用户和组

管理以 Docker 容器形式运行的 FreeIPA 服务器有多种方法,你可以通过 Web 管理仪表盘管理,也可以从 FreeIPA 服务器容器管理目录。在本节中,你将通过 FreeIPA 服务器容器中的 'ipa' 命令工具来管理 FreeIPA 用户和组。

首先,输入以下命令登录到 ' freeipa-server-almalinux9' 容器。

docker exec -it freeipa-server-almalinux9 /bin/bash

登录后,使用用户 ' admin ' 向 Kerberos 服务器进行认证。然后,验证 Kerberos 票据详情。当提示输入密码时,输入你 Directory Manager 的密码。

kinit admin
klist

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

完成 Kerberos 认证后,你现在可以开始配置 FreeIPA 服务器。

输入以下 ' ipa config-mod ' 命令,将 FreeIPA 用户的默认 shell 设置为 '/bin/bash '。

ipa config-mod --defaultshell=/bin/bash

你应该会看到 FreeIPA 服务器用户配置的详细信息。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

接下来,输入以下命令创建一个名为 ' ubuntu ' 的新 FreeIPA 用户。同时,当提示时输入并重复一个新密码。

ipa user-add ubuntu --first=Ubuntu --last=Linux --password

添加后,你应该会获得类似 ' Added user "ubuntu" ' 的输出。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

现在输入以下命令来查找 FreeIPA 服务器上的用户 ' ubuntu '。当用户可用时,你应该会获得类似 ' 1 user matched ' 的输出。同时,你可以查看用户 ' ubuntu ' 的详细信息。

ipa user-find ubuntu

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

你也可以通过输入以下命令获取 FreIPA 上可用用户的详细信息。

ipa user-show --raw ubuntu

下面是你会得到的类似输出。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

接下来,使用命令 'ipa group-add' 创建一个新组 ' development ',并验证该组以确保其已添加并可用。

ipa group-add --desc='Development Team' development
ipa group-find development

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

现在运行以下 'ipa group-add-member' 命令,将 FreeIPA 用户 ' ubuntu ' 添加到组 ' development '。

ipa group-add-member --user=ubuntu development

使用以下命令验证组 ' development ' 的详情。你应该会看到用户 ' ubuntu ' 已添加到组 ' development '。

ipa group-show development

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

将主机添加到 FreeIPA 服务器

FreeIPA 提供了将新主机添加到 FreeIPA 服务器的最简便方式,这可以通过提供 'ipa-client-install' 工具的 FreeIPA 客户端软件包完成。在本节中,你将把一台 Ubuntu 机器添加到以容器形式运行的 FreeIPA 服务器 'ipa.hwdomain.lan '。

以下是将新主机添加到 FreeIPA 服务器所需执行的步骤:

  • 配置客户端机器的 FQDN 和 Timezone
  • 安装 FreeIPA Client 软件包
  • 验证 FreeIPA Client 机器

现在让我们开始将 Ubuntu 机器添加到 FreeIPA Server Docker 容器。

配置 FQDN 和 Timezone

首先,登录到你的客户端机器,并使用以下命令设置 fqdn。

sudo hostnamectl set-hostname client01.hwdomain.lan

现在使用以下 nano 编辑器命令打开配置文件 ' /etc/hosts '。

sudo nano /etc/hosts

将以下行添加到文件中,并务必修改 IP 地址、fqdn 和主机名的详细信息。

192.168.5.10    ipa.hwdomain.lan        ipa
192.168.5.121   client01.hwdomain.lan   client01

完成后保存文件。

现在输入以下命令,以确保客户端机器的 fqdn 指向正确的 IP 地址,并且 FreeIPA 服务器的域名也指向正确且恰当的 IP 地址。

ping -c3 ipa.hwdomain.lan
ping -c3 client01.hwdomain.lan

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

接下来,输入以下命令来设置客户端机器的时区。

sudo timedatectl set-timezone Europe/Stockholm

最后,输入以下命令将 ' /etc/localtime ' 文件设置为正确的时区配置。

sudo unlink /etc/localtime
sudo ln -s /usr/share/timezone/Europe/Stockholm /etc/localtime

安装 FreeIPA Client

首先,通过下面的 apt 命令更新并刷新你的 Ubuntu 软件包索引。

sudo apt update

现在使用以下命令安装 FreeIPA 客户端软件包。当提示时,输入 y 确认并按 ENTER 继续。

sudo apt install freeipa-client oddjob-mkhomedir

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

当提示输入默认 REALM 域名时,输入你的主域名,例如 ' HWDOMAIN.LAN '。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

输入 Kerberos realm 域名,使用 FreeIPA 服务器域名 ' ipa.hwdomain.lan '。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

最后,再次输入 FreeIPA 服务器的域名 ' ipa.hwdomain.lan ',作为 Kerberos 服务器的管理服务器。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

FreeIPA 客户端软件包安装完成后,运行以下命令 ' ipa-client-install ' 将客户端机器添加到 FreeIPA 服务器。请务必修改 FreeIPA 服务器域名和 realm 的详细信息。

ipa-client-install --hostname=`hostname -f` \
--mkhomedir \
--server=ipa.hwdomain.lan \
--domain hwdomain.lan \
--realm HWDOMAIN.LAN

当被询问是否使用固定配置时,输入 yes 确认并按 ENTER。至于 NTP server,保持默认 no。最后,再次输入 yes 确认安装。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

下面是安装和配置过程中的输出。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

完成后,终端屏幕上会显示类似 ' The ipa-client-install command was successful ' 的输出。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

验证主机 FreeIPA Client

从 FreeIPA 服务器上,输入以下命令,使用 FreeIPA 用户 'ubuntu' 连接到客户端机器 '192.168.5.121'。当提示时,输入 yes 确认并添加客户端机器的 SSH fingerprint,然后输入 'ubuntu' FreeIPA 用户的密码。

ssh 
[email protected]

登录后,你应当会被要求修改默认的当前密码。因此,输入当前密码,然后输入新密码并重复。

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

最后,输入以下命令来确认你当前的用户。你应该会看到你已通过用户 ' ubuntu ' 登录到客户端机器,而该用户也是组 ' development ' 的成员。

id
whoami

如何在 Debian 12 上通过 Docker 安装 FreeIPA Server

结论

在本教程中,你学习了如何通过 Docker 在 Debian 12 服务器上安装并部署 FreeIPA 服务器。你还学习了用于创建和管理 FreeIPA 用户与组的 'ipa' 命令的基本用法,并且学习了如何通过 kinit 命令获取 Kerberos 票据,以及如何使用 admin 用户和密码登录 FreeIPA Web 管理界面。

最后,你还通过 FreeIPA 客户端软件包将一台 ubuntu 客户端机器添加到了 FreeIPA 服务器。你逐步学习了操作方法,并通过 FreeIPA 用户登录客户端机器验证了你的设置。

至此,你现在可以向 FreeIPA 服务器添加更多主机、用户和组。你也可以将 FreeIPA 集成到你的生产环境中。要获取详细信息,请访问 FreeIPA 的官方文档。