NFS does not encrypt the traffic in its nativ state. Encryption can be added by kerberizing the NFS-Server. I'll use the following setup:
IPA-Server:
- CentOS 7.5
- SELinux and firewalld enabled
- Provides IPA-Services to NFS-Server and NFS-Client
- IP-Address: 172.31.0.10/24
- Hostname: ipa-server.archyslife.lan
NFS-Server:
- CentOS 7.5
- SELinux and firewalld enabled
- Joined to the IPA-Domain
- Provides kerberized and normal NFS-Shares to the Client
- IP-Address: 172.31.0.20/24
- Hostname: nfs-server.archyslife.lan
NFS-Client:
- CentOS 7.5
- SELinux and firewalld enabled
- Joined to the IPA-Domain
- Mounts the Shares from NFS-Server
- IP-Address: 172.31.0.30/24
- Hostname: nfs-client.archyslife.lan
I'm not going to go through the installation of the FreeIPA-Server since I've already covered this topic here: Installing a FreeIPA-Server
Create the kerberos principals for the nfs-service on the ipa-server:
At this point, I recomment rebooting both servers to initialize the /etc/krb5.keytab we created earlier, otherwise you're likely to get 'permission denied' errors while authenticating.
Now it's time to install the nfs-utils on both the server and the client:
First, create the destination-mount directories:
Feel free to comment and / or suggest a topic.
- CentOS 7.5
- SELinux and firewalld enabled
- Provides IPA-Services to NFS-Server and NFS-Client
- IP-Address: 172.31.0.10/24
- Hostname: ipa-server.archyslife.lan
NFS-Server:
- CentOS 7.5
- SELinux and firewalld enabled
- Joined to the IPA-Domain
- Provides kerberized and normal NFS-Shares to the Client
- IP-Address: 172.31.0.20/24
- Hostname: nfs-server.archyslife.lan
NFS-Client:
- CentOS 7.5
- SELinux and firewalld enabled
- Joined to the IPA-Domain
- Mounts the Shares from NFS-Server
- IP-Address: 172.31.0.30/24
- Hostname: nfs-client.archyslife.lan
I'm not going to go through the installation of the FreeIPA-Server since I've already covered this topic here: Installing a FreeIPA-Server
Create the kerberos principals for the nfs-service on the ipa-server:
[archy@ipa-server ~]$ ipa service-add nfs/nfs-server.archyslife.lan
[archy@ipa-server ~]$ ipa service-add nfs/nfs-client.archyslife.lan
Create the keytab with the new principal on our kerberos-clients: [archy@nfs-server ~]$ sudo kinit archy
[archy@nfs-server ~]$ sudo ipa-getkeytab -s ipa-server.archyslife.lan -p nfs/nfs-server.archyslife.lan -k /etc/krb5.keytab
[archy@nfs-client ~]$ sudo kinit archy
[archy@nfs-client ~]$ sudo ipa-getkeytab -s ipa-server.archyslife.lan -p nfs/nfs-client.archyslife.lan -k /etc/krb5.keytab
Now that we have created our keytab files, let's confirm that we have the nfs-principal enabled [archy@nfs-server ~]$ sudo klist -k
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
2 host/nfs-server.archyslife.lan@ARCHYSLIFE.LAN
2 host/nfs-server.archyslife.lan@ARCHYSLIFE.LAN
6 nfs/nfs-server.archyslife.lan@ARCHYSLIFE.LAN
6 nfs/nfs-server.archyslife.lan@ARCHYSLIFE.LAN
[archy@nfs-client ~]$ sudo klist -k
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
1 host/nfs-client.archyslife.lan@ARCHYSLIFE.LAN
1 host/nfs-client.archyslife.lan@ARCHYSLIFE.LAN
1 nfs/nfs-client.archyslife.lan@ARCHYSLIFE.LAN
1 nfs/nfs-client.archyslife.lan@ARCHYSLIFE.LAN
Also, for convenience, let ipa configure the automounter: [archy@nfs-server ~]$ sudo ipa-client-automount
[archy@nfs-client ~]$ sudo ipa-client-automount
NOTE:At this point, I recomment rebooting both servers to initialize the /etc/krb5.keytab we created earlier, otherwise you're likely to get 'permission denied' errors while authenticating.
Now it's time to install the nfs-utils on both the server and the client:
[archy@nfs-server ~]$ sudo yum -y install nfs-utils
Now that the NFS-Utils package is installed on the server, let's configure it: [archy@nfs-server ~]$ sudo vim /etc/exports
# Normal Share
/srv/nfs/public 172.31.0.0/24(rw)
# Kerberized Share
/srv/nfs/secure *.archyslife.lan(rw,sec=krb5p)
And of course you'll need to create the directories and assign the appropriate SELinux Contexts: [archy@nfs-server ~]$ sudo mkdir -p /srv/nfs/public
[archy@nfs-server ~]$ sudo mkdir/srv/nfs/secure
[archy@nfs-server ~]$ sudo semanage fcontext -a -t nfs_t "/srv/nfs(/.*)?"
[archy@nfs-server ~]$ sudo restorecon -Rv /srv/nfs
Now it's time to restart and enable our nfs.service [archy@nfs-server ~]$ sudo systemctl restart nfs.service
[archy@nfs-server ~]$ sudo systemctl enable nfs.service
And create the necessary firewall-rules: [archy@nfs-server ~]$ sudo firewall-cmd --add-service={nfs,mountd,rpc-bind} --permanent
[archy@nfs-server ~]$ sudo firewall-cmd --reload
That completes the setup on the server, now let's configure our client.First, create the destination-mount directories:
[archy@nfs-client ~]$ sudo mkdir /mnt/secure
[archy@nfs-client ~]$ sudo mkdir /mnt/public
Now let's test if everything on the server worked correctly: [archy@nfs-client ~]$ showmount -e nfs-server.archyslife.lan
Export list for nfs-server.archyslife.lan:
/srv/nfs/secure *.archyslife.lan
/srv/nfs/public 172.19.243.0/24
The Shares have been exported successfully and can be seen on our client. You can test the mountpoints by running the following commands: [archy@nfs-client ~]$ sudo mount -o sec=krb5p nfs-server.archyslife.lan:/srv/nfs/secure /mnt/secure
[archy@nfs-client ~]$ sudo mount nfs-server.archyslife.lan:/srv/nfs/public /mnt/public
But since we want the system to automatically mount these shares, we'll need to create entries in /etc/fstab: [archy@nfs-client ~]$ sudo vim /etc/fstab
nfs-server.archyslife.lan:/srv/nfs/secure /mnt/secure nfs4 rw,sec=krb5p
nfs-server.archyslife.lan:/srv/nfs/public /mnt/public nfs4 rw
You could trigger the system to mount the entries in /etc/fstab manually: [archy@nfs-client ~]$ sudo mount -va
That concludes the setup of kerberized nfs.Feel free to comment and / or suggest a topic.
Comments
Post a Comment