Créer un tunnel sécurisé

Le matériel nécessaire à la réalisation de ce travail est disponible à l’url suivante : http://infoweb-ens/~hernandez-n.

Objectifs

L'objectif de ce travail est d'apprendre à manupuler des tunnels sécurisés.

Introduction

La commande netcat (nc) est présentée comme le couteau suisse de la gestion des connexions TCP/IP.

Netcat est un outil très facile d'utilisation qui peut lire et écrire sur des connexions réseaux (socket) utilisant les protocoles TCP ou UDP.

Il permet ainsi de faire du debugging de réseau, de l'exploration (port scanning). Il peut agir en tant que client ou en tant que serveur, servir à du transfert de données (input standard ou fichier), exécuter des scripts lors de connexions, voire même servir de relais (proxy) entre pour un serveur.

Netcat peut aussi être utilisé pour diverses autres pratiques : banner-grabbing, Tar, Shell Shoveling UDP, port scanning UDP, Spoofing, Cryptcat... Nous ne les verrons pas ici.

Votre travail

Il vous est demandé de rédiger un rapport succin correspondant à vos réponses aux questions. Relevez et expliquez les manipulations que vous réalisez si besoin est.

Pour réaliser ce travail, les réponses sont à chercher dans le support de cours, les man(uels) des commandes utilisées et éventuellement sur l'Internet (en priorité les sites de la section bibliographie ci-dessous). N'hésitez pas à utilisez les commandes que vous connaissez déjà pour auditer le bon fonctionnement des outils que vous utilisez (netstat pour les ports locaux ouvert en lecture, nmap les ports distants ouverts, wireshark pour voir qui communique et le contenu ce qui est communiqué ...).

Pour ce travail, vous utiliserez le réseau accessible via votre interface eth1. Configurez cette interface. Chaque machine reçoit une adresse IP privée de classe C de type : 192.168.0.<votreIdentifiantSurLaPriseAuDosDeVotreMachine>. Fermer eth2 pour contrôler votre réseau (ifconfig eth2 down).

Tout le monde est tenu de changer le mot de passe de son compte root et de créer (adduser) un compte avec comme nom de login et mot de passe : distant/distant.

Se connecter sur une machine distante non directement accessible

Parfois on souhaiterait pouvoir relier directement deux machines appartenant à deux réseaux distincts. C'est par exemple mon cas quand j'ai besoin d'accéder à ma machine du boulot (machine "BOULOT" sur le réseau "à l'entreprise") depuis ma machine personnelle (machine "MAISON" sur le réseau "à la maison"). Dans ce genre de cas, il existe en général une machine sur le réseau "à l'entreprise" qui possède à la fois une interface vers le réseau extérieure et une interface susceptibles d'accéder à chacune des machines du réseau interne de l'entreprise. Nous appellerons cette machine RELAIS, car elle servira de relai au tunnel.

Postulat :

Bien, allons y franchement, la commande, à executer depuis MAISON, permettant de créer un tunnel SSH entre MAISON et BOULOT est la suivante :

ssh <login_sur_RELAIS>@<RELAIS_IP>  -L <MAISON_port>:<BOULOT_IP>:<BOULOT_port> 

L'option -L indique que le données arrivant sur le port <MAISON port> de la machine locale doivent être envoyées sur le port <BOULOT port> de la machine <BOULOT IP> en sortie d'une connexion SSH sur la machine <RELAIS IP>.

En anglais, on utiliser le terme bind/binder pour désigner le fait de "lier" un port d'une machine à un port d'une autre machine.

Pour le reste de l'exercice vous travaillerez en trinôme, chacun pouvant jouer les rôles de MAISON, RELAIS et BOULOT à la fois.

:?: Vous êtes MAISON. Demandez à BOULOT de lancer un serveur apache et de mettre un fichier msg.txt dans /var/www.

Remarques

Rappel

Les commandes suivantes vous permettent d'auditer l'état des services ouverts, des ports en écoute, et des connexions en cours sur votre machine. Utilisez les afin de mieux comprendre les mécanismes du tunneling.