1. firewalld防火墙设置
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload
其中,rpc-bind 服务通常会启用 111/udp 和 111/tcp 两种不同的端口。如果需要限制访问,可以使用如下命令(以例禁止 192.168.100.0/24 的网络访问):
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.100.0/24" reject'
sudo firewall-cmd --reload
2. 限制访问方式
禁用 NIS 和 LDAP 认证方式,只使用本地用户进行认证
sudo authconfig --disableldap --disableldapauth --disablenis --update
3. 加密通信
使用 Kerberos 加密方式,以保护 NFS 通信数据
# 安装Kerberos
sudo yum install -y krb5-workstation krb5-libs
# 创建 Kerberos 主机密钥和服务票证
sudo kadmin.local
kadmin.local: addprinc -randkey host/nfs.example.com
kadmin.local: ktadd host/nfs.example.com
kadmin.local: addprinc -randkey nfs/nfs.example.com
kadmin.local: ktadd nfs/nfs.example.com
kadmin.local: quit
其中,nfs.example.com 为 NFS 服务器的主机名
# 编辑 /etc/krb5.conf 文件,添加如下内容
[libdefaults]
default_realm = EXAMPLE.COM
[realms]
EXAMPLE.COM = {
kdc = kerberos.example.com
admin_server = kerberos.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
其中,EXAMPLE.COM 为 Kerberos 的默认域名,kerberos.example.com 为 Kerberos 服务器的主机名
# 修改 /etc/sysconfig/nfs 文件,增加以下配置
RPCGSSDARGS="-vvv -r nfs/nfs.example.com -k /etc/krb5.keytab"
其中,nfs.example.com 是 NFS 服务器的主机名,/etc/krb5.keytab 是由 kadmin.local 生成的 NFS 服务票证
# 重启服务
sudo systemctl restart nfs-server
sudo systemctl restart nfs-idmapd
sudo systemctl restart rpc-gssd
sudo systemctl restart rpcbind
4.指定访问权限
在 NFS 服务器上控制客户端的访问权限
sudo mkdir /demo
sudo chown nfsnobody:nfsnobody /demo
sudo chmod 777 /demo
5. 安装最新的nfs版本
yum install nfs-utils -y