Machines virtuelles et services
Introduction
Le Proxmox étant installé, nous allons nous atteler à créer différentes machines virtuelles telles que présentées dans le chapitre Proxmox. Pour chacune des parties suivantes, nous aurons, au préalable, installé une machine virtuelle sous Debian.
Nous ne reviendrons pas sur l’installation des différentes machines virtuelles mais nous nous concentrerons sur les services à installer.
Nous aurons besoin, pour la création de notre laboratoire, de desservir du DHCP, d’avoir accès en VPN sur notre Proxmox, d’avoir un accès à un serveur FTP, de disposer d’un serveur sous asterisk pour tester la VoIP, de différentes autres machines où nous installerons des épreuves de hacking telles que des crackmes, des wargames, des failles web, mais nous aurons aussi besoin de superviser tout cela.
Dans ce chapitre, nous créerons et installerons puis configurerons les différentes machines suivant nos besoins afin d’avoir à la fin du chapitre un laboratoire fonctionnel de hacking.
Serveur DHCP
Nous aurons peut-être à un certain moment besoin de donner des adresses IP à nos différentes machines, qu’elles soient virtuelles ou réelles.
Un serveur DHCP nous simplifiera la vie et nous permettra d’attribuer des adresses IP aléatoires ou non suivant la configuration de ce dernier.
Nous ferons le choix de distribuer des adresses IP fixes pour nos machines virtuelles et des adresses IP dynamiques pour les autres machines, c’est-à-dire nos machines clientes.
1. Installation des paquets nécessaires
Nous allons d’abord installer les paquets nécessaires :
fasm# aptitude install isc-dhcp-server

Le paquet est maintenant installé mais le serveur DHCP ne peut pas se lancer pour l’instant ; nous devons configurer le serveur.
Le service qui était avant dhcpd est maintenant devenu isc-dhcp-server.
Rappelons ici que pour lancer le serveur comme la plupart des services sous Debian et Ubuntu, le stopper ou le relancer, nous pourrons utiliser ces commandes :
fasm# service isc-dhcp-server start|stop|restart
2. Configuration
Le fichier de configuration se trouve dans /etc/dhcp et se nomme dhcp.conf.
Nous pouvons ouvrir ce fichier :

Ci-dessus nous avons bien sûr un extrait de la configuration par défaut. La plupart des possibilités offertes par ce serveur DHCP sont écrites mais « dévalidées » grâce au signe ’#’ qui se trouve devant la ligne.
Nous avons juste à supprimer le ’#’ et à modifier la configuration en fonction de notre réseau (masque de réseau, adressage IP, passerelle, DNS…) suivant ce que nous avons décidé comme distribution d’adresses DHCP.
Ce qui nous importe est la partie qui va nous permettre d’attribuer des adresses IP dynamiques pour les machines clientes et des adresses IP fixes pour les machines virtuelles.
Il nous faudra donc déjà pour ces dernières connaître leur...
OpenVPN
OpenVPN est une solution qui se base sur SSL et son port est 1194. Il est composé d’un serveur et de clients. Il va donc y avoir une authentification du client et du serveur et la création d’un canal sécurisé entre les deux.
Ce service est assez simple à configurer si nous suivons bien la procédure décrite ci-dessous.
Nous devons maintenant, avec le chapitre Proxmox, avoir toutes les notions nécessaires et connaître parfaitement la définition et le fonctionnement de route et bridge.
Rappelons quand même qu’il existe deux modes de fonctionnement, le « routé » et le « bridgé » :
-
Le mode routé permet de connecter des utilisateurs itinérants à un réseau interne. Nous appelons aussi cela le NAT. Dans une machine virtuelle en NAT, la machine aura une adresse différente (réseau différent) de la machine réelle. Par exemple, la machine réelle pourra être en 192.168.1.0 et les machines en NAT en 10.2.0.0.
-
Le mode ponté ou bridgé permet de relier entre eux deux sous-réseaux. Nous pourrons dans ce cas avoir par exemple la machine réelle dans la même plage d’adresse IP que la machine virtuelle.
Grâce à OpenVPN, nous allons pouvoir accéder de n’importe où dans le monde à nos ressources locales de manière sécurisée, soit ici notre laboratoire.
1. Installation des paquets
Ici encore rien de plus facile, un simple aptitude install et le logiciel est installé sur notre machine, qui, je le rappelle, peut être une nouvelle machine virtuelle sous Debian par exemple.
Nous aurions pu aussi installer le VPN sur la même machine que la VM DHCP mais nous préférons ici une machine par service.
fasm# aptitude install openvpn

