8.3. Sécuriser le service NFS


Vous pouvez sécuriser la version 4 du système de fichiers réseau (NFSv4) en authentifiant et en chiffrant toutes les opérations du système de fichiers à l'aide de Kerberos. Lorsque vous utilisez NFSv4 avec un NAT (Network Address Translation) ou un pare-feu, vous pouvez désactiver les délégations en modifiant le fichier /etc/default/nfs. La délégation est une technique par laquelle le serveur délègue la gestion d'un fichier à un client.

En revanche, NFSv3 n'utilise pas Kerberos pour le verrouillage et le montage des fichiers.

Le service NFS envoie le trafic en utilisant TCP dans toutes les versions de NFS. Le service prend en charge l'authentification des utilisateurs et des groupes Kerberos, dans le cadre du module du noyau RPCSEC_GSS.

NFS permet aux hôtes distants de monter des systèmes de fichiers sur un réseau et d'interagir avec ces systèmes de fichiers comme s'ils étaient montés localement. Vous pouvez fusionner les ressources sur des serveurs centralisés et personnaliser les options de montage NFS dans le fichier /etc/nfsmount.conf lors du partage des systèmes de fichiers.

8.3.1. Options d'exportation pour sécuriser un serveur NFS

Le serveur NFS détermine une structure de liste de répertoires et d'hôtes concernant les systèmes de fichiers à exporter vers les hôtes dans le fichier /etc/exports.

Avertissement

Des espaces supplémentaires dans la syntaxe du fichier d'exportation peuvent entraîner des changements importants dans la configuration.

Dans l'exemple suivant, le répertoire /tmp/nfs/ est partagé avec l'hôte bob.example.com et dispose d'autorisations de lecture et d'écriture.

/tmp/nfs/     bob.example.com(rw)

L'exemple suivant est le même que le précédent, mais il partage le même répertoire avec l'hôte bob.example.com avec des autorisations de lecture seule et le partage avec l'hôte world avec des autorisations de lecture et d'écriture en raison d'un seul caractère d'espace après le nom d'hôte.

/tmp/nfs/     bob.example.com (rw)

Vous pouvez vérifier les répertoires partagés de votre système en entrant la commande showmount -e <hostname>.

Utilisez les options d'exportation suivantes sur le fichier /etc/exports:

Avertissement

Exporter un système de fichiers entier, car l'exportation d'un sous-répertoire d'un système de fichiers n'est pas sécurisée. Un pirate peut éventuellement accéder à la partie non exportée d'un système de fichiers partiellement exporté.

ro
Utilisez l'option ro pour exporter le volume NFS en lecture seule.
rw

Utilisez l'option rw pour autoriser les demandes de lecture et d'écriture sur le volume NFS. Utilisez cette option avec prudence, car le fait d'autoriser l'accès en écriture augmente le risque d'attaques.

Note

Si votre scénario nécessite de monter les répertoires avec l'option rw, assurez-vous qu'ils ne sont pas accessibles en écriture à tous les utilisateurs afin de réduire les risques éventuels.

racine_squash
Utilisez l'option root_squash pour faire correspondre les requêtes provenant de uid/gid 0 avec les requêtes anonymes uid/gid. Cela ne s'applique pas aux autres uids ou gids qui pourraient être tout aussi sensibles, comme l'utilisateur bin ou le groupe staff.
no_root_squash
Utilisez l'option no_root_squash pour désactiver l'écrasement de la racine. Par défaut, les partages NFS remplacent l'utilisateur root par l'utilisateur nobody, qui est un compte d'utilisateur non privilégié. Le propriétaire de tous les fichiers créés par root devient nobody, ce qui empêche le téléchargement de programmes dont le bit setuid est défini. Lorsque l'option no_root_squash est utilisée, les utilisateurs root distants peuvent modifier n'importe quel fichier sur le système de fichiers partagé et laisser des applications infectées par des chevaux de Troie à d'autres utilisateurs.
sécurisé
L'option secure permet de limiter les exportations aux ports réservés. Par défaut, le serveur n'autorise la communication avec les clients que par l'intermédiaire des ports réservés. Cependant, sur de nombreux réseaux, il est facile pour n'importe qui de devenir un utilisateur root sur un client, de sorte qu'il est rarement sûr pour le serveur de supposer que la communication via un port réservé est privilégiée. Par conséquent, la restriction aux ports réservés n'a qu'une valeur limitée ; il est préférable de s'appuyer sur Kerberos, les pare-feu et la restriction des exportations à des clients particuliers.

