Formation UNIX Serveur

Yoann Ono Dit Biot

CTO & Co-Founder SYNHACK

System/Network/Security Engineer

Meet me on LinkedIn

Or maybe on twitter

 

ET SI ON PARLAIT DE VOTRE SÉCURITÉ ?

 

SYNHACK est une startup Normande spécialisée dans la sécurité numérique.

 

Basée à Seine Innopolis (Petit-Quevilly),

notre société est composée d'experts pluridisciplinaires dans les domaines

de la sécurité numérique.

VÉRIFIONS VOTRE NIVEAU DE SÉCURITÉ

 

NOS AUDITS DE SÉCURITÉ :

- Tests d'intrusion

- Audits de configuration

- Audits de vulnérabilités

- Audits d'infrastructures

 

NOS CERTIFICATIONS :

- EC-Council CEH

- Cisco CCNP Security

 

FORMER VOS SALARIES C'EST VOUS PROTÉGER

 

PARCOURS DE FORMATION :

- Formation et sensibilisation des

collaborateurs de l'entreprise

- Formation et accompagnement

de l'équipe IT de l'entreprise

 

Centre de formation agréé par

la DIRECCTE de Haute-Normandie.

LAISSEZ NOS EXPERTS VOUS AIDER

 

NOS OFFRES :

 

- Diagnostic Interne : Un expert se déplace au sein de votre entreprise afin de comprendre vos enjeux métiers et d'évaluer l'état de votre sécurité.

 

- SYNHACK @ Work : Un expert vous accompagne régulièrement à raison de 3 jours de prestation par mois.

Rappel

Commandes système basique

Gestion des droits utilisateur

Gestion des partitions

Tâches CRON

Commande: cd

Description

Cette commande permet de changer de dossier courant.

cd = current directory

 

Utilisation

cd /tmp
cd ../scripts
cd ~/downloads

Commande: ls

Description

Cette commande permet de lister le contenu d'un dossier

ls = list

 

Utilisation

ls /tmp
ls ../scripts
ls -al ../scripts

Commande: cat

Description

Cette commande permet d'afficher le contenu d'un fichier

 

Utilisation

cat /etc/passwd
cat example.doc

Commande: rm

Description

Cette commande permet d'effacer un fichier ou un dossier.

rm = remove

 

Utilisation

rm example.doc
rm -rf /home/y0no/example_directory

Commande: nano

Description

Cette commande permet de modifier le contenu d'un fichier.

 

Utilisation

nano example.txt
nano /etc/passwd

Commande: su

Description

Cette commande permet de changer d'utilisateur.

su = switch user

 

Utilisation

su root
su y0no

 

Commande: sudo

Description

Cette commande permet d'executer une commande en tant qu'un autre utilisateur

sudo = switch user do

 

Utilisation

sudo apt-get install php5 
sudo -u y0no nano test.php

 

Commande: chmod

Description

Cette commande permet de modifier les droits d'un fichier ou d'un dossier.

 

Utilisation

chmod 755 example.doc
chmod -r 755 ~/
chmod u+x example.doc
chmod ug+rwx example.doc

Commande: chown

Description

Cette commande permet de modifier le propriétaire d'un fichier ou d'un dossier.

 

Utilisation

chown y0no example.doc
chown -r y0no ~/
chown y0no:users example.doc

Commande: mkfs

Description

Cette commande permet de formater une partition

 

Utilisation

mkfs.ext4 /dev/sda1
mkfs.ntfs /dev/sda2

Commande: mkswap

Description

Cette commande permet de formater une partition en tant que swap.

 

Utilisation

mkswap /dev/sda1
swapon /dev/sda1

PLAN

SSH
WEB
FTP
DHCP

DNS

Syslog

SAMBA

IPTables

NFS

VNC

Topologie

Serveur SSH

Secure SHell

SSH est un protocole de communication sécurisé comparable à telnet développé en 1995.

Il intègre un chiffrement natif faisant de lui une réference dans les outils d'administration à distance.

