![如果 Linux 系统和 LDAP 服务器之间出现用户冲突会发生什么情况?](https://linux22.com/image/739729/%E5%A6%82%E6%9E%9C%20Linux%20%E7%B3%BB%E7%BB%9F%E5%92%8C%20LDAP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B9%8B%E9%97%B4%E5%87%BA%E7%8E%B0%E7%94%A8%E6%88%B7%E5%86%B2%E7%AA%81%E4%BC%9A%E5%8F%91%E7%94%9F%E4%BB%80%E4%B9%88%E6%83%85%E5%86%B5%EF%BC%9F.png)
我的 LAN 内的 Debian 系统上有一个运行 (Open)LDAP 服务器,并且有多个运行 Linux Mint 的系统配置为 LDAP 客户端。
以下是我的/etc/nsswitch.conf
:
passwd: compat ldap
group: compat ldap
shadow: compat ldap
gshadow: files
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: ldap
我的问题是:如果 LDAP 服务器引入用户冲突(uid/用户名)会发生什么?可以利用此问题来获取客户端的 root 访问权限吗?LDAP 服务器在这方面是否是单点故障?可以预防这种情况吗?
我知道我问了 4 个问题,但它们都是关于同一主题:“用户冲突”。
谢谢!
答案1
- 与 uid 冲突:如果 LDAP 中的用户 A 和用户 B
/etc/passwd
具有相同的 UID,则两者都可以访问对方的文件 - 实际上他们是同一个用户。 - 与用户名冲突:登录时,将查询第一个数据库。在您的示例中,LDAP 用户无法登录
- Root 漏洞:如果发生 UID 冲突,并且其中一个用户拥有
sudo
权限或类似权限,则另一个用户也会拥有权限(正如我所说,他们实际上是同一个用户)。 - LDAP 不是导致此问题的原因 - 您甚至可以在 中拥有多个具有相同 uid 的用户名
/etc/passwd
。防止这种情况意味着在连接到 LDAP 之前确保没有冲突,之后仅将用户添加到 LDAP,而不是本地文件(服务帐户除外)。这是您的责任,在这种情况下系统不会保护您。
答案2
所发生的情况是,您获得的 UID/GID 号码在各个服务器之间不一致。
情况:
- 一个用户/组可以在跨服务器中拥有多个不同的 UID/GID 号码
- 同一 UID/GID 号码可由跨服务器的多个不同用户/组使用
服务器之间不一致的 UID/GID 号码可能会导致一些问题,例如 NFS 导出时的文件所有权问题或在服务器之间切换 SAN 存储/文件系统时的文件所有权问题。
如果您没有一致的 UID/GID 号码,则无法成功使用中央用户身份验证系统(如 LDAP)。
因此,您应该做的是从所有服务器收集信息,以便确定:
- 跨服务器的唯一用户/组数量
- 冲突的 UID/GID 数量
- 每个 UID/GID 的用户/组冲突数是多少
- 跨服务器具有多个不同 UID/GID 编号的用户/组数量
- 每个服务器上用户/组的每个 UID/GID 拥有多少个账户的详细分类
基本上,你要对一切有一个总体的了解。通过进行与上述类似的分析并采取措施将所有问题统一起来,你就可以预防所有问题。
至于单点故障部分,您应该检查以下列出的最佳实践这里。
为了保护您的 LDAP 服务器,请检查本指南。
另请参阅相关漏洞。