Nous allons ensuite copier les fichiers de configuration :
sudo mkdir /etc/openvpn/easy-rsa/
sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/
openvpn/easy-rsa/
sudo chown -R $USER /etc/openvpn/easy-rsa/

Nous sommes prêts pour configurer maintenant le serveur et le client.
2. Configuration
a. Serveur
Nous allons regarder ce qui a été copié dans le répertoire easy-rsa :

Éditons le fichier vars.

Nous avons ici les valeurs par défaut des variables....
Serveur FTP
Nous aurons besoin dans notre laboratoire de mettre à disposition de la documentation, des binaires ou autres.
Un moyen rapide et efficace est d’avoir à disposition un serveur FTP. Il en existe beaucoup, nous prendrons VsFTP.
Que souhaitons-nous ?
-
Que chaque utilisateur se connecte avec un identifiant propre. Le système pourra ainsi garder la trace des actions de chacun (savoir qui fait quoi).
-
Que chaque utilisateur dispose d’un espace où il puisse stocker ses fichiers de façon privée.
-
Que chaque utilisateur puisse accéder à un espace public.
Tout cela est faisable facilement grâce à vsftpd (Very Secure FTPd ) qui équipe des serveurs FTP tels que ceux de Red Hat, Suse, OpenBSD, kernel.org et Debian.
1. Installation
Là non plus, rien de très compliqué : il suffit d’exécuter la commande ci-après :
fasm#aptitude install vsftpd
Ceci, dans une nouvelle machine virtuelle nommée par exemple VM-FTP.
L’installation est terminée.
2. Configuration
Ici, pas trop de questions à se poser, nous n’aurons qu’un seul fichier de configuration à modifier.
Par défaut, si nous laissons le fichier d’installation, nous pouvons nous connecter en anonyme sur le serveur FTP (après l’avoir lancé, bien sûr).
Nous allons donc modifier tout cela pour l’adapter à notre...
Serveur web
Dans les challenges de sécurité informatique, les épreuves les plus réussies et les mieux appréciées sont les épreuves web (détection des failles web).
Dans un prochain chapitre, nous verrons comment mettre en place ces épreuves afin de tester notre capacité à les résoudre. Pour cela, nous avons besoin d’un serveur web. Le plus célèbre est Apache, il est produit par la « Apache Software Foundation ».
1. Installation
fasm# aptitude install apache2

2. Configuration
Une configuration minimale et beaucoup plus simple sera expliquée dans le prochain chapitre. Nous allons donc ici détailler une installation un peu plus compliquée mais plus adaptable à nos besoins.
Tous les fichiers de configuration sont dans le répertoire /etc/apache2.
Si nous exécutons une commande ls dans ce répertoire, nous trouverons 9 fichiers qui ont chacun une utilité détaillée ci-dessous et qui est une traduction de la documentation officielle :
-
httpd.conf est le fichier utilisé par Apache1, il est conservé vide dans Apache2 pour assurer la rétrocompatibilité. Il ne nous servira pas.
-
envvars est utilisé pour définir des variables d’environnement propres à Apache.
-
ports.conf contient la directive Listen qui spécifie les adresses et les ports d’écoute.
-
apache2.conf est le fichier principal de configuration car c’est à partir de lui que tous les autres fichiers sont chargés.
-
conf.d est un répertoire qui contient plusieurs petits fichiers qui seront analysés par Apache. Le seul fichier pour le moment est charset, qui spécifie l’encodage à utiliser par défaut.
-
mods-available contient la liste des modules d’Apache installés.
-
mods-enabled contient celle des modules utilisés.
-
sites-available contient la liste des vhosts installés.
-
sites-enabled contient celle des vhosts utilisés.
Nous pouvons commencer par ouvrir le fichier ports.conf :

