# Création d'un serveur web sur FreeBSD avec des jails
création d'un serveur web sur FreeBSD en utilisant des jails
Dans cet article je vais détailler comment créer un serveur web comprenant nginx, php et mariadb. Pour plus de sécurité je vais utiliser des prisons, une pour emprisonner php et nginx, une autre pour mariadb.
création du réseau pour les jails
Pour plus de sécurité, je crée un réseau spécial pour les jails avec 2 IPv4 : 192.168.1.101 pour webjail et 192.168.1.102 pour sqljail :
|
|
le firewall
Je vais utiliser PF avec ces règles écrites dans /etc/pf.conf :
|
|
|
|
Je reboot pour appliquer ces règles :
|
|
création des prisons
Pour créer les prisons je vais utiliser l'outil ezjail :
|
|
ezjail utilise le protocol FTP par défaut. Le protocole FTP est relou à protéger avec un firewall. Je paramètre donc ezjail pour qu'il utilise le protocole HTTPS à la place et ainsi me faciliter la vie :
|
|
Je modidie la variable ezjail_ftphost pour avoir :
|
|
Pour séparer le réseau du serveur web avec le reste je vais créer une nouvelle interface et je lui donne 2 ipv4 :
Je démarre ezjail et précise qu'il doit démarrer au boot :
|
|
J'installe l'environnement ezjail, la "basejail" :
|
|
prison pour nginx et php
Je crée la prison qui va accueillir les services nginx et php, cette jail a comme IP 192.168.1.101 :
|
|
Pour pouvoir communiquer sur internet depuis la prison webjail je copie le fichier resolv.conf de l'hôte dans la prison :
|
|
Je démarre webjail :
|
|
prison pour mariadb
Je crée la prison qui va accueillir le service mariadb, cette jail a comme IP 192.168.1.102 :
|
|
Pour pouvoir communiquer sur internet depuis la prison sqljail je copie le fichier resolv.conf de l'hôte dans la prison :
|
|
Je démarre sqljail :
|
|
installation de nginx && php dans webjail
Je me connece à la console de webjail :
|
|
J'installe la dernière version des services nginx et php :
|
|
Je démarre nginx et le fait démarrer au boot :
|
|
installation de mariadb dans sqljail
Je me connece à la console de sqljail depuis l'hôte :
|
|
J'installe la dernière version du service sql mariadb :
|
|
Je démarre mariadb et le fait démarrer au boot :
|
|
Je run le script d'installation :
|
|
Pour pouvoir tester la connexion, je crée une base de données avec son user :
|
|
|
|
test des services
Pour commencer je reboot le serveur :
|
|
Ensuite, depuis un navigateur internet, je me connecte sur le serveur qui chez moi a pour IPv4 : 192.168.1.32
Après, pour tester le service sql, je me connecte à la console de webjail :
|
|
Et depuis webjail je me connecte au service sql sur sqljail :
|
|
Pour finir, je test le firewall. Depuis mon poste de travail j'utilise nmap pour tester la config du firewall sur le serveur :
|
|
w00t !