RatticDB è un servizio di gestione delle password basato su Django open source. L'API fornita da esso viene utilizzata per l'accesso da parte di programmi esterni e registri di controllo per garantire la piena responsabilità. C'è anche una "Coda di cambio" in modo da tenere traccia di quali password devono essere modificate e quando.
1. Prerequisito di installazione
Aggiorna il tuo sistema e installa tutti i prerequisiti inclusi MySQL e 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
Configura FQDN per il tuo host aggiungendo la voce corretta per host e nome di dominio in /etc/hosts &/etc/hostname(opzionale)
root@demohost:~# cat /etc/hosts
127.0.0.1 localhost
172.31.24.18 demohost.com demohost
root@demohost:~# cat /etc/hostname
demohost
Riavvia la rete
root@demohost:~# service networking restart
Ora controlla l'FQDN del tuo host
root@demohost:~# hostname
demohost
root@demohost:~# hostname -f
demohost.com
2. Scarica RatticWeb
Scarica RatticWeb e installa i moduli richiesti da Python usando 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. Crea database/utente MySQL
Crea database/utente MySQL e concedi privilegi.
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. Configura RatticWeb
Per impostazione predefinita RatticWeb viene eseguito in modalità di debug utilizzando un database SQLite. Per cambiarlo e configurare la connessione MySQL, crea un file /opt/apps/RapticWeb/conf/local.cfg con i seguenti contenuti.
root@demohost:~# cd /opt/apps/RatticWeb
root@demohost:/opt/apps/RatticWeb# vi conf/local.cfg
[raticweb]
debug =Falsesecretkey =linoxidehostname =demohost.com
[percorsi file]
statico =/opt/apps/RapticWeb/statico
[database]
motore =django.db.backends.mysqlname =utenterattico =passwordrattica =hostpassword =localhostport =3306
Specifica il tuo fuso orario, i giorni di scadenza della password e il nome host.
root@demohost:/opt/apps/RatticWeb# vim conf/defaults.cfg
timezone = Asia/Kolkata
passwordexpirydays = 90
hostname = demohost.com
5. Migrare RatticWeb
Potresti ricevere il seguente errore nelle migrazioni.
..................
..................
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',
}
Per correggere questo, copia il modulo di migrazione corretto.
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
Ora esegui la migrazione
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. Compila/installa mod_wsgi
Scarica e compila mod_wsgi. Hai bisogno di python-dev e apache2-dev per l'installazione di mod_wsgi. Entrambi vengono installati nel passaggio 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
Per maggiori dettagli sulla compilazione di mod_wsgi, controlla qui.
7. Configura Apache
Crea certificato SSL e chiave utilizzando 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
Modifica il file di configurazione predefinito di Apache e cambia ServerName e ServerAlias. Assicurati di reindirizzare tutto da http a https. Modifica anche default-ssl.conf e aggiungi chiave SSL/percorso certificato, aggiungi alias e configurazione directory per 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
Ora modifica 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>
Abilita i moduli 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. Configura Firewall
Regola le regole del firewall per consentire al traffico di portare le porte n. 80 e 443
Per utenti 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
Per utenti UFW
[root@demohost ~]# ufw allow 80/tcp
[root@demohost ~]# ufw allow 443/tcp
[root@demohost ~]# ufw reload
9. Accedi a RatticDB
Per accedere a ratic, digita https://FQDN_Or_IP_Address_Of_Your_Server
Accedi con il nome utente predefinito come amministratore e la password come ratic, verrai reindirizzato alla dashboard delle password. Modifica la password predefinita per l'amministratore utente.
Fai clic su "Profilo" dalla barra laterale sinistra per visualizzare la pagina del profilo dell'amministratore. Fai clic su "Cambia password"
Digita la nuova password e fai clic su "Cambia password"
Fai clic su "Gestione del personale" e poi su "Aggiungi gruppo"
Assegna un nome al gruppo e invia.
Seleziona "Gestione del personale" e quindi premi "Aggiungi utente". Compila i dettagli dell'utente e fai clic su "Invia"
Per elencare gli utenti, seleziona "Gestione del personale", verranno elencati tutti gli utenti e i gruppi.
Questo è tutto per Rattic-DB, ora puoi gestire utenti/gruppi e password in modo più sicuro e accedervi tramite API sicure
Conclusioni:
Abbiamo installato e configurato un sistema di gestione delle password molto carino, ovvero RatticDB. Presenta numerosi vantaggi come semplice da usare, semplice controllo dell'accesso, registri di controllo per la responsabilità, disponibilità di API, crittografia sul file system, può essere configurato con qualsiasi database, gestire le modifiche con una coda di modifica ecc. Esistono altri gestori di password open source sono disponibili come teampass, keypass, lucchetto che puoi anche prendere in considerazione per le tue esigenze.