Énumérer NFS répond à ce qui est exporté, à qui et sous quelles options, puis le montage révèle la propriété des fichiers qui gouverne les attaques d'usurpation et de squash. La liste des exports et la spécification des clients autorisés viennent du serveur ; les options critiques (root_squash vs no_root_squash, all_squash, sec=) ne sont pas toujours visibles à distance, donc monter et inspecter la propriété est la façon d'apprendre le modèle effectif.
# list exports and permitted clients
showmount -e <target> # e.g. /srv/share * (world) or 10.0.0.0/8
rpcinfo -p <target> # confirm mountd/nfs reachable
# mount an export and inspect
mkdir /mnt/nfs && mount -t nfs -o vers=3 <target>:/srv/share /mnt/nfs
ls -lan /mnt/nfs # numeric UID/GID ownership of files
mount -t nfs -o vers=4 <target>:/ /mnt/nfs # NFSv4 presents a single pseudo-root
Lisez ls -lan de façon numérique : l'UID/GID qui possède chaque fichier est ce que vous devez présenter pour le lire ou l'écrire sous AUTH_SYS. Les fichiers possédés par l'UID 0 testent si root est squashé ; les fichiers possédés par d'autres UID nomment les identités à usurper.
Notes d'exploitation#
showmount -eavec un joker ou une spécification de client large signifie que quiconque peut atteindre 2049 peut monter ; une liste de clients restreinte peut être contournable en usurpant l'adresse source sur un réseau à plat.- Les options d'export sont la vraie sécurité ; comme elles ne sont souvent pas visibles à distance, montez et testez, créez un fichier et voyez sous quel UID il atterrit, et lisez un fichier possédé par root, pour apprendre si
root_squash/all_squashs'appliquent. - NFSv4 utilise un unique pseudo-système de fichiers exporté et un mappage d'identité basé sur les noms plutôt que le modèle numérique par export de NFSv3 ; montez les deux versions pour voir ce que chacune expose.
- La carte de propriété alimente l'usurpation d'UID et de GID et le test no_root_squash.