RatticDB est un service open source de gestion de mots de passe basé sur Django. L'API fournie par celui-ci est utilisée pour l'accès par des programmes externes et des journaux d'audit pour assurer une responsabilité totale. Il existe également une "Change Queue" afin de savoir quels mots de passe doivent être modifiés et quand.
1. Installer le prérequis
Mettez à jour votre système et installez tous les prérequis, y compris MySQL et Apache.
root@demohost:~# apt-get update
root@demohost:~# apt-get install apache2 php git gcc mysql-server python-setuptools gcc openssl libxml2 python-dev libxml2-dev libxslt1-dev zlib1g-dev libldap2-dev python-ldap python-mysqldb gettext apache2-dev libmysqlclient-dev libsasl2-dev python-dev libldap2-dev libssl-dev pyflakes
root@demohost:~# easy_install pip
Configurez le nom de domaine complet de votre hôte en ajoutant une entrée appropriée pour l'hôte et le nom de domaine dans /etc/hosts &/etc/hostname (facultatif)
root@demohost:~# cat /etc/hosts
127.0.0.1 localhost
172.31.24.18 demohost.com demohost
root@demohost:~# cat /etc/hostname
demohost
Redémarrer le réseau
root@demohost:~# service networking restart
Vérifiez maintenant le FQDN de votre hébergeur
root@demohost:~# hostname
demohost
root@demohost:~# hostname -f
demohost.com
2. Télécharger RatticWeb
Téléchargez RatticWeb et installez les modules python requis à l'aide de pip.
root@demohost:~# cd /opt
root@demohost:/opt# mkdir apps
root@demohost:/opt# cd apps
root@demohost:/opt/apps# git clone https://github.com/tildaslash/RatticWeb.git
Cloning into 'RatticWeb'...
remote: Counting objects: 6192, done.
remote: Total 6192 (delta 0), reused 0 (delta 0), pack-reused 6192
Receiving objects: 100% (6192/6192), 1.63 MiB | 707.00 KiB/s, done.
Resolving deltas: 100% (3553/3553), done.
Checking connectivity... done.
root@demohost:/opt/apps# cd RatticWeb/
root@demohost:/opt/apps/RatticWeb# /usr/local/bin/pip install -r requirements-mysql.txt -r requirements-dev.txt
3. Créer une base de données/un utilisateur MySQL
Créez une base de données/un utilisateur MySQL et accordez des privilèges.
root@demohost:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1807
Server version: 5.7.17-0ubuntu0.16.04.1 (Ubuntu)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database rattic CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)
mysql> SET GLOBAL innodb_file_per_table = ON, innodb_file_format = Barracuda, innodb_large_prefix = ON;
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON rattic.* TO 'rattic'@'localhost' identified by 'somepassword';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
4. Configurer RatticWeb
Par défaut, RatticWeb s'exécute en mode débogage en utilisant une base de données SQLite. Pour changer cela et configurer la connexion MySQL, créez un fichier /opt/apps/RatticWeb/conf/local.cfg avec le contenu suivant.
root@demohost:~# cd /opt/apps/RatticWeb
root@demohost:/opt/apps/RatticWeb# vi conf/local.cfg
[ratticweb]
debug =Falsesecretkey =linoxidehostname =demohost.com
[chemins de fichiers]
statique =/opt/apps/RatticWeb/statique
[base de données]
moteur =django.db.backends.mysqlname =ratticuser =ratticpassword =somepasswordhost =localhostport =3306
Spécifiez votre fuseau horaire, les jours d'expiration du mot de passe et le nom d'hôte.
root@demohost:/opt/apps/RatticWeb# vim conf/defaults.cfg
timezone = Asia/Kolkata
passwordexpirydays = 90
hostname = demohost.com
5. Migrer RatticWeb
Vous pouvez obtenir l'erreur suivante dans les migrations.
..................
..................
django.core.exceptions.ImproperlyConfigured:
For South support, customize the SOUTH_MIGRATION_MODULES setting
to point to the correct migrations module:
SOUTH_MIGRATION_MODULES = {
'kombu_transport_django': 'kombu.transport.django.south_migrations',
}
Pour corriger cela, copiez le bon module de migration.
root@demohost:# cd /usr/local/lib/python2.7/dist-packages
root@demohost:/usr/local/lib/python2.7/dist-packages# rm -rf kombu/transport/django/migrations djcelery/migrations
root@demohost:/usr/local/lib/python2.7/dist-packages# mv kombu/transport/django/south_migrations kombu/transport/django/migrations
root@demohost:/usr/local/lib/python2.7/dist-packages# mv djcelery/south_migrations djcelery/migrations
Effectuez maintenant la migration
root@demohost:# cd /opt/apps/RatticWeb/
root@demohost:/opt/apps/RatticWeb# ./manage.py syncdb --noinput
root@demohost:/opt/apps/RatticWeb# ./manage.py migrate [ create and setup the database ]
root@demohost:/opt/apps/RatticWeb# mkdir static
root@demohost:/opt/apps/RatticWeb# ./manage.py collectstatic -c --noinput [ populate the static files directory ]
root@demohost:/opt/apps/RatticWeb# ./manage.py demosetup [ to create an initial user account ]
6. Compiler/installer mod_wsgi
Téléchargez et compilez mod_wsgi. Vous avez besoin de python-dev et apache2-dev pour installer mod_wsgi. Ces deux éléments sont installés à l'étape 1.
root@demohost:~# wget https://github.com/GrahamDumpleton/mod_wsgi/archive/develop.zip
root@demohost:~# unzip develop.zip
root@demohost:~# cd mod_wsgi-develop
root@demohost:~/mod_wsgi-develop#./configure --with-python=/usr/bin/python3.5
root@demohost:~/mod_wsgi-develop# make
root@demohost:~/mod_wsgi-develop# make install
root@demohost:~/mod_wsgi-develop# cd /etc/apache2/mods-available
root@demohost:/etc/apache2/mods-available# vi wsgi.load
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
root@demohost:/etc/apache2/mods-available# cd /etc/apache2/mods-enabled
root@demohost:/etc/apache2/mods-enabled# ln -s ../mods-available/wsgi.load .
root@demohost:/etc/apache2/mods-enabled# service apache2 start
Pour plus de détails sur la compilation de mod_wsgi, cliquez ici.
7. Configurer Apache
Créez un certificat SSL et une clé à l'aide d'OpenSSL.
root@demohost:~# sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/demohost.com.key -out /etc/ssl/certs/demohost.com.crt
Modifiez le fichier de configuration par défaut d'Apache et modifiez ServerName et ServerAlias. Assurez-vous de tout rediriger de http vers https. Modifiez également default-ssl.conf et ajoutez la clé SSL/chemin de certification, ajoutez les alias et la configuration du répertoire pour RatticWeb.
root@demohost# vi /etc/apache2/sites-available/000-default.conf
ServerAdmin [email protected]
DocumentRoot /var/www/html
ServerName demohost.com
ServerAlias demohost.com
Redirect permanent / https://demohost.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Modifiez maintenant default-ssl.conf
root@demohost# vi /etc/apache2/sites-available/default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
SSLEngine on
SSLCertificateFile /etc/ssl/certs/demohost.com.crt
SSLCertificateKeyFile /etc/ssl/private/demohost.com.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
Alias /robots.txt /opt/apps/RatticWeb/static/robots.txt
Alias /favicon.ico /opt/apps/RatticWeb/static/favicon.ico
AliasMatch ^/([^/]*\.css) /opt/apps/RatticWeb/static/styles/$1
Alias /media/ /opt/apps/RatticWeb/media/
Alias /static/ /opt/apps/RatticWeb/static/
<Directory /opt/apps/RatticWeb/static>
Require all granted
</Directory>
<Directory /opt/apps/RatticWeb/media>
Require all granted
</Directory>
WSGIScriptAlias / /opt/apps/RatticWeb/ratticweb/wsgi.py
WSGIPassAuthorization On
WSGIDaemonProcess rattic processes=2 threads=25 home=/opt/apps/RatticWeb/ python-path=/opt/apps/RatticWeb display-name=%{GROUP}
WSGIProcessGroup rattic
<Directory /opt/apps/RatticWeb/ratticweb>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
</IfModule>
Activer les modules apache
root@demohost:~# sudo a2enmod wsgi
root@demohost:~# a2enmod rewrite
root@demohost:~# a2ensite default-ssl
root@demohost:~# a2enmod ssl
root@demohost:~# service apache2 restart
8. Configurer le pare-feu
Ajustez les règles de pare-feu pour autoriser le trafic sur les ports 80 et 443
Pour les utilisateurs d'IPTABLES
[root@demohost ~]# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
[root@demohost ~]# iptables-save > /etc/iptables/rules.v4
[root@demohost ~]# service iptables-persistent restart
Pour les utilisateurs UFW
[root@demohost ~]# ufw allow 80/tcp
[root@demohost ~]# ufw allow 443/tcp
[root@demohost ~]# ufw reload
9. Accéder à RatticDB
Pour accéder à rattic, tapez https://FQDN_Or_IP_Address_Of_Your_Server
Connectez-vous avec le nom d'utilisateur par défaut en tant qu'administrateur et le mot de passe en tant que rattic, vous serez redirigé vers le tableau de bord du mot de passe. Modifiez le mot de passe par défaut pour l'utilisateur admin.
Cliquez sur "Profil" dans la barre latérale gauche pour afficher la page de profil d'administrateur. Cliquez sur "Modifier le mot de passe"
Tapez le nouveau mot de passe et cliquez sur "Modifier le mot de passe"
Cliquez sur "Gestion du personnel" puis sur "Ajouter un groupe"
Donnez un nom de groupe et soumettez.
Sélectionnez "Gestion du personnel" puis cliquez sur "Ajouter un utilisateur". Remplissez les détails de l'utilisateur et cliquez sur "Soumettre"
Pour lister les utilisateurs, sélectionnez "Gestion du personnel", tous les utilisateurs et groupes seront listés.
C'est tout pour Rattic-DB, vous pouvez désormais gérer les utilisateurs/groupes et les mots de passe de manière plus sécurisée et y accéder via des API sécurisées
Conclusion :
Nous avons installé et configuré un très bon système de gestion des mots de passe, c'est-à-dire RatticDB. Il présente plusieurs avantages, tels qu'une utilisation simple, un contrôle d'accès simple, des journaux d'audit pour la responsabilité, la disponibilité de l'API, le cryptage sur le système de fichiers, peut être configuré avec n'importe quelle base de données, gérer les modifications avec une file d'attente de modifications, etc. Il existe d'autres gestionnaires de mots de passe open source sont disponibles comme teampass, keypass, cadenas que vous pouvez également considérer selon vos besoins.