« Cybersécurité : Serveur de mots de passe SecretManager » : différence entre les versions

De Justine's wiki
Aller à la navigation Aller à la recherche
(Page créée avec « = 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... »)
 
Aucun résumé des modifications
Ligne 2 : Ligne 2 :
= Introduction =
= 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.
SecretManager est un serveur de gestion de mots passe, créé par Pierre-Luc Mary et sous licence Copyleft. Il comporte une interface web et est écrit en php5. Le logiciel est composé en deux parties :
 
*SecretManager : Ce composant gère tout ce qui est interface web.
*SecretServer : Ce composant gère tout ce qui est mot de passe.
 
Les deux sont dans le même dossier à télécharger; tout est inclus. Nous verrons dans un premier temps la mise en place de SecretManager, puis celle de SecretServer.


= Installation =
= Installation =
Ligne 118 : Ligne 123 :
== Ajustement du routage interne de SecretManager ==
== 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:
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 ( Il est possible de se servir de ce fichier pour déplacer les dossiers de SecretManager; néanmoins, il faut prendre garde à ce que www-data y aait toujours accès, où qu'ils soient.) avec un éditeur de texte, puis modifiez la ligne suivante:
<pre>define( 'SERVER', 'ihm.secretmanager.fr' );
<pre>define( 'SERVER', 'ihm.secretmanager.fr' );
#Est remplacé par, dans mon cas:
#Est remplacé par, dans mon cas:
Ligne 133 : Ligne 138 :
Tous les voyants doivent être sur 'OK'.
Tous les voyants doivent être sur 'OK'.


= Premier accès =
== Premier accès ==


Le serveur est en place, on va pouvoir y accéder via l'url&nbsp;: [https://adresseduserveur/SM-login.php https://adresseduserveur/SM-login.php]. Le login par défaut&nbsp;:
Le serveur est en place, on va pouvoir y accéder via l'url&nbsp;: [https://adresseduserveur/SM-login.php https://adresseduserveur/SM-login.php]. Le login par défaut&nbsp;:
Ligne 140 : Ligne 145 :
*mot de passe (attention à l'espace): Welcome&nbsp;!  
*mot de passe (attention à l'espace): Welcome&nbsp;!  


&nbsp;
Vous devez accéder au panneau de contrôle de SecretManager :
 
[[File:Smpanal.png]]
 
= Mise en place du SecretServer =
 
SecretManager est en place. Il ne reste plus qu'à s'occuper de SecretManager qui est, lui, un peu plus simple.
 
== Configuration ==
 
SecretServer utilise le fichier de configuration suivant : /var/www/SecretManager/Libraries/Restricted/Config_SM-secrets-server.inc.php.
 
Il contient 3 choses :
 
*Son adresse IP : le seul paramètre à changer, normalement.
*Le port sur lequel il écoute (par défaut 10000)
*Le nom du fichier ou la clef "mère" sera stockée (c'est la clef qui sert à chiffrer tout les mots de passe). Cette clef sera elle-même chiffrée par une clef "opérateur", elle ne devrait donc pas être en clair sur le serveur.&nbsp;  
 
== Lancement du serveur ==
 
Pour le premier lancement, il conseillé d'utiliser le mode "debug" (un mode verbeux) :
<pre>php5 /var/www/SecretManager/SM-secrets-server.php -d</pre>
 
Plus d'options sont disponibles et l'aide est disponible avec :
<pre>php5 SM-secrets-server.php -h</pre>
 
Qui affiche:
<pre>SM-secrets-server.php [-config "conf_file"] [-debug] [-version]
-config "conf_file" : declare a specific configuration file
-c "conf_file"      : declare a specific configuration file
-debug              : script execution is in "debug" mode
-d                  : script execution is in "debug" mode
-version            : show script version
-v                  : show script version
-force              : force SecretServer to stop when we've got an integrity alert
-f                  : force SecretServer to stop when we've got an integrity alert</pre>
 
Quand il est lancé sans option, il tourne en tache de fond.
 
== En tant que daemon ==
 
Il est possible d'en faire un daemon en créant le script suivant dans /etc/init.d/SecretManager.sh (n'oubliez pas le chmod +x):
<pre># !/bin/sh
###BEGIN INIT INFO
# Provides : secretmanager
# Required-Start : $all
# Required-Stop : $local_fs
# Default-Start : 2 3 4 5
# Default-Stop : 0 1 6
# Short-Description : secretserver
# Description : Demarre et arrete le SecretServer. Composant de securite du
SecretManager.
### END INIT INFO
cd /var/www/SecretManager
case $1 in
start)
        echo ʺ′′Starting SecretServerʺ′′
        php5 SM-secrets-server.php 2&1 > /var/log/SecretServer.log &
        ;;
stop)
        echo ʺ′′Stopping SecretServerʺ′′
        PID=`ps aux|grep ʺ′′php SM-secrets-server.phpʺ′′|grep –v grep|awk ‘{print $2}’`
        Kill -15 $PID
        ;;
restart)
        $0 stop
        $0 start
        ;;