Fonctionnement

Fonctionnement

Fonctionnement

Installation

  • apt-get install openssh-server
  • yum install sshd

Démo

TP

Configuration basique de SSH

- Installer un serveur SSH sur les deux serveurs Debian

- Interdire à un utilisateur de se loguer en tant que "root"

- Tenter de se connecter via SSH avec putty et/ou le client ssh linux

Authentification par clé

- Générer une clé asymétrique sur la machine cliente.

- Déposer la clé publique sur les serveurs.

- Tenter de se loguer avec la clé privée sur les serveurs.

Serveur WEB

Principe

Un serveur WEB permet de proposer à un utilisateur du contenu sur le réseau via le protocole HTTP.

Implémentations

  • Apache2
  • Nginx
  • Lighttpd

Fonctionnement

Installation

  • apt-get install apache2
  • yum install httpd

TP

Installation stack LAMP

  • Installer Apache2, PHP5, et MySQL sur VM1
  • Installer le système wordpress sur le serveur web
  • Vérifier en se connectant au serveur à partir du client windows
  • Installer PHPMyAdmin sur le serveur web
  • Vérifier en se connectant au serveur à partir du client windows

Installation de HTTPS

  • Génerer un certificats auto signé pour VM1
  • Installer le certificat sur le serveur
  • Configurer apache2 afin d'utiliser le certificat pour HTTPS
  • Tester la configuration en se connectant en HTTPS au serveur

Serveur FTP

File Transfer Protocol

Protocole permettant l'échange de fichiers sur le réseau.

Commencé en 1971 (RFC114), finalisé en 1985 (RFC959)

Fonctionnement

  • Modèle Client/Serveur
  • Fonctionne sur deux ports
  • Propose deux modes

Fonctionnement

Fonctionnement

Implementation Serveur

  • Filezilla Server (windows)
  • vsftpd (Unix)
  • proftpd (Unix)
  • pureftpd (Unix)

Implementation Client

  • Filezilla (windows, Unix)
  • ftp (CLI Unix)
  • gFTP (Unix)
  • Gestionnaire de fichiers (Windows, Unix)

Démo

TP

Installation de vsftpd et utilisation du Client FTP

- Installer vsftpd sur la VM1 Debian

- Utiliser la commande 'ftp' pour se loguer avec un user à partir de VM2

- Uploader un fichier dans le dossier d'un user

- Lister les fichiers du dossier

- Créer sur le serveur via SSH un fichier

- Tenter de le récupérer via ftp

Utilisation de l'utilisateur anonyme

- Se connecter en tant qu'anonyme

- Essayer de créer un fichier, que se passe t'il ?

- Autoriser l'utilisateur anonyme à écrire sur le FTP

- Essayer de créer un fichier, que se passe t'il ?

- Interdire l'utilisation de l'utilisateur anonyme

- Tenter de se loguer en anonyme, que se passe t'il ?

Création d'un dossier commun à tout les users

- Créer un utilisateur 'commun' sur le système.

- Modifier les droits de sa 'home' pour que tout le monde y est accès.

- Créer un dossier 'commun' dans la home de chaque user.

- Lier le repertoire de 'commun' avec les répertoires 'commun' de chaque user grâce à fstab.

Création de user n'appartenant pas au système

- Permettre à des users ne faisant pas partie du système de se loguer.

Serveur DHCP

Dynamic Host Configuration Protocol

Configuration d'hôte automatique via le réseau.

Fonctionnalités

  • Distribue des IPs

  • Distribue la passerelle

  • Distribue des serveurs DNS

  • Distribue des serveurs NTP

Fonctionnement

Fonctionnement

Installation

  • apt-get install isc-dhcp-server
  • yum install dhcpd

Configuration

/etc/dhcp/dhcpd.conf:

 

option domain-name ...

option domain-name-servers ...

log-facility ...

Configuration

/etc/dhcp/dhcpd.conf:

 

 

