在作为NIS客户机的一些Linux机器上(SLES 11.1),我可以以root身份执行:
ypcat shadow.byname
并获得输出,即一些encryption密码行等信息。
在同一个Linux机器上,如果我运行与无特权用户相同的命令,我会得到
No such map shadow.byname. Reason: No such map in server's domain
现在我很惊讶。 我的好老知道,NIS中的影子密码是荒谬的,因为在协议中没有访问控制或validation,因此每个(非特权用户)都可以访问影子图,从而获得encryption的密码。
很明显,我们在这里有一个不同的图片。 不幸的是,我没有访问NIS服务器来弄清楚发生了什么。 我唯一的猜测是,NIS的主人给出的地图只是来自特权端口(> 1024)的客户端,但这只是一个没有教养的猜测。
目前的NIS实现中有哪些机制可以导致类似上述的行为? 他们如何“安全”? 可以轻易绕开吗? 或者是NIS中的影子密码和旧的影子文件一样安全?
在NIS主服务器上访问/var/yp/{domainname}/下不具有全局可读性的映射仅限于从特权端口(<1024)发出请求的客户端。 它不像本地/etc/shadow那样安全,但仍然比没有好一点。
为了更好的安全性,Sundevise了NIS +,但它从未真正被广泛采用。
更好的是LDAP密码哈希不必从服务器提取到客户端,而是客户端将build议的密码发送到服务器进行validation(LDAP auth-bind)。