备份和恢复 freeipa 基础设施

备份和恢复 freeipa 基础设施

我发现有关 ipa 服务器备份和恢复的文档非常缺乏,而且由于它如此重要,我不太愿意盲目地使用它 - 有哪位对此事更了解的好心人能不能尝试提供一个备份和恢复 IPA 服务器的傻瓜式指南?特别是主服务器(证书签名服务器)。

...我们正考虑在双服务器设置(1 个主服务器,1 个副本服务器)中推出 ipa。我使用 dns srv 记录来处理故障转移,因此副本服务器的丢失并不是什么大问题,因为我可以创建一个新的副本服务器并强制进行重新同步 - 让我烦恼的是丢失主服务器。

真的正在努力寻找备份和恢复主服务器的分步过程。我知道整个 VM 快照是执行 IPA 服务器备份的推荐方法,但目前对我们来说这不是一个选项。

我还知道 freeipa 3.2.0 包含某种内置备份命令,但它不在 centos 的 ipa 版本中,而且我预计它暂时不会出现。

我尝试过很多不同的方法,但似乎没有一种方法能够干净地恢复,其中包括:

  • 类似于 db2ldif.pl -D "cn=directory manager" -w - -n userroot -a /root/userroot.ldif 的命令

  • 此处的脚本生成三个 ldif 文件 - 一个用于域 ({domain}-userroot),两个用于 ipa 服务器 (ipa-ipaca 和 ipa-userroot):

我尝试过的大多数恢复都类似于以下形式:ldif2db.pl -D“cn = directory manager”-w - -n userroot -i userroot.ldif

这似乎有效并且没有报告任何错误,但完全破坏了机器上的 ipa 安装,我无法再使用备份服务器上的管理员密码或在尝试 ldif2db 命令之前在安装时设置的密码登录(我正在安装 ipa-server 并运行 ipa-server-install,然后尝试恢复)。

我并不太担心丢失 CA、不得不重新加入域、丢失复制等等(虽然如果可以避免就太好了)但是在主服务器掉线的情况下我真的很想避免重新输入所有用户/组信息。

我想在主服务器丢失的情况下,我可以提升另一个服务器并向另一个方向复制,但我也没有尝试过。有人这样做过吗?

总结:有人可以提供一份备份指南吗并恢复一个足够清晰的 IPA 服务器(最好是 CentOS 6),让我相信当可怕的时刻到来时它确实会工作?蜡笔是可选的,但很受欢迎 ;-) 我不是唯一一个为此苦苦挣扎的人,看看 IPA 的使用范围有多广,不是吗?

答案1

我没有适当的解决方案来备份和恢复 CentOS 上的 FreeIPA 服务器,只有一种解决方法,即在尽可能短的时间内让服务器以相同的配置运行。你确实丢失了 CA,需要将主机重新加入服务器

这是我在使用该系列时处理“灾难恢复”的方式2.x。我进行了许多反复试验,厌倦了从头开始恢复设置:

  1. 使用 DHCP+PXE+TFTP+Kickstart 配置新主机。
  2. 确保 kickstart 脚本安装了puppetlabsrepo 并在 中注册自身,为此目的puppetmaster在 中有一个条目。( repo 不是强制性的,但我使用了 的股票版本中不存在的语法)。autosign.confpuppetlabspuppet
  3. 编写一个模块,其中包含package用于安装服务器及其依赖项的资源,以及exec用于运行 shell 脚本的资源(全部保存在版本控制之下),定义域中所需的所有基础设施。

我会在这里给你一段脚本,让你了解大概意思:


