Passbolt and Nginx

Passbolt Passwort Manager

Administration, Nginx, Passbolt, Sicherheit, Verschlüsselung Kommentare (0)

Einen eigenen Passwort Manager kann man mit Passbolt unter Nginx realisieren. Das Tool wird dabei auf dem eigenen Server gehostet. Vorteil: Unabhängigkeit von Passwort-Diensten die in der Cloud meistens auch Geld kosten. Nachteil: Man braucht einen eigenen Server und (tiefgreifendes) Wissen.

Setup

Voraussetzungen erfüllen

Im ersten Schritt werden die notwendigen Komponenten zur Installation vorbereitet. Voraussetzungen für eine erfolgreiche Installation sind auf der Entwicklerseite abgebildet. Also
php-gnupg, php-gd2 oder php-imagick installieren

Code clonen

Der Pfad dahin liegt in der freien Bestimmung des Admins.

cd /var/www/domain.tld/
git clone https://github.com/passbolt/passbolt.git passbolt

Berechtigungen setzen

chmod +w -R app/tmp
chmod +w app/webroot/img/public

Key generieren

gpg --gen-key

Eine Anleitung dazu ist schnell „ergoogelt“, z.b. auf den Seiten von RedHat, oder in Cyberciti.biz.

TIP1: Sicherstellen, dass keine bestehenden Keys eliminiert werden!
TIP2: Die Ausgabe des Befehls gpg –gen-key in einer Textdatei (zumindest copy & paste) ablegen.
TIP3: Kein Passwort verwenden, da dies von php-gnupg nicht supportet wird.
gpg: key 08D2A7F9 marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   3  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 3u
gpg: next trustdb check due at 2027-11-22
pub   2048R/08D2A7F9 2016-12-05
	  Key fingerprint = 2FC8 9458 33C5 1946 E937 F9FE D47B 0811 573E E67D
uid                  Chris Moeser (The Admin) <passbolt@domain.tld>
sub   2048R/23B5F24C 2016-12-05

(Werte geändert, das Zeug sieht aber so in etwa aus)

Mit gpg -K kann der Schlüssel (oder auch die) gelistet werden.

Die Komponenten (Public/Private Key) werden ins Document Root kopiert

gpg --armor --export-secret-keys your_email@domain.com > /var/www/domain.tld/app/Config/gpg/serverkey.private.asc
gpg --armor --export your_email@domain.com > /var/www/domain.tld/app/Config/gpg/serverkey.asc

Nginx Server Config


server {
    listen   80;
    server_name passbolt.domain.tld;
    # redirect to SSL
    rewrite ^(.*) http://passbolt.domain.tld$1 permanent;
}

server {
    listen   80;
    server_name passbolt.domain.tld;

    # root directive should be global
    root   /var/www/passbolt.domain.tld/passbolt/public/app/webroot/;
    index  index.php;

    # check the accessibility of the log directory, 
    # as this might require some adjustments, e.g.
    # /var/log/nginx/...
    access_log /var/www/passbolt.domain.tld/log/access.log;
    error_log /var/www/passbolt.domain.tld/log/error.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Code/Config anpassen

Die nachfolgenden Schritte sind absolut relevant um die Sicherheit der Installation zu gewährleisten! In der Konfigurationsdatei sind Anpassungen vorzunehmen:

core.php

cp app/Config/core.php.default app/Config/core.php

In dieser Datei sind Einstellungen vorzunehmen, die das CakePHP-Framwork benötigt. Passbolt verwendet diese nicht. vi app/Config/core.php

Configure::write('Security.salt', 'put your own salt here');
Configure::write('Security.cipherSeed', 'put your own cipher seed here');

Um die beiden Werte mit Daten zu belegen kann man z.B. doorman verwenden, oder sein Gesicht pflichtbewusst auf die Tastatur fallen lassen. In der Konfiguration steht drin, welche Zeichen das System erwartet.

Doorman RNG

Eine weitere Anpassung ist der Pfad zum Bildordner. Versendete Mails referenzieren auf dieses Verzeichnis

Configure::write('App.fullBaseUrl', 'http://pass.domain.tld');

Die zugrundeliegende Datenbank muss unter  eingetragen werden. dazu beherzt:

database.php

cp app/Config/database.php.default app/Config/database.php

In der Class DATABASE_CONFIG wird dabei das Array $default angepasst.

(Einstellungen entsprechend anpassen)

public $default = array(
	'datasource' => 'Database/Mysql',
	'persistent' => false,
	'host' => 'localhost',
	'login' => 'username',
	'password' => 'password',
	'database' => 'passbolt'
);

Jetzt geht es an(s Eingemachte) die Zuweisung der GPG Keys im Code. Dazu wird die app.php angelegt, anschließend editiert (vi app.php)

app.php

cp app/Config/app.php.default app/Config/app.php

(Kommentare geben -erweiterte- Hinweise)

   'GPG' => [
     // Tell GPG where to find the keyring
     // Needs to be available by the user the webserver is running as
     'env' => [
       // you can set this to false if you want to use *nix $GNUPGHOME environment variable
       'setenv' => true,
       // otherwise you can set the location here
       // typically on Centos it would be in '/usr/share/httpd/.gnupg'
       // TIP: Der Pfad muss für den Webserver-Benutzer erreichbar sein, sonst bricht die 
       // INstallation ab!
       'home' => '/var/www/..somewheresave../.gnupg',
     ],
     // Main server key
     'serverKey' => [
       // Server private key location and fingerprint
       // TIP: Diese Informationen haben wir oben erhalten.

       'fingerprint' => '2FC8945833C51946E937F9FED47B0811573EE67D',
       'public' => APP . 'Config' . DS . 'gpg' . DS . 'serverkey.asc',
       'private' => APP . 'Config' . DS . 'gpg' . DS . 'serverkey_private.asc',

       // PHP Gnupg module currently does not support passphrase, please leave blank
       'passphrase' => ''
     ]
   ]

email.php

Einstellungen innerhalb des $default-Arrays werden auf den entsprechenden Mailserver zugeschnitten.

Installation

Die Ausführung des Befehls

app/Console/cake install --no-admin

nimmt die Installation vor, die fehlerfrei beendet wird, wenn alle Rahmenparameter passen. ein Admin wird dabei zunächst nicht erstellt. Dies folgt im Anschluss.

Passbolt installation success! Enjoy! ☮

Adminbenutzer anlegen

Geschieht wie die Installation an der Kommandozeile mit dem Befehl

app/Console/cake passbolt register_user -u foo@bar.com -f Chris -l Moeser -r admin

und wird auch an der Kommandozeile quitiert! Die nachfolgende Ausgabe ist entsprechend modifiziert

The user has been registered with success, to complete the registration process follow the link : http://pass.domain.tld/setup/install/82735282-729c-3g7c-ab87-2725a8e82c5b/cc9c1918-ce8f-44e1-af96-9f48a86d7c38
The user has been notified by email to complete his registration process.

Done!

Passbolt Firefox

Quellen

» Administration, Nginx, Passbolt, Sicherheit, Verschlüsselung » Passbolt Passwort Manager
Im 5. Dezember 2016
Von
, , ,

Kommentare sind geschlossen.

« »

%d Bloggern gefällt das: