Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Black Friday: -25€ dès 75€ sur les livres en ligne, vidéos... avec le code BWEEK25. J'en profite !
  1. Livres et vidéos
  2. Hacking
  3. Machines virtuelles et services
Extrait - Hacking Un labo virtuel pour auditer et mettre en place des contre-mesures
Extraits du livre
Hacking Un labo virtuel pour auditer et mettre en place des contre-mesures Revenir à la page d'achat du livre

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
 
images/02EP01.png

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 :

images/02EP02.png

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
 
images/02EP10.png

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/
 
images/02EP11.png

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 :

images/02EP12.png

Éditons le fichier vars.

images/02EP13.png

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 
images/02EP25.png

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 :

images/02EP26.png

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
 
images/02EP28.png

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é.