#!/usr/bin/env bash
# vim:syn=sh:ts=2:fdm=marker
# IPASERVER BOOTSTRAP {{{
# HOSTGROUPS {{{
# foo {{{
ipa hostgroup-add foo --desc='Foo Bar Baz'
ipa hostgroup-add-member sanfernando --hosts={foo,bar,baz}.domain.com
ipa netgroup-add net_foo --nisdomain=domain.com --desc='Foo Bar Baz'
ipa netgroup-add-member net_foo --hostgroups=sanfernando
# }}}
# }}}
# PWPOLICY {{{
ipa pwpolicy-mod global_policy --history=24
ipa pwpolicy-mod global_policy --lockouttime=1200
ipa pwpolicy-mod --setattr=krbpwdmindiffchars=4
ipa pwpolicy-mod --setattr=krbpwdminlenght=14
ipa pwpolicy-mod --setattr=krbpwdmaxfailure=5
ipa pwpolicy-mod --setattr=krbminpwdlife=168
ipa pwpolicy-mod --setattr=krbpwdfailurecountinterval=1200
# }}}
# USERS/GROUPS/HBAC {{{
# developers {{{
ipa user-add jdoe --first='Jane' --last='Doe' --email='[email protected]' --gecos='Jane Doe' --shell='/bin/rbash' --sshpubkey='AAA......XXGDGHU='
ipa group-add foo --desc='Foo Staff'
ipa group-add-member foo --users=jdoe
ipa hbacrule-add developers_access --desc='Developers access'
ipa hbacrule-add-host developers_access --hostgroups=development
ipa hbacrule-add-user developers_access --groups=developers
ipa hbacrule-add-service developers_access --hbacsvcs=sshd
ipa hbacrule-add-service developers_access --hbacsvcgroups=Sudo
# }}}
# }}}
# SUDO CMD/RULE/GROUP {{{
# networking {{{
ipa sudocmd-add --desc='administration tool for IPv4 packet filtering and NAT' '/sbin/iptables'
ipa sudocmd-add --desc='view and manipulate media-independent interface status' '/sbin/mii-tool'
ipa sudocmd-add --desc='display or change ethernet card settings' '/sbin/ethtool'
ipa sudocmd-add --desc='show and manipulate routing, devices, policy routing and tunnels' '/sbin/ip'
ipa sudocmd-add --desc='sudoedit configuration file of IPv4 packet filtering and NAT' 'sudoedit /etc/sysconfig/iptables'
ipa sudocmdgroup-add networking --desc='commands for network configuration and troubleshooting'
ipa sudocmdgroup-add-member networking --sudocmds=/sbin/{iptables,mii-tool,ethtool,ip}
ipa sudocmdgroup-add-member networking --sudocmds='sudoedit /etc/sysconfig/iptables'
ipa sudorule-add networking_4_operators_2 --desc='Operator Level 2 access to networking management commands'
ipa sudorule-add-allow-command networking_4_operators_2 --sudocmdgroups='networking'
ipa sudorule-add-user networking_4_operators_2 --groups='operators_2'
ipa sudorule-add-host networking_4_operators_2 --hostgroups=foo-hosts
# }}}
# }}}
# }}}

答案2

从 4.x 开始,FreeIPA(现在在 RHEL 上称为 Red Hat Identity Manager)包括 CLI 工具:(ipa-backup生成所有服务器信息或仅 LDAP 数据的 GPG 加密备份转储)和ipa-restore

需要注意的是:在新安装的服务器上恢复仅包含数据的备份后,我发现它破坏了管理员凭据,无论我做什么,我都无法以管理员身份或任何其他用户身份登录(“密码错误”错误消息)。所以它几乎没用。不过,这可能是我的设置问题。在依赖它之前,请务必测试恢复!

答案3

FreeIPA 中的备份和恢复没有简单的答案。我们谈论的是多主复制环境,其中每个服务器可能具有不同的配置、不同的服务(CA、DNS),我们希望保留这些配置和服务。

自项目开始以来,FreeIPA 中备份和恢复的常见答案是 -有副本。使用多个 FreeIPA 复制服务器,即使某些服务器崩溃,您也可以保持冗余和可用性。如果您有其他服务(如 CA 或 DNS),只需在 FreeIPA 副本上安装更多服务,以免措手不及。如果您使用 DNS SRV 记录让客户端发现 FreeIPA 服务,那么他们甚至不会注意到您丢失了一些服务,他们只需切换到其他可用的 FreeIPA 即可。

定期虚拟机快照一个 FreeIPA 备份服务器,以确保在整个复制环境崩溃的情况下,您有一个可以开始使用的东西。如果您不仅对结构备份感兴趣,而且对数据备份也感兴趣,我建议使用 db2ldif 作为备份数据的最佳方式。

我希望这些简短的建议能有所帮助,您可以在 FreeIPA.org 网站上找到更多资源:

相关内容