Aller au contenu

NFS

NFS (Network File System) permet de monter un répertoire distant comme s’il faisait partie du système de fichiers local — l’équivalent, dans le monde Unix/Linux, du rôle que joue SMB dans le monde Windows, avec une philosophie et un modèle de sécurité différents.

Un serveur NFS exporte un ou plusieurs répertoires (déclarés dans /etc/exports), qu’un client peut ensuite monter dans son propre arbre de fichiers :

Fenêtre de terminal
# Côté serveur, /etc/exports
/srv/partage 10.0.0.0/24(rw,sync,no_subtree_check)
# Côté client
mount -t nfs serveur:/srv/partage /mnt/partage

Une fois monté, le répertoire distant est transparent pour les applications : elles lisent et écrivent des fichiers sans savoir qu’ils se trouvent physiquement sur un autre serveur.

  • NFSv3 : plusieurs ports dynamiques (via rpcbind/portmapper pour la découverte des services), plus délicat à faire traverser un pare-feu — un problème similaire à celui rencontré avec FTP.
  • NFSv4 : un seul port (2049), authentification renforcée possible via Kerberos, et surtout un modèle de sécurité par utilisateur plus fin — une nette simplification opérationnelle par rapport à NFSv3.

Le modèle de sécurité historique de NFS : une confiance par défaut au réseau

Section intitulée « Le modèle de sécurité historique de NFS : une confiance par défaut au réseau »

NFS (en particulier en v3, et par défaut même en v4 sans configuration Kerberos) fait traditionnellement confiance à l’identité numérique (UID/GID Unix) transmise par le client — sans vérification cryptographique de qui est réellement ce client. Un poste capable de se faire passer pour l’UID d’un autre utilisateur (root y compris via no_root_squash mal configuré) peut accéder aux fichiers correspondants.

  • root_squash (activé par défaut) : mappe l’utilisateur root du client vers un utilisateur non privilégié côté serveur, pour éviter qu’un accès root sur un poste client se traduise en accès root sur les fichiers exportés.
  • NFS avec Kerberos (sec=krb5) corrige la faiblesse de fond en ajoutant une authentification cryptographique réelle des clients, au prix d’une configuration plus complexe.