使用 FQDN 代替短主机名的 Sudo ldap

使用 FQDN 代替短主机名的 Sudo ldap

在我的工作场所,我们使用 sudo-ldap 从集中存储中为整个网络提供 sudo 权限。我们根据用户名以及运行 sudo 的主机名执行此操作,例如:

sudoHost: foo1
sudoUser: user1

我希望能够根据 FQDN 而不是短主机名匹配 sudoHost 属性,以便我们可以将 DNS 子域用于不同的环境 - 例如web1.dev.example.com在开发环境和web1.test.example.com测试环境中使用等等。但是,目前 sudoHost 仅匹配短主机名。

即这有效:

sudoHost: foo1

但这不起作用:

sudoHost: foo1.dev.example.com

仅使用短主机名 () 的问题foo1在于,它会匹配全部环境 - ,,,foo1.dev等等。我希望它比这更细致。foo1.testfoo1.staging

是否可以让 sudo-ldap 根据 FQDN(由 返回hostname -f)而不是仅根据短主机名进行查询?

我在谷歌上搜索过,但一无所获。我在手册页或网上都找不到任何东西;最接近的答案是sudo主机属性是:

sudo主机

主机名、IP 地址、IP 网络或主机网络组(以“+”为前缀)。特殊值 ALL 将匹配任何主机。

没有提及 FQDN 与短主机名。配置 ldap.conf 部分任何一个。

有问题的主机正在运行 Ubuntu 10.04。

答案1

鉴于 sudo 本身仅匹配属性中提到的相同内容sudoHost,我倾向于认为,如果没有侵入性sudo修补,您将无法获得您想要的结果。

有一种可能性——您将机器主机名设置为短名称还是 FQDN?如果您选择前者,请尝试后者,看看 sudo 是否会改为识别 FQDN(不过,您可能会失去匹配短名称的能力)。老实说,我很多更喜欢将我的主机名设置为 FQDN,我认为它在像您描述的多域设置中提供了更多价值(顺便说一句,我赞赏您这样做,我希望每个人都这样做)。

如果我要冒险(有根据地)猜测为什么您不能(老实说,也不应该)基于 FQDN(或者更具体地说,由 提供的数据hostname -f)而不是主机名进行匹配,我会说这是因为该值(hostname -f)是通过 NSS 获得的——/etc/hosts即 DNS(而 sudo 无法分辨哪个)。因此,您突然有一个安全漏洞,如果攻击者可以操纵 DNS 结果,他就会控制您的主机限制 sudo 设置。

作为一个不太有用但仍有潜在价值的选项(如果无法将 FQDN 设置为主机名),请切换到使用 IP 地址。如果您必须重新编号,那么它就不那么明显,而且维护起来有点麻烦,但除非您手动编辑 LDAP 记录,否则您的 sudo-config-maintenance-tool-thingy 至少可以通过解析名称/地址并为您提供可用的名称和 sudo IP 地址来隐藏丑陋。

相关内容