En outre, il convient de tenir compte des meilleures pratiques suivantes lors de l'exportation d'un serveur NFS :

  • L'exportation des répertoires personnels présente un risque car certaines applications stockent les mots de passe en texte clair ou dans un format faiblement crypté. Vous pouvez réduire ce risque en révisant et en améliorant le code de l'application.
  • Certains utilisateurs ne définissent pas de mots de passe sur les clés SSH, ce qui entraîne à nouveau des risques avec les répertoires personnels. Vous pouvez réduire ces risques en imposant l'utilisation de mots de passe ou en utilisant Kerberos.
  • Limitez les exportations NFS aux seuls clients nécessaires. Utilisez la commande showmount -e sur le serveur NFS pour vérifier ce que le serveur exporte. N'exportez rien qui ne soit pas spécifiquement requis.
  • Pour réduire le risque d'attaques, n'autorisez pas les utilisateurs inutiles à se connecter à un serveur. Vous pouvez vérifier périodiquement qui et quoi peut accéder au serveur.

Ressources supplémentaires

8.3.2. Options de montage pour sécuriser un client NFS

Vous pouvez ajouter les options suivantes à la commande mount afin d'améliorer la sécurité des clients NFS :

nosuid
Utilisez l'option nosuid pour désactiver les bits set-user-identifier ou set-group-identifier. Cela empêche les utilisateurs distants d'obtenir des privilèges plus élevés en exécutant un programme setuid et vous pouvez utiliser cette option à l'inverse de l'option setuid.
noexec
L'option noexec permet de désactiver tous les fichiers exécutables sur le client. Cette option permet d'éviter que les utilisateurs n'exécutent accidentellement des fichiers placés dans le système de fichiers partagés.
nodev
Utilisez l'option nodev pour empêcher le client de traiter les fichiers de périphérique comme un périphérique matériel.
resvport
Utilisez l'option resvport pour restreindre la communication à un port réservé et vous pouvez utiliser un port source privilégié pour communiquer avec le serveur. Les ports réservés sont réservés aux utilisateurs et processus privilégiés tels que l'utilisateur root.
sec
Utilisez l'option sec sur le serveur NFS pour choisir la saveur de sécurité RPCGSS pour l'accès aux fichiers sur le point de montage. Les saveurs de sécurité valides sont none, sys, krb5, krb5i et krb5p.
Important

Les bibliothèques MIT Kerberos fournies par le paquetage krb5-libs ne prennent pas en charge l'algorithme Data Encryption Standard (DES) dans les nouveaux déploiements. Pour des raisons de sécurité et de compatibilité, l'algorithme DES est déprécié et désactivé par défaut dans les bibliothèques Kerberos. Utilisez des algorithmes plus récents et plus sûrs au lieu de DES, à moins que votre environnement n'exige DES pour des raisons de compatibilité.

Ressources supplémentaires

8.3.3. Sécuriser NFS avec un pare-feu

Pour sécuriser le pare-feu d'un serveur NFS, ne laissez ouverts que les ports nécessaires. N'utilisez pas les numéros de port de la connexion NFS pour un autre service.

Conditions préalables

  • Le paquet nfs-utils est installé.
  • Le paquet firewalld est installé et fonctionne.

Procédure

  • Sur NFSv4, le pare-feu doit ouvrir le port TCP 2049.
  • Sur NFSv3, ouvrez quatre ports supplémentaires avec 2049:

    1. rpcbind attribue les ports NFS de manière dynamique, ce qui peut poser des problèmes lors de la création de règles de pare-feu. Pour simplifier ce processus, utilisez le fichier /etc/nfs.conf pour spécifier les ports à utiliser :

      1. Définir le port TCP et UDP pour mountd (rpc.mountd) dans la section [mountd] au format port=<value> format.
      2. Définir le port TCP et UDP pour statd (rpc.statd) dans la section [statd] au format port=<value> format.
    2. Définissez les ports TCP et UDP pour le gestionnaire de verrous NFS (nlockmgr) dans le fichier /etc/nfs.conf:

      1. Définissez le port TCP pour nlockmgr (rpc.statd) dans la section [lockd] au format port=value. Vous pouvez également utiliser l'option nlm_tcpport dans le fichier /etc/modprobe.d/lockd.conf.
      2. Définissez le port UDP pour nlockmgr (rpc.statd) dans la section [lockd] au format udp-port=value. Vous pouvez également utiliser l'option nlm_udpport dans le fichier /etc/modprobe.d/lockd.conf.

Verification steps

  • Liste des ports actifs et des programmes RPC sur le serveur NFS :

    $ rpcinfo -p

Ressources supplémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.