<< Back to shouce.jb51.net

5.2. 保护 Portmap 的安全性

portmap 服务是用于 RPC 服务(如 NIS 和 NFS)的动态端口分配守护进程。它的验证机制比较薄弱,而且具备为它所控制的服务分配大范围端口的能力。由于这些原因,要保护它的安全比较困难。

注记注记
 

设置 portmap 只对 NFSv2 和 NFSv3 起作用,NFSv4 不再使用这个服务。如果你想实现一个 NFSv2 或 NFSv3 服务器,你需要使用 portmap

如果运行 RPC 服务,请遵守以下基本规则。

5.2.1. 使用 TCP 会绕程序来保护 portmap

使用 TCP 会绕程序来限制可以使用 portmap 服务的网络或主机这一点很重要,因为 portmap 没有内建的验证方式。

更进一步,在限制对服务的使用时,使用 IP 地址。避免使用主机名,因为主机名可以通过 DNS 污染或其它方法被伪造。

5.2.2. 使用 IPTables 来保护 portmap

要进一步限制对 portmap 服务的使用,在服务器上添加 IPTables 规则来限制对指定网络的访问是一个好办法。

以下是两个 IPTables 命令的例子: 只允许从网络 192.168.0/24 和本地主机(Nautilus 程序使用的 sgi_fam 服务所需要的)到 portmap 服务(监听端口111)的 TCP 连接。所有其它分组都被放弃。

iptables -A INPUT -p tcp -s! 192.168.0.0/24  --dport 111 -j DROP
iptables -A INPUT -p tcp -s 127.0.0.1  --dport 111 -j ACCEPT

要以相似的方法限制 UDP 连接,使用以下命令。

iptables -A INPUT -p udp -s! 192.168.0.0/24  --dport 111 -j DROP

窍门窍门
 

关于使用 IPTables 命令实现防火墙的详情,请参阅第7章