\chapter{Les Intertubes} \label{chap:reseau} \index{Internet} Ah, le grand Internet sauvage, il serait temps qu'on en parle un peu. Nous allons voir dans ce chapitre des logiciels peu connus, et les quelques utilisations que l'on peut en faire afin d'avoir le label « techno-futilité ». Si vous attendiez des choses plus sérieuses, j'ai aussi ça en magasin : \textsc{dns} page \pageref{chap:DNS}, \textsc{ssh} page \pageref{chap:ssh}, streaming page \pageref{chap:streaming}, et probablement bien d'autres à venir. % http://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/ % ============================================================== \section{xinetd} \index{xinetd} \label{xinetd} Xinetd est un \textit{super-server daemon} qui gère l'accueil et le lancement pour certains services Internet essentiels tels que \texttt{daytime}\index{daytime} ou \texttt{echo}\index{echo}. Par rapport à son ancêtre \texttt{inetd}\index{inetd}, décrit en page \pageref{inetd}, il offre plus de souplesse dans la configuration et la gestion des droits d'accès. Ceci dit, de nos jours\footnote{Wed Nov 11 04:47:50 CET 2020}, il a probablement été remplacé par quelque chose d'encore plus étrange basé sur \textsl{systemd}\index{systemd}, puisque l'important ça n'est pas que ça soit mieux, mais que ce soit \textbf{nouveau}. Il fallait le dire. % --------------------------------------------------------- \subsection{Un serveur pour \textsl{qotd}} \label{xinetd:qotd} À titre d'exercice, nous allons reprendre l'exemple du serveur de \textsl{quote of the day} que nous avons déja utilisé avec Inetd\index{inetd} (page \pageref{qotd}), et lancer notre petit script par l'intermédiaire de Xinetd. Pour cela, il faut créer dans le répertoire \texttt{/etc/xinetd.d/}\footnote{Attention, ce répertoire est peut-être un debianisme, ymmv.} un fichier nommé \texttt{qotd} et contenant ceci : \begin{verbatim} service qotd { disable = no type = UNLISTED socket_type = stream protocol = tcp user = nobody server = /usr/local/bin/qotd.sh } \end{verbatim} Bien entendu, le script \texttt{qotd.sh} décrit en page \pageref{inetd} sera placé dans le bon répertoire. Et ouvert aux quatre vents par un \texttt{sudo chmod a+x /usr/local/bin/qotd.sh} de bon aloi. \index{fortune} \lstinputlisting[language=sh]{code/inet/qotd.sh} Ensuite, il faut demander à Xinetd de relire ses fichiers de configuration par un bon \textsc{SIGHUP} bien senti et au bon endroit, c'est à dire le PID que l'on pourra (peut-être) obtenir dans \texttt{/var/run/xinetd.pid}, et paf. Allons voir si cela fonctionne. Ah, on me murmure dans l'oreille que Xinetd n'existe plus dans les Linux modernes, et qu'il existe quelque chose de \textit{beaucoup mieux}. Je ne sais pas quoi. Je demande à voir\footnote{Parce que c'est écrit par LP ?}. % --> https://0pointer.de/blog/projects/inetd.html % ============================================================== \section{Translation d'adresse} \index{NAT} % XXX expliquer un peu le NAT ! Voir en page \pageref{NAT} pour découvrir comment utiliser une machine connectée en WiFi pour donner accès à Internet à votre réseau local Ethernet\dots Mais cette translation d'adresse peut avoir aussi d'autres défis à relever pour en faire une solution complexe et amusante à des problèmes inexistants et datant du siècle dernier. Par exemple la comparaison de la mise en œuvre du NAT avec \texttt{iptables} et \texttt{pfctl} est une source de trolls sans fin. % ============================================================== \section{Outils de diagnostic} iftop\index{iftop}, iptraf\index{iptraf} \dots Mais c'est toujours la faute du \textsc{dns}\index{dns}. % ------------------------------------------------------------- \subsection{iperf} \index{iperf} Avec \texttt{iperf}, on peut mesurer le débit du réseau IP (en TCP\index{TCP} ou UDP\index{UDP}) entre deux machines. Il faut d'abord le lancer sur la machine cible en mode "serveur" ou "daemon". Ensuite, des clients peuvent mesurer le débit entre eux-même et le serveur. Le port par défaut utilisé est le 5001. % ------------------------------------------------------------- \subsection{tcpdump} \index{tcpdump} \label{tcpdump} C'est clairement un outil dédié au voyeurisme, mais qui permet de décrypter les ésotérismes de MiniMad\index{minimad}. C'est donc sur cet exemple que nous allons partir. Ces gadgets dialoguent entre eux par le protocole \textsl{Bonjour}\index{Bonjour}, aka \textsl{ZeroConf}% \footnote{C'est en page \pageref{chap:Bonjour} qu'on en parle vaguement}. Mais en fait, non. Je n'ai plus les Minimad sous la main. Il va falloir trouver un autre exemple, ou l'imaginer nous-même. % ------------------------------------------------------------- \subsection{nmap} \index{nmap} C'est clairement aussi un outil dédié au voyeurisme à distance, puisque il permet de découvrir, avec plus ou moins de détails, les services exposés à l'extérieur par une machine distante. Comment scanner un /24 pour y découvrir les machines ? \begin{verbatim} # nmap -sS 192.168.42.0/24 \end{verbatim} \texttt{-sS} = TCP SYN scan. % ============================================================== \section{netcat} \index{netcat} \textbf{Attention :} Il existe au moins $N$ variantes de netcat en circulation, bien entendu avec des options et des comportements différents. \begin{quote} The nc (or netcat) utility is used for just about anything under the sun involving TCP or UDP. It can open TCP connections, send UDP packets, listen on arbitrary TCP and UDP ports, do port scanning, and deal with both IPv4 and IPv6\footnote{Voir le chapitre \ref{chap:IPv6} pour cette nouveauté.}. Unlike telnet(1), nc scripts nicely, and separates error messages onto standard error instead of sending them to standard output, as telnet(1) does with some. \end{quote} Netcat was written by a guy we know as the Hobbit . % ==============================================================