RatticDB

From HackerNet
Revision as of 15:20, 25 September 2015 by Sparco (talk | contribs)
Jump to: navigation, search

RatticDB är en open-source password management databas gjord för att flera ska kunna läsa och skriva samtidigt. Man hostar den själv och når den via en hemsida.

Förberedelse

Om man vill och det är rekomenderat är följande,

  • Att man använder HTTPS för att logga in på Rattic.
  • Filsystemet där din databas lagras bör vara krypterat.
  • Access loggarna bör vara skyddade.
  • Program som OSSEC är bra att använda.

En fungerande LAMP och en databas skapad åt rattic samt följande paket.

  • python
  • pip
  • GCC
  • mysql-devel
  • openssl-devel
  • openldap-devel
  • python-devel
  • libxml2-devel
  • libxslt-devel
  • gettext

Installation

Det är rekomenderat att installera under /opt/apps.

mkdir /opt/apps && cd /opt/apps
git clone https://github.com/tildaslash/RatticWeb
cd RatticWeb
pip install -r requirements-mysql.txt
mkdir static
cd conf && cp defaults.cfg local.cfg

Ändra följande rader,

[ratticweb]
debug = False
secretkey = [enter a string of random secret data]
hostname = rattic 

[filepaths]
static = /opt/apps/RatticWeb/static

[database]
engine = django.db.backends.mysql
name = rattic
user = root
password =
host =
port =

Skapa sedan tabeller i databasen och fyll static mappen.

cd /opt/apps/RatticWeb/
./manage.py syncdb --noinput
./manage.py migrate --all
./manage.py collectstatic -c --noinput
./manage.py demosetup

Logga in med användaren admin med password rattic.

Nginx konfiguration

Börja med att installera supervisord och gunicorn.

easy_install supervisor
pip install gunicorn
echo_supervisord_conf >> /etc/supervisord.conf
mkdir /opt/apps/log

Lägg till följande rader längst ner i /etc/superviseord.conf.

[program:RatticDB]
command = /opt/apps/gunicorn_start.sh
user = rattic
stdout_logfile = /opt/apps/log/gunicorn_supervisor.log
redirect_stderr = true

Skapa en fil som heter gunicorn_start.sh under /opt/apps och lägg in följande.

 #!/bin/bash
 
NAME="RatticDB"                                   # Name of the application
DJANGODIR=/opt/apps/RatticWeb/                     # ratticdb project directory
USER=rattic                                       # the user to run as
GROUP=rattic                                      # the group to run as
NUM_WORKERS=3                             # how many worker processes should Gunicorn spawn (2xcores+1)
DJANGO_SETTINGS_MODULE=ratticweb.settings         # which settings file should Django use
DJANGO_WSGI_MODULE=ratticweb.wsgi                 # WSGI module name
 
echo "Starting $NAME as `whoami`"
 
# Activate the virtual environment
cd $DJANGODIR
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
 
# Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec /usr/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
  --name $NAME \
  --workers $NUM_WORKERS \
  --user=$USER --group=$GROUP \
  --log-level=debug \
  --bind=127.0.0.1:8000

Nginx conf fil.

server {
    listen       443 ssl;
    server_name  rattic.hackernet.se;
    
client_max_body_size 4G;

    location /static/ {
       alias /opt/apps/RatticWeb/static/;
    }

    location /media/ {
        alias   /opt/apps/RatticWeb/media/;
    }

    add_header Strict-Transport-Security max-age=15768000;
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    ssl_certificate         /etc/nginx/cert.crt;
    ssl_certificate_key     /etc/nginx/cert/cert.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!DSS:!RC4';
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/nginx/cert/dhparam.pem;
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  5m;


    location / {
        proxy_pass http://127.0.0.1:8000;
    }
}
  server {
 listen      80;
 server_name rattic.hackernet.se;
 
 # 301 = permanent redirect, 302 = temporary redirect
 return 301  https://rattic.hackernet.se$request_uri;
 }

LDAP

Lägg in följande i conf filen. Mer dokumentation finns på Rattic Wiki.

[ldap]
# LDAP server details
uri = ldap://localhost

# User parameters
userbase = ou=users,dc=example,dc=com
userfilter = (uid=%(user)s)

# Set up the basic group parameters.
groupbase = ou=django,ou=groups,dc=example,dc=com
groupfilter = (objectClass=groupOfNames)
grouptype = GroupOfNamesType

# How do I find staff
staff = cn=staff,ou=groups,dc=example,dc=com