evoformations/support/nfs.tex

90 lines
4.2 KiB
TeX
Raw Normal View History

2012-05-21 16:07:10 +02:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright (c) 2004-2005 eVoLiX. Tous droits reserves.%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{NFS}
\subsection{Pr<EFBFBD>sentation}
NFS signifie \textit{Network File System}. Ce protocole permet de partager des syst<73>mes de fichiers en r<>seau, rendant ainsi leurs utilisations transparentes, comme si ceux-ci <20>taient pr<70>sent localement.\\
La proc<6F>dure est la suivante~:
\subsection{Mise en place}
\begin{itemize}
\item La machine h<>te du syst<73>me de fichiers doit dreeser des autorisations selon un certain nombre de crit<69>res (adresses ip de la machine cible, droits etc.); ceci est r<>alis<69> via le fichier "exports".\\
\item La machine cible monte le dit syst<73>me de fichiers afin de pouvoir le lire / <20>crire, en indiquant ou celui-ci se trouve (h<>te source) et quel est le point de montage
\end{itemize}
\subsection{Caract<EFBFBD>ristiques techniques}
Le protocole NFS est bas<61> sur la communication RPC (Remore Procedure Call). Un syst<73>me NFS se compose de plusieurs <20>l<EFBFBD>ments~:
\begin{itemize}
\item le serveur nfsd qui va permettre de recevoir les requ<71>tes RCP des clients et les g<>rer
\item le d<>mon mountd qui met <20> disposition les syst<73>me de fichiers et g<>re les points de montage
\item le client nfs qui va faire une demande d'acc<63>s au syst<73>me de fichier
\item <20>ventuellement, un d<>mon rwhod g<>rant les r<>sultats collect<63>s par who
\item le d<>mon "portmapper" qui fait la conversion entre le num<75>ro de port utilis<69> par RPC et le num<75>ro de port utilis<69> par DARPA
\end{itemize}
~\\
Le syst<73>me NFS utilise un certains nombres de ports, voici les principaux~:
\begin{itemize}
\item portmap : \textit{111/tcp, 111/udp}
\item nfs : \textit{2049/tcp, 2049/udp}
\item mountd : \textit{872/udp, 872/tcp, 875/udp, 875/tcp}
\end{itemize}
~\\
Les paquets r<>seau utilis<69>s par NFS peuvent dans certains cas <20>tre quelque peu sp<73>ciaux. Par exemple, les serveurs NFS ont tendance <20> envoyer des paquets avec le bit DF (Don't Fragment) <20> 1, et ce m<>me pour des paquets en r<>alit<69>s fragment<6E>s; ceux-ci sont en g<>n<EFBFBD>ral supprim<69>s par le premier firewall interm<72>diaire rencontr<74>.
\subsection{Exemple de mise en place}
Tout d'abord, nous devons ajouter sur la machine serveur un enregistrement du syst<73>me de fichiers qui va <20>tre mis <20> disposition. On ajoutera par exemple dans /etc/exports :
\begin{verbatim}
/home/debian -alldirs -network 192.168.1.0 -mask 255.255.255.0
\end{verbatim}
D'autres options sont <20>galement tr<74>s utilis<69>es, comme "root-squash" qui permet de diff<66>rencier le root de la cible et le root de la source, ou RW / RO qui permettent de sp<73>cifier les droits <20> utiliser sur les syst<73>mes de fichiers partag<61>s par NFS.\\
Lancer <20> pr<70>sent les services suivants : portmap - nfsd - mountd.\\
Pour la partie client, il faut <20> pr<70>sent indiquer <20> notre h<>te ce que l'on veut monter, en l'occurrence notre syst<73>me de fichiers /home/debian. Pour cela, ajoutons au fichier /etc/fstab une ligne semblable <20> :
\begin{verbatim}
serveur_nfs:/home/debian /home/debian_client nfs rw 0 0
\end{verbatim}
Il est <20> noter que le serveur apparaissant sous le nom "serveur\_nfs" doit poss<73>der un enregistrement DNS; vous pouvez cel<65>-dit <20>galement sp<73>cifier l'IP, <20> votre convenance.\\
Cel<EFBFBD>-dit, m<>me si la version 4 de NFS est jug<75>e plus sure, ce type de services peut s'av<61>rer dangereux, pour le serveur comme pour le client. Il peut donc <20>tre judicieux de mettre en place un syst<73>me de restrictions bas<61> sur TCP Wrappers. Par exemple~:\\
Dans le fichier /etc/hosts.deny, on refuse tout par d<>faut~:
\begin{verbatim}
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
\end{verbatim}
Ceci signifie que l'on refuse par d<>faut (un peu <20> la mani<6E>re d'un firewall) tout ce qui touche au RPC et <20> NFS. Puis, on dresse une liste d'autorisation, dans le fichier /etc/hosts.allow~:
\begin{verbatim}
portmap:192.168.1.1
lockd:192.168.1.1
mountd:192.168.1.1
rquotad:192.168.1.1
statd:192.168.1.1
\end{verbatim}
Enfin, afin de vous assurez du bon fonctionnement de votre syst<73>me NFS,
vous pouvez utiliser la commande 'rpcinfo' afin de d<>tecter
d'<27>ventuelles anomalies au niveau du fonctionnement RPC. Le montage des
volumes NFS peut <20>tre r<>alis<69> de fa<66>on automatique par des d<>mons comme
\textit{amd} et \textit{autofs}.