NIS 曾经存在一个重大的安全漏洞:它使您的密码文件对整个互联网上的几乎任何人都是可读的,这导致了相当多的潜在入侵者。只要入侵者知道您的 NIS 域名和服务器地址,他就可以简单地向其发送请求passwd.byname映射,并立即接收您系统所有加密的密码。使用像 crack 这样的快速密码破解程序和一个好的字典,猜出至少几个用户的密码通常不是问题。
这就是 securenets 选项的全部意义。它简单地将对您的 NIS 服务器的访问限制为某些主机,基于它们的 IP 地址或网络号。ypserv 的最新版本以两种方式实现了此功能。第一种方式依赖于一个名为/etc/ypserv.securenets的特殊配置文件,第二种方式方便地使用了/etc/hosts.allow和/etc/hosts.deny文件,我们在 第 12 章 中已经遇到过。[1] 因此,为了限制 Brewery 内部主机对 NIS 服务器的访问,他们的网络管理员会将以下行添加到hosts.allow:
ypserv: 172.16.2. |
这将允许来自 IP 网络 172.16.2.0 的所有主机访问 NIS 服务器。要阻止所有其他主机,需要在hosts.deny中添加相应的条目:
ypserv: ALL |
IP 地址不是在hosts.allow和hosts.deny中指定主机或网络的唯一方法。请参考hosts_access(5)手册页以了解详细信息。但是,请注意,对于 ypserv 条目,您不能使用主机名或域名。如果您指定主机名,服务器会尝试解析此主机名——但解析器反过来调用 ypserv,您将陷入无限循环。
要使用/etc/ypserv.securenets方法配置 securenets 安全性,您需要创建其配置文件/etc/ypserv.securenets。此配置文件的结构很简单。每一行描述一个将被允许访问服务器的主机或主机网络。任何未在此文件中条目中描述的地址都将被拒绝访问。以 # 开头的行将被视为注释。示例 13-1 显示了一个简单的/etc/ypserv.securenets的样子
示例 13-1. ypserv.securenets 文件示例
# allow connections from local host -- necessary host 127.0.0.1 # same as 255.255.255.255 127.0.0.1 # # allow connections from any host on the Virtual Brewery network 255.255.255.0 172.16.1.0 # |
每行中的第一个条目是用于该条目的网络掩码,其中 host 被视为一个特殊关键字,意思是“网络掩码 255.255.255.255”。每行中的第二个条目是要应用网络掩码的 IP 地址。
第三种选择是使用安全端口映射器而不是securenets选项在 ypserv 中。安全端口映射器(portmap-5.0)也使用hosts.allow方案,但为所有 RPC 服务器提供此功能,而不仅仅是 ypserv。[2] 但是,您不应同时使用securenets选项和安全端口映射器,因为这种授权会产生开销。
[1] | 要启用/etc/hosts.allow方法,您可能需要重新编译服务器。请阅读README发行版中包含的说明。 |
[2] | 安全端口映射器可通过匿名 FTP 从 ftp.win.tue.nl 的/pub/security/目录下获得。 |