Linux挂NAS存储:给NFS加上Kerberos认证

场景

公司的备份服务器、数据分析机都是 Linux,要挂载群晖 NAS 上的共享存储。NFS 用默认 AUTH_SYS 认证时,信任建立在 IP 和 UID 上——知道地址的机器就能冒充,备份这种高价值目标不能这么裸奔。DSM 支持 NFSv4 的 Kerberos 认证:机器凭 keytab 票据说话,不靠 IP 自证身份。适用环境:已有 Windows Server(2016+)做域控,Linux 客户端以 Ubuntu 20.04+ 为例,DSM 6.2.4 以上或 DSM 7。

动手前的清单

前置项缺一项,后面就会卡住:

  • Windows 服务器、Linux 客户端、NAS 三方系统时间与时区同步——Kerberos 票据对时间极敏感,时间不一致是这类配置排障榜第一名;
  • Windows 服务器与 NAS 均用静态 IP,Windows 服务器已升级为域控制器;
  • 在域里为 NAS 和 Ubuntu 各建一个以主机名命名的域用户;
  • 在 AD 的 DNS 里为 NAS 配好 A 记录和反向查找区域;
  • 用 ktpass 工具为 NAS 和 Ubuntu 分别生成 keytab 文件。

角色分工一句话:Windows 服务器是域控加 DNS 加 Kerberos 服务器,Ubuntu 是 Kerberos 与 NFS 客户端,NAS 是 Kerberos 客户端兼 NFS 服务器。

Ubuntu 客户端五步

  1. 安装软件包并启动服务:sudo apt-get install krb5-user 与 nfs-common,再 systemctl start rpc-gssd.service;
  2. 编辑 /etc/krb5.conf:default_realm 和 domain_realm 都指向域域名(域名遵循大小写约定,配置文件里常见全大写);
  3. 编辑 /etc/systemd/resolved.conf:DNS 指向 Windows 服务器 IP,Domains 填域名,DNSStubListener 设 no;Ubuntu 20.04 还要把 /run/systemd/resolve/resolv.conf 软链到 /etc/resolv.conf,22.04 及以上跳过这步;
  4. systemctl restart systemd-resolved 重启服务;
  5. 把 krb5.keytab 放到 /etc/ 目录,用 klist -k /etc/krb5.keytab 确认密钥已正确导入。

NAS 端三处设置

「控制面板 > 文件服务 > NFS」勾选启用 NFS 服务,最大 NFS 协议选 NFSv4,高级设置里把 NFSv4 域填成大写的域名;「Kerberos 设置」里导入 NAS 的 keytab 文件。再到「共享文件夹」编辑目标文件夹的 NFS 权限:主机名或 IP 填 Linux 客户端地址,「安全性」下拉选「Kerberos 认证」保存。DSM 6.2 的入口在「SMB/AFP/NFS」页签下,步骤相同。

挂载与验收

挂载命令:mount -t nfs -o nfsvers=4,sec=krb5 NAS地址:/volume1/共享文件夹 本地挂载点,执行 df -h 确认挂载出现、读写正常。验收别只测成功路径:拿一台未授权的机器尝试挂载,应当被拒绝——能拒掉冒充者,Kerberos 才算真生效。

常见的坑

  • Kerberos 不支持为单个域用户分配独立的 NFS 权限,细粒度授权仍要靠 NFS 权限规则设计;
  • 共享文件夹的安全性若保留 AUTH_SYS,客户端可以绕过 Kerberos 直接挂载,等于白配;
  • 支持的加密类型与内核版本相关,老内核可能缺新算法,排障先 uname -a 看内核;
  • 群晖官方支持范围仅限 NAS 侧配置,Windows 域控与 Linux 侧要有自己人能处理。

Linux 业务系统接 NAS 存储,认证与授权要一起规划。贵州本地企业可以找诚鑫致达科技协助落地。