我已经使用 NFS 设置了 kerberos 并且它运行良好。
然而,它的工作方式似乎存在问题,任何 Kerberos 客户端似乎都能够访问任何目录(如果他们使用正确的 IP)
在 NFS 服务器(192.168.1.12)上:
$ exportfs -v
/data/mail 192.168.1.13(rw,wdelay,root_squash,no_subtree_check,mountpoint,sec=krb5,rw,secure,no_all_squash)
/data/web 192.168.1.14(rw,wdelay,root_squash,no_subtree_check,mountpoint,sec=krb5,rw,secure,no_all_squash)
我在不同的服务器上托管邮件和网站。这样一来,如果其中一个服务器被攻破,攻击者就无法访问另一个服务器。
因此,我设置了 nfs 和 kerberos,这样 mail.example.com (.13) 可以挂载 /data/mail,web.example.com (.14) 可以挂载 /data/web,而两者都无法挂载对方。到目前为止一切顺利。但是,我随后将 web.example.com 上的 IP 更改为 .13,然后我就可以挂载 /data/mail。
它在 web.example.com 上的样子如下:
ktutil: rkt /etc/krb5.keytab
ktutil: list
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
1 2 nfs/[email protected]
2 2 nfs/[email protected]
在 mail.example.com 上:
ktutil: rkt /etc/krb5.keytab
ktutil: list
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
1 2 nfs/[email protected]
2 2 nfs/[email protected]
/etc/hosts 在 NFS 服务器上的样子如下:
192.168.1.11 kdc.example.com
192.168.1.13 mail.example.com
192.168.1.14 web.example.com
我原本以为,由于 web.example.com 有一个标识为 web.example.com 的票据,因此即使它使用了 mail.example.com 的 IP,也无法挂载 /data/mail。但似乎只要您有任何有效的 kerberos 票据和正确的 IP,您就可以挂载任何目录。这对我来说有点违背了 kerberos 的意义,因为这不是我期望有人接入的网络。这真的是 NFS 的 kerberos 所能防范的唯一威胁吗?还是我配置错误了?
答案1
sec=krb5
不会阻止任何系统安装有效票证,但这不是它的工作。
它将阻止未经授权的客户端(基于 uid/gid 而不是 ip)访问文件。 假设您做了像 make a 这样愚蠢的事情[email protected]
,您可能只需要加强您的文件权限。
即使是root_squash
远程 root 也可以将其 euid 更改为具有适当访问权限的某个值sec=sys
。对于任何 krb5 选项来说,情况并非如此。当然,这一切都不适用于文件/目录是否具有允许其他人的权限,例如 775 将允许读取,但 770 则不允许。
sec=krb5i
旁注:如果没有,您至少应该使用sec=krb5p
。