Pour restreindre l’utilisation à une ou plusieurs interfaces, il nous suffit de les spécifier, suivies du port. Il faut une directive Listen par interface.
-
Si le serveur est connecté avec une IP Internet et que nous souhaitons écouter sur cette interface...
Serveur Asterisk
La VoIP (Voice over IP) est maintenant partout dans les entreprises et est donc une source de failles potentielles. Il est nécessaire de pouvoir tester ces nouvelles technologies pour essayer de comprendre leur fonctionnement et de voir ce qu’un pirate pourrait essayer de tenter pour écouter une conversation, pénétrer le système ou altérer les données.
Nous allons donc installer Asterisk qui est le logiciel libre de VoIP le plus connu et le plus utilisé.
1. Installation
Nous installons le paquet asterisk :
fasm#aptitude install asterisk

Une multitude de paquets seront installés, tous utiles pour asterisk.
2. Configuration
Deux fichiers seulement seront nécessaires pour un fonctionnement basique d’Asterisk : les fichiers sip.conf et extensions.conf qui se trouvent dans /etc/asterisk/.
Nous nous contenterons de la configuration basique. Asterisk est très documenté et nous pourrons aisément l’affiner si nous le souhaitons.
Les possibilités sont nombreuses, nous pourrons configurer un répondeur et un menu vocal entre autres.
a. Sip.conf
Tous les comptes utilisateurs que nous voulons créer seront définis dans ce fichier. Nous n’en déclarerons que deux pour cet exemple.
Supposons que le premier utilisateur est fasm et ajoutons la configuration ci-dessous dans le fichier sip.conf :
[fasm]
type=friend
host=dynamic
user=fasm
secret=acissi
context=default
[fasm] est le début du bloc SIP. Les informations présentes après cette ligne concerneront le compte de l’utilisateur fasm.
type=friend permet d’appeler et d’être appelé.
host=dynamic l’adresse IP du client est définie par DHCP. Si son IP était fixe, nous l’aurions précisée ici.
user=fasm est le nom de l’utilisateur.
secret=acissi est le mot de passe en clair.
context=default est le contexte auquel le compte est associé dans le dialplan (servira pour le fichier extensions.conf), le dialplan étant une suite d’instructions numérotées, que nous verrons un peu plus loin dans le chapitre, qui seront exécutées dans un ordre précis.
Notez qu’en utilisant secret, le mot de passe est stocké en clair. Il est préférable d’utiliser...
Nagios
Nous venons d’installer différents services, chacun dans des machines virtuelles différentes. Mais comment, à part l’interface de Proxmox, surveiller le fonctionnement de ces dernières et voir les éventuels changements dans l’état des services ? Il nous faut superviser tout cela, Nagios est fait pour nous.
Nagios est l’outil idéal de surveillance : nous pourrons à tout moment visualiser par exemple l’arrêt d’un service ou son démarrage, ou toute autre modification sur un client distant (ordinateur, switch, routeur...).
Nous voilà donc avec une nouvelle machine virtuelle avec une distribution Debian Squeeze installée. La mise à jour a été effectuée.
Pour être sûr que nous pointons vers les bons dépôts, nous vérifierons que la liste des dépôts dans /etc/sources.list est bien identique à celle-ci :
deb http://ftp.fr.debian.org/debian/ squeeze main
deb-src http://ftp.fr.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main
# squeeze-updates, previously known as 'volatile'
deb http://ftp.fr.debian.org/debian/ squeeze-updates main
deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main
Nous pourrons installer Nagios de plusieurs façons différentes : soit en compilant les fichiers sources que nous pouvons trouver sur le site de Nagios, soit en utilisant les dépôts officiels (cela dépend donc de la distribution).
Nous allons donc voir par la suite ces deux méthodes.
1. Nagios avec les fichiers sources
a. Installation
Nagios dépend de nombreux paquets dans son fonctionnement. Nous commencerons donc grâce à la commande aptitude ou apt-get par les installer.
fasm#aptitude install php5-gd postfix fping snmp ntp smbclient
nmap saidar traceroute php5-snmp curl gettext
Nous aurons aussi besoin de l’environnement de compilation :
fasm#aptitude install build-essential
Nous voilà prêts pour l’installation de Nagios.
Nagios a besoin d’un utilisateur pour fonctionner, mais aussi d’un répertoire local où seront installés les fichiers de configuration et les binaires.
Nous créerons d’abord grâce...
Conclusion
Notre laboratoire de hacking est prêt, nous pouvons dès à présent commencer l’installation de nos épreuves applicatives, sites web et autres afin de pouvoir tester et apprendre les techniques de hacking en toute légalité.