在 CentOS 5.10 上使用 rpcinfo 命令进行一些测试时,我注意到一个有趣的特性。以root运行时,连接发生后,查看socket表netstat -natup
显示连接的源端口小于1024;我见过低至 885 和高至 923 的值。如果您以非特权用户身份运行,则不会发生此行为;在这种情况下,您的源端口是普通的临时端口。我正在运行 glibc-common-2.5-118.el5_10.2 RPM 中打包的 rpcinfo 版本。
我还在 CentOS 7.0.1406 中验证了这种行为(rpcinfo 打包在 rpcbind-0.2.0-23.el7.x86_64 中)。
我的问题:
有谁知道为什么会发生这种行为的原因?以非 root 用户身份运行时,rpcinfo 命令可以从临时端口正常运行。
这种行为是否存在任何潜在的安全漏洞?我的直觉说不,因为它只有在以 root 身份运行时才会发生。
这是有安全原因的。为了防止任何用户修改 rpc 映射,portmap/rpcbind 要求请求来自特权用户。通过使用源端口 < 1024,rpcinfo 可以证明请求是由 root 发送的。