Cómo configurar el servicio de administración de contraseñas RatticDB en Ubuntu 16.04
RatticDB es un servicio de gestión de contraseñas de código abierto basado en Django. La API que proporciona se utiliza para el acceso de programas externos y registros de auditoría para garantizar la total responsabilidad. También hay una «Cola de cambios» para rastrear qué contraseñas deben cambiarse y cuándo.
1. Instale el requisito previo
Actualice su sistema e instale todos los requisitos previos, incluidos MySQL y 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
Configure el FQDN para su host agregando la entrada adecuada para el host y el nombre de dominio en / etc / hosts & / etc / hostname (opcional)
root@demohost:~# cat /etc/hosts 127.0.0.1 localhost 172.31.24.18 demohost.com demohost root@demohost:~# cat /etc/hostname demohost
Reiniciar la red
root@demohost:~# service networking restart
Ahora verifique el FQDN de su host
root@demohost:~# hostname demohost root@demohost:~# hostname -f demohost.com
2. Descarga RatticWeb
Descargue RatticWeb e instale los módulos requeridos por 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. Crear usuario / base de datos MySQL
Cree una base de datos / usuario MySQL y otorgue privilegios.
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. Configurar RatticWeb
De forma predeterminada, RatticWeb se ejecuta en modo de depuración utilizando una base de datos SQLite. Para cambiar esto y configurar la conexión MySQL, cree un archivo /opt/apps/RatticWeb/conf/local.cfg con el siguiente contenido.
root@demohost:~# cd /opt/apps/RatticWeb root@demohost:/opt/apps/RatticWeb# vi conf/local.cfg [ratticweb] debug = False secretkey = linoxide hostname = demohost.com [filepaths] static = /opt/apps/RatticWeb/static [database] engine = django.db.backends.mysql name = rattic user = rattic password = somepassword host = localhost port = 3306
Especifique su zona horaria, los días de caducidad de la contraseña y el nombre de host.
root@demohost:/opt/apps/RatticWeb# vim conf/defaults.cfg timezone = Asia/Kolkata passwordexpirydays = 90 hostname = demohost.com
5. Migre RatticWeb
Es posible que obtenga el siguiente error en las migraciones.
.................. .................. 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', }
Para corregir esto, copie el módulo de migración correcto.
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
Ahora realiza la migración
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. Compile / instale mod_wsgi
Descargue y compile mod_wsgi. Necesita python-dev y apache2-dev para instalar mod_wsgi. Ambos se instalan en el paso 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
Para obtener más detalles sobre la compilación de mod_wsgi, consulte aquí.
7. Configurar Apache
Cree un certificado y una clave SSL con 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
Edite el archivo de configuración predeterminado de Apache y cambie ServerName y ServerAlias. Asegúrese de redirigir todo, desde http a https. También edite default-ssl.conf y agregue la clave SSL / ruta de certificación, agregue los alias y la configuración del directorio para RatticWeb.
root@demohost# vi /etc/apache2/sites-available/000-default.conf ServerAdmin webmaster@demohost.com 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
Ahora edite default-ssl.conf
root@demohost# vi /etc/apache2/sites-available/default-ssl.conf <IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin webmaster@demohost.com 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>
Habilitar módulos 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. Configurar el cortafuegos
Ajuste las reglas del firewall para permitir el tráfico a los puertos 80 y 443
Para usuarios de 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
Para usuarios de UFW
[root@demohost ~]# ufw allow 80/tcp [root@demohost ~]# ufw allow 443/tcp [root@demohost ~]# ufw reload
9. Acceda a RatticDB
Para acceder a rattic, escriba https: // FQDN_Or_IP_Address_Of_Your_Server
Inicie sesión con el nombre de usuario predeterminado como administrador y la contraseña como rattic, será redirigido al panel de control de contraseñas. Cambie la contraseña predeterminada para el administrador del usuario.
Haga clic en «Perfil» en la barra lateral izquierda para ver la página de perfil de administrador. Haga clic en «Cambiar contraseña»
Escriba la nueva contraseña y haga clic en «Cambiar contraseña»
Haga clic en «Administración de personal» y luego en «Agregar grupo»
Da un nombre de grupo y envíalo.
Seleccione «Administración de personal» y luego presione «Agregar usuario». Complete los datos del usuario y haga clic en «Enviar»
Para listar usuarios, seleccione «Administración de personal», se listarán todos los usuarios y grupos.
Eso es todo para Rattic-DB, ahora puede administrar usuarios / grupos y contraseñas de manera más segura y acceder a ellos a través de API seguras
Conclusiones:
Hemos instalado y configurado un sistema de gestión de contraseñas muy agradable, es decir, RatticDB. Tiene varias ventajas, como fácil de usar, control de acceso simple, registros de auditoría para la responsabilidad, disponibilidad de API, cifrado en el sistema de archivos, se puede configurar con cualquier base de datos, administrar cambios con una cola de cambios, etc. Hay otros administradores de contraseñas de código abierto están disponibles como teampass, keypass, candado que también puede considerar para sus necesidades.