21.8. Securing NFS
NFS is well suited for sharing entire file systems with a large number of known hosts in a transparent manner. However, with ease of use comes a variety of potential security problems.
The following points should be considered when exporting NFS file systems on a server or mounting them on a client. Doing so minimizes NFS security risks and better protects data on the server.
21.8.1. Host Access
Depending on which version of NFS you plan to implement, depends on your existing network environment, and your security concerns. The following sections explain the differences between implementing security measures with NFSv2, NFSv3, and NFSv4. If at all possible, use of NFSv4 is recommended over other versions of NFS.
21.8.1.1. Using NFSv2 or NFSv3
NFS controls who can mount an exported file system based on the host making the mount request, not the user that actually uses the file system. Hosts must be given explicit rights to mount the exported file system. Access control is not possible for users, other than through file and directory permissions. In other words, once a file system is exported via NFS, any user on any remote host connected to the NFS server can access the shared data. To limit the potential risks, administrators often allow read-only access or squash user permissions to a common user and group ID. Unfortunately, these solutions prevent the NFS share from being used in the way it was originally intended.
Additionally, if an attacker gains control of the DNS server used by the system exporting the NFS file system, the system associated with a particular hostname or fully qualified domain name can be pointed to an unauthorized machine. At this point, the unauthorized machine is the system permitted to mount the NFS share, since no username or password information is exchanged to provide additional security for the NFS mount.
Wildcards should be used sparingly when exporting directories via NFS as it is possible for the scope of the wildcard to encompass more systems than intended.
It is also possible to restrict access to the
portmap
service via TCP wrappers. Access to ports used by portmap
, rpc.mountd
, and rpc.nfsd
can also be limited by creating firewall rules with iptables
.
For more information on securing NFS and
portmap
, refer to Section 48.9, “IPTables”.
21.8.1.2. Using NFSv4
The release of NFSv4 brought a revolution to authentication and security to NFS exports. NFSv4 mandates the implementation of the RPCSEC_GSS kernel module and the Kerberos version 5 GSS-API mechanism. With NFSv4, the mandatory security mechanisms are oriented towards authenticating individual users, and not client machines as used in NFSv2 and NFSv3.
Note
It is assumed that a Kerberos ticket-granting server (KDC) is installed and configured correctly, prior to configuring an NFSv4 server. Kerberos is a network authentication system which allows clients and servers to authenticate to each other through use of symmetric encryption and a trusted third party, the KDC.
Important
When the NFSv4 server is configured to use the Kerberos version 5 GSS-API mechanism, the use of NFS over UDP is not supported and an attempt to mount the NFS-exported file system on the client system may fail. Consequently, users are advised to use TCP in this situation. Refer to Section 21.10, “Using NFS over TCP” for more information.
NFSv4 includes ACL support based on the Microsoft Windows NT model, not the POSIX model, because of its features and because it is widely deployed. NFSv2 and NFSv3 do not have support for native ACL attributes.
Another important security feature of NFSv4 is the removal of the use of the MOUNT protocol for mounting file systems. This protocol presented possible security holes because of the way that it handled file handles.
For more information on the RPCSEC_GSS framework, including how
rpc.svcgssd
and rpc.gssd
inter operate, refer to http://www.citi.umich.edu/projects/nfsv4/gssd/.