subnet 192.168.1.0 netmask 255.255.255.0 {

    range 192.168.1.100 192.168.1.150;

    option routers 192.168.1.1;

}

Configuration

/etc/dhcp/dhcpd.conf:

 

host tyrion {

    hardware ethernet 02:34:37:24:c0:a5;

    fixed-address 192.168.1.110;

}

host printer01 {

     hardware ethernet 02:34:37:30:c6:c4;

     fixed-address 192.168.1.115;

}

TP

Installer un serveur DHCP Basique

- Installer un serveur DHCP sur la VM2

- Distribuer des adresses pour le réseau 192.168.1.0/24

- La plage d'adresse doit distribuer maximum 30 addresses

- Distribuer les serveurs DNS de google (8.8.8.8, 8.8.4.4)

- Distribuer l'adresse de la passerelle par défaut

- Demander à la VM1 et au client windows de récupérer des IP via DHCP.

Distribuer deux pools d'adresses

- Mettre deux interfaces sur la machine virtuelle

- Configurer le serveur pour distribuer différentes adresses aux différents réseaux

Ajouter des IPs statiques

- Ajouter l'adresse MAC de la VM1 à une adresse IP reservé en dehors du range desservie

Distribution de routes et changement du leasing time

- Configurer le serveur pour qu'il distribue des routes

- Mettre le temps de leasing à 2 minutes

Serveur DNS

Domain Name System

Permet la résolution nom de domaine vers adresse IP et vice/versa.

Conçu à l'origine en 1983 à l'iniative de la DARPA

On dit bien "system" et non pas "service"!

Fonctionnalités

  • Création couple nom de domaine/IP

  • Création d'alias

  • Configuration mail

  • Configuration hiérarchique

Fonctionnement

Fonctionnement

Les types d'entrées

- A: Résolution vers une adresse IPv4

- AAAA: Résolution vers une adresse IPv6

- CNAME: Alias vers un domaine

- MX: Défini les serveurs mails

- PTR: Résolution inverse (IP vers DNS)

- NS: Défini l'adresse du serveur DNS du domaine

- SRV: Version avancée des enregistrements MX

- TXT: Ajoute du texte à une zone (utilisé par SDF)

- SOA: Donne des informations sur la zone actuelle

Type: A

Exemple:

 

test.cesi.fr.                          IN A 91.198.174.232

machin.truc.bidule.fr.   IN A 10.109.173.197

dns.google.fr                     IN A 8.8.8.8

Type: AAAA

Exemple:

 

test.cesi.fr.                          IN AAAA 8f0:10:907a:8c5::

machin.truc.bidule.fr.   IN AAAA 2fd0:1380:40e7:85::104

dns.google.fr                     IN AAAA 2a00:1450:4007:805::1017

Type: CNAME

Exemple:

 

test.cesi.fr.                          IN CNAME cesi.fr.

machin.truc.bidule.fr.   IN CNAME yahoo.com.

Type: MX

Exemple:

 

synhack.fr.     IN MX 5          mx2.ovh.net.

synhack.fr.     IN MX 1          mx1.ovh.net.

synhack.fr.     IN MX 100     mxb.ovh.net.

Type: PTR

Exemple:

 

232.174.198.91.in-addr.arpa.    IN PTR test.cesi.fr

197.173.109.10.in-addr.arpa.    IN PTR machin.truc.bidule.fr.

8.8.8.8.in-addr.arpa.                        IN PTR dns.google.fr

Type: NS

Exemple:

 

synhack.fr.     IN NS olga.ns.cloudflare.com.

synhack.fr.     IN NS jim.ns.cloudflare.com.

Type: TXT

Exemple:

 

synhack.fr. IN TXT "v=spf1 include:mx.ovh.com ~all"

TP

Installation et configuration de bind9

- Installer bind9 sur VM2

- Configurer le DNS pour qu'il gère la zone cesi.local

- Ajouter deux entrées DNS correspondants aux autres machines du réseau

