Référence des ports
Port 2049 (TCP) – NFS
Network File System — protocole Unix/Linux pour partager des répertoires sur le réseau.
État par défaut
Ouvert sur les hôtes exécutant un serveur NFS avec des partages exportés. Non activé par défaut ; souvent exposé dans les réseaux de datacenter et de stockage.
Attaques courantes
- Énumération des exports pour découvrir les répertoires partagés
- Lecture/écriture non authentifiée sur les exports accessibles à tous
- Élévation de privilèges via la mauvaise configuration no_root_squash
- Usurpation d'UID/GID pour accéder aux fichiers d'autres utilisateurs (AUTH_SYS)
Durcissement
- Ne jamais exporter vers * — restreindre les exports à des hôtes/sous-réseaux précis
- Activer root_squash (éviter no_root_squash) et exporter en lecture seule si possible
- Utiliser NFSv4 avec Kerberos (krb5p) pour l'authentification et le chiffrement
- Ne pas exposer le port 2049 à Internet — le garder sur des réseaux internes de confiance
- Auditer régulièrement /etc/exports et la sortie de showmount
Commande nmap
nmap -p2049 --script nfs-showmount,nfs-ls,nfs-statfs <target>Remplacez <target> par l’hôte ou la plage que vous êtes autorisé à scanner.
Ce qui s'exécute sur le port 2049
Le port 2049 est le port standard de NFS (Network File System), le protocole Unix/Linux permettant de monter et d'accéder à des répertoires distants comme s'ils étaient locaux. NFSv4 regroupe tout sur le port 2049, tandis que NFSv2/v3 s'appuient en plus sur le portmapper (port 111) et des services annexes comme mountd. Il est l'épine dorsale du stockage partagé dans de nombreux datacenters et clusters.
Pourquoi c'est important pour la sécurité
Le NFS traditionnel avec authentification AUTH_SYS fait confiance à l'UID/GID
revendiqué par le client, de sorte que quiconque peut joindre l'export peut
usurper n'importe quel utilisateur et lire ou écrire ses fichiers. Des exports
laxistes (partage vers *) exposent les données à tout le réseau, et l'option
no_root_squash laisse un root distant agir en root sur le partage — une voie
directe pour déposer des binaires SUID ou altérer des fichiers système. Exposer le
2049 à Internet est particulièrement dangereux.
Comment c'est attaqué
Les attaquants lancent showmount -e ou le script nmap nfs-showmount
pour lister les répertoires exportés, puis montent les partages accessibles à tous
et utilisent nfs-ls pour parcourir et exfiltrer des données — souvent sans
aucune authentification. En usurpant l'UID/GID, ils atteignent les fichiers
d'autres utilisateurs. Lorsque no_root_squash est défini, ils écrivent un
binaire SUID appartenant à root pour élever leurs privilèges sur l'hôte
détenant les données.
Liste de durcissement
N'exportez jamais vers * — limitez chaque export à des hôtes ou sous-réseaux
précis et rendez-le en lecture seule si possible. Gardez root_squash
activé et évitez no_root_squash. Passez à NFSv4 avec Kerberos (krb5p) pour
une vraie authentification et un chiffrement plutôt que de faire confiance aux UID
clients. Gardez le 2049 (et le 111) hors d'Internet, confinés à des segments de
confiance, et auditez régulièrement /etc/exports. Utilisez la commande nmap
ci-dessus pour énumérer les exports sur les systèmes que vous êtes autorisé à
tester.
Ports liés
Questions fréquentes
- NFS sur le port 2049 est-il sécurisé ?
- Seulement s'il est durci. Le NFS classique (AUTH_SYS) fait confiance à l'UID/GID fourni par le client, donc un attaquant sur le réseau peut usurper n'importe quel utilisateur. Utilisez NFSv4 avec Kerberos et des règles d'export strictes.
- Quel est le risque de no_root_squash ?
- no_root_squash permet à un root distant d'agir en tant que root sur l'export. Un attaquant peut écrire un binaire SUID ou modifier des fichiers pour élever ses privilèges sur les données du serveur.