severr2如和禁止共享目录匿名访问
上周帮一个朋友处理服务器告警,和禁登录上去一看,止共日志里全是享目匿名用户尝试挂载 NFS 共享目录的记录。他的录匿 Server 2 上跑着一个内部文件服务,配置里没关匿名访问,名访结果被扫描器盯上了。和禁这事不算罕见,止共但很多人配完共享就忘了收尾。享目 NFS 的录匿匿名访问是怎么来的?默认情况下,如果 在 Server 2 上执行: 如果输出里有 直接编辑 这里 改完记得重载: 然后 光改 exports 不够。NFS 依赖 客户端挂载时加上 去年有台测试机,运维图省事配了 如果你现在登录 Server 2,先跑一遍 /etc/exports 里没写 root_squash 或 all_squash,名访客户端挂载时又没带认证,和禁服务端会把请求映射成 nobody 用户。止共这个用户权限极低,享目但能读到的录匿文件照样能读。更麻烦的名访是,有些老版本默认允许匿名挂载,连密码都不需要。先确认当前共享状态
showmount -e localhost cat /etc/exports* 或某个网段,并且没带 anonuid、anongid 或 root_squash 参数,那匿名访问就是开着的。我见过有人写 /data *(rw,sync),这等于把目录敞开给任何能连上 2049 端口的机器。改配置,别只改一半
/etc/exports,把共享条目改成这样:/data 192.168.1.0/24(rw,sync,root_squash,all_squash,anonuid=65534,anongid=65534)all_squash 是关键,它把所有客户端用户都压成匿名用户,哪怕对方是 root。再加上 anonuid 和 anongid 指向 nobody(通常是 65534),就算匿名挂载成功,也只能操作那些对 nobody 开放的文件。如果共享目录里全是 700 权限的私有文件,匿名访问就等于撞墙。exportfs -rashowmount -e 再看一眼,确认共享列表里不再有宽泛的 *。防火墙和挂载选项也得管
rpcbind 的 111 端口和 mountd 的动态端口。如果 Server 2 暴露在公网,匿名扫描器先连 111 查共享列表,再试挂载。用 iptables 或 firewalld 限制来源 IP:firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="2049" protocol="tcp" accept' firewall-cmd --reloadnosuid、nodev、noexec 也能减少风险。我一般还会在 /etc/fstab 里写死 vers=4.2,因为 NFSv4 对匿名访问的控制比 v3 严格,默认走 Kerberos 或至少要求 sec=sys 加 root_squash。一个真实教训
/home *(ro),结果外部扫描到之后,匿名用户把 /home 下几个开发者的 .ssh 目录读走了——因为那些目录权限是 755。后来他们加了 all_squash 和防火墙白名单,再扫就只返回 Permission denied。NFS 本身不复杂,但默认配置往往偏向“能用就行”,安全得自己补。showmount -e。看到 * 就改,别等日志里出现陌生 IP 再动手。
-
上一篇
-
下一篇
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-