- Tester la configuration grâce à nslookup ou dig

Serveur SAMBA

Samba

Partage de fichier entre UNIX et Windows.

Implémentation opensource de SMB/CIFS.
C'est un logiciel libre, codé par reverse engineering.

 

Comme FTP, il s'agit d'une relation client/serveur.

SMB est un équivalent propriétaire de FTP.
Il ajoute quelques fonctionnalités

Installation

  • apt-get install samba
  • yum install samba

Configuration

[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = centos
security = user
map to guest = bad user
dns proxy = no

[Anonymous]
path = /opt/anonymous
browsable =yes
writable = yes
guest ok = yes
read only = no

TP

Installation et Configuration de samba

- Installez un serveur samba sur VM1

- Testez la configuration précedente en tentant de se loguer

- Ajoutez un partage pour les utilisateurs du groupe stagiaire, puis un pour ceux du groupe admin

SYSLOG

Présentation

Syslog est un protocole ET un format de log créé en 1980.

Il permet de gérer, filtrer et classer des évenements systèmes.

Implémentations

  • syslogd
  • syslog-ng
  • rsyslog

Severities (Criticités)

Facilities

Règles

Présentation:

Les règles permettent de filtrer les logs afin de leur appliquer un traitement différent.

 

Les filtres:

- Selecteur

- Property based

- Regex

- Blocs (type BSD)

Filtres regex

HUM...non

 

(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)

Filtres blocs

Présentation

Syntaxe reprise des filtres utilisés par syslogd sous BSD.

 

Exemples:

if $programname == 'prog1' then {

    action(type="omfile" file="/var/log/prog1.log")

    if $msg contains 'test' then

        action(type="omfile" file="/var/log/prog1test.log")

    else

        action(type="omfile" file="/var/log/prog1notest.log")

}

Filtres blocs

Exemples:

 

if $fromhost == 'host1' then {

    mail.* action(type="omfile" file="/var/log/host1/mail.log")

    *.err /var/log/host1/errlog

} else {

    mail.* action(type="omfile" file="/var/log/mail.log")

    *.err /var/log/errlog 

}

Format

<date> <nom de l'hôte> <tag> <message>

 

Exemple:

Feb 19 16:04:46 babar su[3895]: pam_unix(su:session): session opened for ...

TP

TP

  • Installer RSyslog en tant que serveur sur VM2
  • Récupérer les logs de VM1 sur VM2
  • Pour chaque type de filtre:
    • Filtrer les logs en fonction des machines
    • Filtrer les logs en fonction de leur criticité

IPTables

Présentation Netfilter

NetFilter est un module du kernel Linux, disponible depuis 2.4.

Il permet de gérer les paquets IP transitant sur une machine Linux

Présentation IPTables

IPTables est un logiciel permettant de communiquer avec NetFilter.

Il s'agit donc d'une interface en ligne de commande (CLI) pour NF.

Il est le remplaçant de IPChains.

FOnctionnement

Dans IPTables, il y a des tables, elles segmentent le logiciel en fonctionnalités.

Ces tables sont composées de chaines qui définissent des moments auquel on applique le traitement.

Ces chaines sont composées de targets qui définissent l'action qu'on applique à cette chaine.

Les tables

Filter: S'occupe du filtrage des paquets (entrée, sortie, forward)

NAT: S'occupe de la translation d'adresse ou de port
Mangle: S'occupe de la modification de paquet

Raw: S'occupe de configurer les paquets (eg: ne pas tracker le paquet)

Security: Utilisé par SELINUX (?)

La table Filter

Les chaines

Input: s'applique aux paquets qui entre sur une interface

Output: s'applique aux paquets qui sorte d'une interface

Forward: s'applique aux paquets entre deux interfaces

 

Les cibles

Accept: Accepte le paquet

Reject: Refuse le paquet (et averti l'envoyeur)

Drop: Refuse le paquet

Log: Log le paquet puis continue le processing normalement

La table NAT

Les chaines

Prerouting: s'applique aux paquets avant routage

Postrouting: s'applique aux paquets après routage

 

Les cibles

SNAT: Modifie l'adresse source

DNAT: Modifie l'adresse de destination

Masquerade: Modifie l'adresse source par celle du routeur

Résumé

Installation

Prérequis:

Noyau Linux 2.4 minimum

 

Debian/Ubuntu: apt-get install iptables

Debian 8: apt install iptables

Centos/Fedora/RHEL: yum install iptables

Fedora (new): dnf install iptables

Démo

TP

Filtrage basique

  • Modifier la police par défaut des chaînes INPUT et OUTPUT afin de bloquer tout trafic sur VM1
  • Effectuer un ping ver 8.8.8.8, cela fonctionne il ? pourquoi ?
  • Autoriser le ping en entrée / sortie
  • Effectuer un ping ver 8.8.8.8, cela fonctionne il ?
  • Effectuer un ping vers www.google.fr, cela fonctionne il ? pourquoi ?
  • Autoriser le DNS en entrée / sortie puis essayer un ping vers www.google.fr, cela fonctionne il ? pourquoi ?
  • Autoriser l'interface locale en entrée / sortie puis essayer un ping vers www.google.fr, cela fonctionne il ?
  • Accéder au serveur web (via HTTP) à partir d’une autre machine, que ce passe il ? pourquoi ?

Différence entre Reject et Drop

  • Modifier la police par défaut des chaînes INPUT et OUTPUT afin d’accepter tout trafic.
  • Rajouter une règle sur la chaîne INPUT interdisant le trafic web avec la cible DROP
  • Analyser le trafic avec Whireshark afin de voir ce qui est échangé entre les deux machines. Que constatez-vous ?
  • Analyser les ports ouverts de la machine avec Nmap. Dans quel état est indiqué le port 80 ?
  • Supprimer la règle précédemment ajoutée.
  • Rajouter une règle sur la chaîne INPUT interdisant le trafic web avec la cible REJECT.
  • Analyser le trafic avec Whireshark afin de voir ce qui est échangé entre les deux machines. Que constatez-vous ?
  • Analyser les ports ouverts de la machine avec Nmap. Dans quel état est indiqué le port 80 ?

Sauvegarde des règles

  • Sauvegardez ses règles.
  • Supprimer les règles de toutes les chaînes.
  • Restaurer les règles précédemment supprimées.
  • Appliquer les règles automatiquement à chaque redémarrage de la machine.

Journalisation des paquets

  • Ajouter une règle permettant de consigner le passage de paquets à destination de votre site web dans les logs.
  • Se connecter au serveur web à partir d’une autre machine.
  • Vérifier le contenu de votre fichier de log.
  • Ajouter une règle permettant d'ajouter dans les logs la phrase (en prefix) "phpmyadmin access: " quand un visiteur visite la page /phpmyadmin sur le site web.
  • Se connecter au serveur web à partir d’une autre machine sur la page /phpmyadmin.
  • Vérifier le contenu de votre fichier de log.

Redirection

  • Configurer apache pour écouter sur le port 8000 au lieu de 80
  • Ajouter une règle de redirection de port, pour rediriger le port 80 vers le port 8000.
  • Se connecter au serveur web sur le port 80 à partir d’une autre machine afin de vérifier que cela fonctionne.

PArtage NFS

Network File System

Développé par SUN (devenu Oracle) en 1984.
Il s'agit d'un système de fichier accessible via le réseau

 

Il existe 4 version du protocole:

- Version 1 et 2 non sécurisées fonctionnant sur UDP.

- Version 3 fonctionnant sur TCP.

- Version 4 est un reboot complet du protocole, inspiré par AFS.

Installation

  • apt-get install nfs-kernel-server
  • yum install nfs-utils

TP

Installation et configuration de NFS

- Installez un serveur NFS sur VM1

- Partager un dossier "/opt/nfsshare" via NFS

- Essayer d'y accéder grâce à un client NFS

OpenLDAP

OPENLDAP

OpenLDAP est une implémentation libre du protocole LDAP.

Ce protocole sert à créer un annuaire informatique fonctionnant sous forme de client/serveur 

 

C'est sur ce protocole qu'est basé Active Directory

LDAP = Lightweight Directory Access Protocol

Fonctionnement

L'annuaire repose sur un modèle hierarchique

Il se représente comme un arbre (racine, branche, feuille)

 

Il est commun d'utiliser le modèle DNS pour la racine (dc)

dc=cesi,dc=fr

 

Les branches représentent ensuite des unités d'organisation (ou)

ou=computers,ou=network

 

Ou bien des personnes (cn)

cn=dupond,cn=paul

Fonctionnement

Le chemin complet vers une "feuille" est donc de la forme suivante:

 

cn=paul,ou=employés,dc=cesi,dc=local

Fonctionnement

Chaque feuille contient ensuite des attributs.

Pour un employé, il peut s'agir des éléments suivants:

 

  • Numéro de téléphone
  • Email
  • Pôle d'activité

Installation

Installation du démon LDAP

  • apt-get install slapd
  • dpkg-reconfigure slapd

 

Installation de l'interface d'administration web LDAP

  • apt-get install phpldapadmin

PHPLdapAdmin

TP

Login avec OpenLDAP

  • Permettre de se loguer avec les utilisateurs présent dans l'annuaire
    • Installer OpenLDAP
    • Créer des utilisateurs dans l'annuaire
    • Configurer PAM pour LDAP

Docker

Docker

Docker est un système permettant la virtualisation d'application

Il se base sur les Linux Containers (LXC) 

 

Ce système peut être comparé à OpenVZ.

Le même noyau est partagé entre les containers

Pourquoi Docker ?

Pourquoi Docker ?

Le but est de fournir au développeur un environnement de développement production-ready léger.

 

Il permet de suivre et enregistrer les changements dans la VM

 

Il permet aussi de créer des images permettant au sysadmin un déploiement rapide

 

Enfin il offre une architecture simple et scalable

Installation

La procédure d'installation changeant régulièrement:

  • https://docs.docker.com/engine/installation/debian/

Utilisation

  • Lister les containers: docker ps
  • Lister les images: docker images
  • Chercher une image: docker search <recherche>
  • Télécharger une image: docker pull <nom_image>
  • Lancer un container: docker run <nom_image> <commande>
  • Exécuter dans un container: docker exec <nom_container ou id> <cmd>
  • Arrêter un container: docker stop <nom_container ou id>
  • Supprimer un container: docker rm <nom_container ou id>
  • Supprimer une image: docker rmi <nom_image>
  • Pousser une image: docker push <nom_image>  

Les volumes

Les volumes permettent de créer un dossier partagé entre l'hôte et la machine virtuelle.

 

Un container s'autodétruit lorsqu'il s'éteint (ses données aussi)

Les volume ne sont pas détruit à la fermeture ou l'effacement d'un container

 

Ils peuvent donc servir de point de sauvegarde

Les volumes

Utilisation:

  • docker run -v <dossier_local>:<dossier_vm> <nom_image>

 

Exemple:

  • docker run -ti -v /home/user/y0no/:/root ubuntu /bin/bash

Les commits

Le but d'une commit est de sauvegarder l'état d'un container sous forme d'image.

 

Utilisation:

  • docker commit -m <msg> <nom ou id du container> <nom destination> 

 

Exemple:

  • docker commit -m "Apache2 OK" 001ab320 y0no/apache2

Les Ports

De base, un container a sa propre adresse IP

Mais il est aussi possible de lier un port de la VM avec un port de l'hôte

 

Syntaxe:

docker run -p <port_vm>:<port_hote> <nom_image> <cmd>

 

Exemple:

docker run -p 80:80 nginx <cmd>

Les Variables

Les containers docker permettent l'utilisation de variable pour la configuration de l'instance.

 

Il est par exemple possible de passer en argument les informations de connexion d'un container wordpress à sa base de données.

 

Les variables sont passé au système virtualisé en tant que variable d'environnement.

Les Variables

Syntaxe:

docker run -e <variable>=<valeur> -e <variable2>=<valeur2> <image> <cmd>

 

 

Exemple:

docker run -e bddhost=192.17.10.2 mon_image /bin/bash

Les LINKS

Il est possible de lier plusieurs container entre eux.

Les variables de chacun des containers sont partagés entre les VM.

 

Par exemple pour faire fonctionner un wordpress et son mysql:

docker run --name wp --link mysql:mysql wordpress

Configuration

La configuration des images peut se faire par l'intermediaire d'un fichier

 

Le fichier doit être nommé Dockerfile et contient la "recette" de l'image

 

La recette est l'ensemble des instructions permettant de construire l'image

Configuration

FROM ubuntu:latest

 

RUN apt-get update && apt-get upgrade -y

RUN apt-get install apache2 mysql-server php5

Configuration

Il suffit ensuite de construire l'image: ​docker build -t mon_image .

TP

Dockeriser une application

  • Créer un container proposant un wordpress avec SSL actif
  • Le container doit être basé sur debian jessie
  • La base de données doit être dans un autre container
  • La base de données doit être persistante

Enregistrer son image dans le cloud

  • S'inscrire sur le hub docker
  • Pousser son image sur le hub docker
  • Récupérer l'image d'un autre étudiant sur sa machine

Vagrant

Vagrant

Vagrant est un logiciel permettant de créer et provisionner rapidement des machines virtuelles.

 

Il gère par défaut plusieurs "providers":

  • Virtualbox
  • Vmware
  • HyperV
  • Docker

Vagrant

Le but est de monter une ou plusieurs VM avec l'aide d'un simple script. 

 

Celui-ci donne les instructions de configuration à l'instar d'un Dockerfile puis donne ensuite à l'utilisateur la main sur la machine.

Utilisation

Exemple:

vagrant init hashicorp/precise32

vagrant up

vagrant ssh

Commandes

vagrant init: Crée un fichier de configuration dans le dossier courant

vagrant status: Récupère le status de la VM

vagrant up: Démarre la VM

vagrant ssh: Se connecte en SSH à la VM

vagrant reload: Recharge le Vagrantfile (configuration)

vagrant provision: Configure la VM

vagrant suspend: Met en pause la VM

vagrant resume: Retire la pause de la VM

vagrant halt: Arrête la VM

vagrant destroy: Détruit la VM

Configuration

Vagrant offre à l'instar de docker plusieurs fichiers de configuration prépackagé permettant de rapidement monter une VM.

 

Il est néanmoins possible de créer ses propres VM avec l'aide d'un fichier de configuration nommé Vagrantfile.

 

Celui-ci peut être généré par la commande "vagrant init" qui créera un squelette de configuration dans le dossier courant.

Configuration

La syntaxe de configuration change régulièrement et ajoute de nouvelles fonctionnalités. Voici donc le lien vers la documentation:

 

https://docs.vagrantup.com/v2/vagrantfile/

Plugins

Des plugins sont disponible afin d'étendre les fonctionnalités de Vagrant. Il est par exemple possible d'ajouter une extension permettant la configuration du fichier "/etc/hosts" de la VM via le Vagrantfile.

 

La commande d'installation est la suivante:

vagrant plugin install <nom plugin>

TP

Vagrantiser une Infra

  • Créer un script Vagrant permettant de déployer une infrastructure
  • L'infrastructure doit proposé:
    • Une machine avec MySQL installé
    • Une machine avec wordpress installé et configuré
      • Le MySQL utilisé doit être celui de la première VM
    • Une machine servant de serveur Syslog
      • Cette machine doit centralisé les logs des deux autres VM

Puppet

Serveur VNC

Formation UNIX Serveur

By Yoann Ono

Formation UNIX Serveur

  • 2,750