*)
        echo ʺ′′Usage : /etc/init.d/SecretServer {start|stop|restart}ʺ′′
        exit 1
        ;;
esac
exit 0</pre>


&nbsp;
Le serveur "SecretManager" est terminé.

Version du 15 février 2019 à 00:14

Introduction

SecretManager est un serveur de gestion de mots passe, créé par Pierre-Luc Mary et sous licence Copyleft. Il comporte une interface web et est écrit en php5. Le logiciel est composé en deux parties :

  • SecretManager : Ce composant gère tout ce qui est interface web.
  • SecretServer : Ce composant gère tout ce qui est mot de passe.

Les deux sont dans le même dossier à télécharger; tout est inclus. Nous verrons dans un premier temps la mise en place de SecretManager, puis celle de SecretServer.

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
  • RTENOTITLE

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 ( Il est possible de se servir de ce fichier pour déplacer les dossiers de SecretManager; néanmoins, il faut prendre garde à ce que www-data y aait toujours accès, où qu'ils soient.) 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 !

Vous devez accéder au panneau de contrôle de SecretManager :

Mise en place du SecretServer

SecretManager est en place. Il ne reste plus qu'à s'occuper de SecretManager qui est, lui, un peu plus simple.

Configuration

SecretServer utilise le fichier de configuration suivant : /var/www/SecretManager/Libraries/Restricted/Config_SM-secrets-server.inc.php.

Il contient 3 choses :

  • Son adresse IP : le seul paramètre à changer, normalement.
  • Le port sur lequel il écoute (par défaut 10000)
  • Le nom du fichier ou la clef "mère" sera stockée (c'est la clef qui sert à chiffrer tout les mots de passe). Cette clef sera elle-même chiffrée par une clef "opérateur", elle ne devrait donc pas être en clair sur le serveur. 

Lancement du serveur

Pour le premier lancement, il conseillé d'utiliser le mode "debug" (un mode verbeux) :

php5 /var/www/SecretManager/SM-secrets-server.php -d

Plus d'options sont disponibles et l'aide est disponible avec :

php5 SM-secrets-server.php -h

Qui affiche:

SM-secrets-server.php [-config "conf_file"] [-debug] [-version]
-config "conf_file" : declare a specific configuration file
-c "conf_file"      : declare a specific configuration file
-debug              : script execution is in "debug" mode
-d                  : script execution is in "debug" mode
-version            : show script version
-v                  : show script version
-force              : force SecretServer to stop when we've got an integrity alert
-f                  : force SecretServer to stop when we've got an integrity alert

Quand il est lancé sans option, il tourne en tache de fond.

En tant que daemon

Il est possible d'en faire un daemon en créant le script suivant dans /etc/init.d/SecretManager.sh (n'oubliez pas le chmod +x):

# !/bin/sh
###BEGIN INIT INFO
# Provides : secretmanager
# Required-Start : $all
# Required-Stop : $local_fs
# Default-Start : 2 3 4 5
# Default-Stop : 0 1 6
# Short-Description : secretserver
# Description : Demarre et arrete le SecretServer. Composant de securite du
SecretManager.
### END INIT INFO
cd /var/www/SecretManager
case $1 in
start)
        echo ʺ′′Starting SecretServerʺ′′
        php5 SM-secrets-server.php 2&1 > /var/log/SecretServer.log &
        ;;
stop)
        echo ʺ′′Stopping SecretServerʺ′′
        PID=`ps aux|grep ʺ′′php SM-secrets-server.phpʺ′′|grep –v grep|awk ‘{print $2}’`
        Kill -15 $PID
        ;;
restart)
        $0 stop
        $0 start
        ;;
*)
        echo ʺ′′Usage : /etc/init.d/SecretServer {start|stop|restart}ʺ′′
        exit 1
        ;;
esac
exit 0

Le serveur "SecretManager" est terminé.