ano*_*one 5 nfs rpc interface bindings
我们想从搬走sshfs
到nfs
。
阻碍我们的最后一件事是rpcbind
(我认为这是nfs
工作所必需的)不允许您指定它绑定到的TCP
(非UDP
)IP。
有-h
标志,但这仅适用于它打开的 UDP 端口。这不会影响 TCP 端口,它们仍然打开0.0.0.0:...
有谁知道我们如何rpcbind
通过不将其暴露给我们的公共接口来保护它?
或者更好的是,有没有办法在nfs
没有的情况下使用rpcbind
?
谢谢!
需要 rpcbind 将 RPC 服务映射到网络(读取 TCP 或 UDP)地址和端口。NFS 版本 2 和 3 需要附加服务 mountd 以允许客户端获取初始文件句柄。虽然 nfs 有一个众所周知的端口号 2049,但 mountd 没有。IOW,如果您想使用 NFSv3,您还需要运行 rpcbind(嗯,可能有一些挂载选项可以告诉 mound 在哪里运行)。与 v3 相反,NFSv4 只需要一个端口 2049,根本不需要安装。这使得 rpcbind 免费 NFS 设置成为可能。请注意,即使对于 v4,某些(旧)客户端可能仍会尝试与 rpcbind 对话。
现在,关于 rpcbind。为什么要保护它?如果它对客户端不可用,那么他们就不能挂载?保护的唯一原因是限制可以进行更新的客户端数量。但这已经到位,因为 rpcbind 使用 unix 域套接字并禁止任何远程客户端执行更新。即使在本地主机上,您也需要成为 root 用户。如果您只想保护某些客户端,那么 iptables 是您的朋友(或者您的操作系统具有的防火墙):
# iptables -A INPUT -s 10.1.2.0/24 -p tcp --dport 111 -j ACCEPT
# iptables -A INPUT -s 10.1.3.0/24 -p udp --dport 111 -j ACCEPT
# iptables -A INPUT -p tcp --dport 111 -j DROP
# iptables -A INPUT -p udp --dport 111 -j DROP
Run Code Online (Sandbox Code Playgroud)
小智 0
服务端口的查找已纳入 RPC 协议中,因此您必须执行一些非常奇特的操作才能在运行 NFS 时避免 rpcbind。
您可以使用 iptables 阻止来自特定地址或接口的连接;使用 tcpwrappers(/etc/hosts.allow、/etc/hosts.deny);或者 - 对于喜欢冒险的人 - 使用 SELinux。
如果“ldd /sbin/rpcbind”显示 libwrap 的链接,则 tcpwrappers 本身可用,否则您需要抑制通常的启动,而是通过 tcpd 从 inetd/xinetd 运行它。我自己还没有尝试过。
归档时间: |
|
查看次数: |
16489 次 |
最近记录: |