19 Mai

Outils Web d’Administration – Intro

Cette série d’article propose d’expliquer l’installation d’un ensemble d’outils d’administrations web bien pratiques qui aident à la gestion de son serveur tout en en sécurisant l’accès. Ce dernier point est critique, en effet combien de fois peut-on voir des phpMyAdmin installés directement dans le sous répertoire d’un site web ? Bien évidemment, ces installations simplistes sont la cible de scanners sur internet qui les recherchent pour leurs vulnérabilités connues.

Cette introduction pose donc les bases d’une installation sécurisée et sera suivi par d’autres articles expliquant comment implémenter différents outils pratiques que j’ai pu trouver comme phpMyAdmin, Cacti, munin, etc.

Environnement

OS : Debian 7.5 stable (Wheezy) (64bits)
Nginx : nginx/1.2.1
PHP : 5.4.4
MySQL : Ver 14.14 Distrib 5.5.35

Afin de réaliser le meilleur tutoriel possible, toutes les configurations ont été passées sur un VPS Classic d’OVH à 2.40€ par mois avec son propre nom de domaine admin-tools.writesthisblog.com. Pour installer le minimum vital pour disposer d’un serveur LEMP (Linux Engine-x MySQL PHP) avec SSL, il suffit de passer apt-get install mysql-server php5-mysql php5-cli php5-fpm nginx openssl apache2-utils.
J’utilise Debian, ceci dit, ces configurations sont plutôt indépendantes de l’OS, à part des variations sur les noms des packages ou des répertoires utilisés, tout devrait être assez facilement portable d’un linux à l’autre.

Un Script pour Gérer ses Bases de Données MySQL

Pour disposer d’une installation solide, chaque outil va utiliser sa propre base de données (BDD). Cela évite d’avoir des tables qui se percutent, ou des fausses manipulations qui tournent au désastre. Autant se servir d’un script pour créer rapidement les BDDs. En bonus, il permet de faire appel à des scripts externes, qui peuvent être soit des scripts d’initialisation de la BDD, soit des dumps pour restaurer la BDD.

Dernièrement, On sécurise un minimum son installation avec mysql_secure_installation :

Sous-Domaine d’Administration Sécurisé

Il est très important de séparer ses outils d’administration dans un sous-domaine que l’on sécurisera avec du SSL et ce pour trois raisons :

  • un scan sur l’IP du serveur aboutira sur le domaine principal sans les outils
  • le SSL chiffre les échanges et rend plus difficile les attaques par  » brute force « 
  • la séparation rend possible une configuration brutale des ACL ou du fail2ban

Je renvoie vers un des mes précédents articles pour configurer son serveur web en SSL.
Selon son degré de paranoïa, on peut aussi créer avec htpassword un fichier de mots de passe qui sera utilisé pour permettre l’accès à toute la zone d’administration.

Fichier de mots de passe et certificats sont supposés être placés dans le répertoire /etc/nginx/secu dans ce tutoriel. Surtout ne pas oublier de limiter l’accès à ces fichiers à coup de chmod

Configuration Nginx

Au final, les outils d’administration seront placés dans le répertoire /var/www/admin. Ici une configuration nginx

Les fichiers utilisés dans les « includes » sont /etc/nginx/fastcgi_params et /etc/nginx/ssl_params. C’est un peu plus difficile à mettre en place, mais éclater les éléments de sa configuration permet de la rendre plus lisible et aussi fournit un point centralisé pour transmettre une modification à tous ses sites web.

Premier Exemple : PHP Info

On crée rapidement le fichier phpinfo.php

Afin de sécuriser/simplifier l’accès, on peut rajouter le bloc location suivant à sa configuration nginx :

Il ne reste plus qu’à visiter la page https://admin-tools.writesthisblog.com/test/info.php.

La suite au prochain article pour installer phpMyAdmin.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.