Cybersécurité : Serveur de mots de passe SecretManager
Introduction
SecretManager est un serveur de gestion de mots passe, créé par Pierre-Luc Mary. Il comporte une interface web et est écrit en php5.
Installation
Pré-requis
Je pars ici d'une VM vierge. Néanmoins, il est nécessaire de gérer tout ce qui est en lien avec DNS, à la fois sur le serveur et sur le client. Votre serveur doit donc avoir un serveur DNS (contenant une entrée pour lui ! SecretManager a besoin de faire des requêtes DNS sur lui-même !). Si vous n'en avez pas, vous pouvez utiliser le fichier /etc/hosts.
Dépendances
Je pars ici d'une VM Debian Stretch.
- Nous allons installer SecretManager sur un serveur Apache2. Nous commencons par installer les composants nécessaires :
apt update apt install apache2 mysql-server unzip phpmyadmin
- Puisque j'utilise Debian Stretch, php5 n'est pas disponible tel quel. Je vais donc ajouter les dépôts de Debian Jessie pour y avoir accès:
vim /etc/apt/sources.list #Ajouter la ligne: deb http://deb.debian.org/debian jessie main
- Il n'y a plus qu'à installer php et ses modules, nécessaires à phpmyadmin et SecretManager :
apt update && apt install php5 php-mbstring php-gettext php5-mysql php-mcrypt
Installation de SecretManager
- SecretManager est disponible depuis Sourceforge. On se place dans le dossier home et on le télécharge :
cd ~ wget https://datapacket.dl.sourceforge.net/project/secretmanager/SecretManager-v1.0-2.zip
- Les téléchargements avec wget depuis Sourceforge peuvent être ennuyeux; si le lien n'est pas bon, lancez un téléchargement de SecretManager depuis Sourceforge dans un navigateur, annulez-le, puis allez dans la section téléchargements de votre navigateur et récupérez le lien [sous Firefox : clic-droit > Copier l'adresse d'origine du téléchargement].
- Nous allons ensuite le dézipper et le placer dans le dossier /var/www avec les droits:
unzip SecretManager-v1.0-2.zip cp -r SecretManager /var/www/SecretManager chown -R www-data:www-data /var/www/SecretManager/
Mise en place du serveur Web
- Je commence par créer mon fichier d'hôtes virtuel tel que celui-ci dans /etc/apache2/sites-available/001-secretmanager.conf. Celui-ci redirige automatiquement vers https.
<VirtualHost *:80> ServerName secretmanager.ju.lab ServerAdmin webmaster@localhost Redirect Permanent / https://secretmanager.ju.lab ErrorLog ${APACHE_LOG_DIR}/secretmanager.log CustomLog ${APACHE_LOG_DIR}/secretmanager.log combined </VirtualHost> <VirtualHost *:443> ServerName secretmanager.ju.lab DocumentRoot /var/www/SecretManager ErrorLog ${APACHE_LOG_DIR}/secretmanager.log SSLEngine on SSLCertificateKeyFile /etc/ssl/private/secretmanager_priv_key.pem SSLCertificateFile /etc/ssl/private/secretmanager_cert.pem ###Configuration spécifique à SecretManager <Directory /var/www/SecretManager> DirectoryIndex index.php index.html AllowOverride All Order allow,deny Allow from all </Directory> <Directory /var/www/SecretManager/Backup> Order allow,deny Allow from localhost Deny from all </Directory> <Directory /var/www/SecretManager/Libraries/Restricted> Order allow,deny Allow from localhost Deny from all </Directory> CustomLog ${APACHE_LOG_DIR}/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\"%b" </VirtualHost>
- Je vais ensuite générer la clef et le certificat (remplir les champs conformément à votre site):
cd /etc/ssl/private/ openssl req -newkey rsa:2048 -nodes -keyout secretmanager_priv_key.pem -x509 -days 365 -out secretmanager_cert.pem
- Je vais ensuite activer ssl pour Apache2, contrôler et activer le site, et recharger Apache2:
cd /etc/apache2/sites-available/ a2ensite 001-secretmanager.conf a2enmod php5 a2enmod ssl a2enmod rewrite apache2ctl -t apache2ctl graceful systemctl restart apache2
Base de données
Nous allons devoir accéder à phpmyadmin pour installer les fichiers de base de données prévus par SecretManager. Il faut s'y connecter avec un utilisateur ayant tous les droits (La connection en tant que root étant par défaut interdite, il est plus simple de créer un utilisateur temporaire et de lui donner tous les droits, avant de s'en servir pour se connecter. N'oubliez pas de le supprimer après !).
- Connectez vous à http://ip_du_serveur/phpmyadmin.
- Rendez-vous dans l'onglet "import", et importez les fichiers suivants, contenus dans SecretManager/Installation :
- Secret-Manager-0-Linux.sql
- Secret-Manager-1.sql
- Secret-Manager-2.sql
- Secret-Manager-3.sql
- J'utilise ici phpmyadmin pour suivre à la lettre les instruction d'installation de SecretManager. Néanmoins, il est également possible de le faire en ligne de commande : mysql -u myuser -p < /home/user/SecretManager/Install/Secret-Manager-0-Linux.sql
Ajustement du routage interne de SecretManager
Il est nécessaire d'indiquer à SecretManager vers quel serveur (lui-même, normalement...) rediriger les flux en réécrivant les adresses. Pour cela, ouvrez le fichier /var/www/SecretManager/Constants.inc.php avec un éditeur de texte, puis modifiez la ligne suivante:
define( 'SERVER', 'ihm.secretmanager.fr' ); #Est remplacé par, dans mon cas: define( 'SERVER', 'secretmanager.ju.lab' );
Vous pouvez indiquer une URL ou bien une IP.
Vérification de l'installation
SecretManager implémente un script de vérification de l'installation. Vous pouvez y accéder depuis l'url :
https://adressedevotreserveurweb/SM-control.php
Tous les voyants doivent être sur 'OK'.
Premier accès
Le serveur est en place, on va pouvoir y accéder via l'url : https://adresseduserveur/SM-login.php. Le login par défaut :
- login : root
- mot de passe (attention à l'espace): Welcome !