我知道有人问过这个问题这里之前,但我对答案并不满意,不知道是否可以恢复并劫持一个旧问题。
我们有工作站在 LDAP 服务器上对用户进行身份验证。但是,本地 root 用户可以su
无需密码即可成为任何 LDAP 用户。从我的角度来看,这听起来像是一个巨大的安全问题,我希望可以在服务器级别避免这个问题。
我可以想象以下场景,一个用户可以冒充另一个用户,但不知道如何防止这种情况:
- 用户 A 的权限有限,但可以使用其 LDAP 密码登录公司工作站。他们可以
cat /etc/ldap.conf
找出 LDAP 服务器的地址,并可以ifconfig
查看自己的 IP 地址。(这只是获取 LDAP 地址的一个例子,我认为这通常不是一个秘密,而且模糊性并不难克服) - 用户 A 拿出自己的个人笔记本电脑,配置身份验证和网络接口以匹配公司工作站,并将网线从工作站插入笔记本电脑,启动并以本地 root 身份登录(这是他的笔记本电脑,因此他具有本地 root 权限)
- 作为 root,他们
su
可以成为 LDAP 上任何其他可能有或可能没有更多权限的用户(无需密码!),但至少,他们可以毫无问题地模仿该用户。
这里的其他答案说这是正常的 UNIX 行为,但听起来确实不安全。
例如,模拟用户可以在 NFS 安装上充当该用户吗?(笔记本电脑甚至具有相同的 IP 地址)。我知道他们无法在远程计算机上充当 root 用户,但他们仍然可以成为他们想要的任何其他用户!
一定有办法在 LDAP 服务器级别防止这种情况发生,对吧?或者也许在 NFS 服务器级别?我是否遗漏了某些可以真正防止这种情况发生的流程部分?
谢谢!!
答案1
我认为你的情况不成立。
假设攻击者将遵循您的1、2、3点,并将成为他们自己带来的机器上的不同 UID(用户)。
然后到底怎么样?他们已经可以以 root 身份访问自己的计算机,并且在自己的系统上使用匿名 LDAP 作为用户后端,以 su 身份成为用户,这和以下方法一样好:
useradd differentUser
su - differentUser
... 根本不使用 LDAP。
因为 LDAP 只会替换本地用户存储(例如/etc/passwd
)——请参阅nsswitch.conf
其手册。
如果他们想登录到您网络上的任何其他机器,他们仍然需要为其他用户提供有效的凭据。
这怎么就不安全了?
NFS 挂载
不可以。为了能够在 NFS 挂载上充当该用户,他们首先必须能够从某处挂载 NFS 共享。
如果/etc/exports
NFS 服务器可以自由地允许他们挂载 NFS 共享,那么他们就不需要 LDAP,他们只需挂载并浏览它即可。