Debian Lemur

Aus Wiki
Zur Navigation springen Zur Suche springen

Introduction

Lemur erstellt eine / oder mehrere lokale RootCA's für die übersichtlich und einfach Server oder Client Zertifkate ausgestellt, verlängert oder wiederrufen werden können. Das ganze erfolgt komplett im Webbrowser. Es stehen zahlreiche Plugins zur Verfügung mit deren Hilfe z.B. auch letsencrypt validierte Server Zertifikate verwalet werden können. Lemur wurde von Netflix entwickelt, das dort für die eigene Infrastruktur verwendet wird und über Github der Allgemeinheit zur Verfügung gestellt wurde. Lemur ist ein Python Server Dienst

Installation

Debian Pakete

Lemur benötig zahlreiche Pakete, die aus den Debian Paketquellen installierbar sind

apt-get install apt-get install sudo nodejs python-pip python-dev python3-dev libpq-dev build-essential libssl-dev libffi-dev libsasl2-dev libldap2-dev nginx git supervisor npm postgresql gulp

User für Lemur Dienst

useradd -d /home/lemur -m -s /bin/bash lemur
passwd lemur

Python envirnonment einrichten für Lemur

pip install -U virtualenv
mkdir /www
cd /www
git clone https://github.com/Netflix/lemur
chown -R lemur lemur/
su lemur
virtualenv -p python3 lemur
source /www/lemur/bin/activate
cd lemur
make release

Konfiguration erstellen und anpassen

lemur create_config
vi ~/.lemur/lemur.conf.py

Folgende Parameter anpassen:

LEMUR_EMAIL = 'lemur@domain.org'
LEMUR_SECURITY_TEAM_EMAIL = 'lemur@domain.org'
LEMUR_DEFAULT_COUNTRY = 'DE'
LEMUR_DEFAULT_STATE = 'Bavaria'
LEMUR_DEFAULT_LOCATION = 'Other'
LEMUR_DEFAULT_ORGANIZATION = 'Private' 
LEMUR_DEFAULT_ORGANIZATIONAL_UNIT = 'Network Admin'
LOG_FILE = "/www/lemur/lemur.log"

lemur User Umgebung verlassen

exit

Datenbank für Lemur einrichten

sudo -u postgres -i
psql
CREATE USER lemur WITH PASSWORD 'lemur';
alter role lemur createrole SuperUser;

Postgres verlassen mit der Tastenkombination:

CTRL-D

Datenbank anlegen:

createdb lemur

Postgres Umgebund verlassen:

exit

Lemur initialisiern und starten

su lemur
cd /www/lemur/lemur
/www/lemur/bin/lemur init
/www/lemur/bin/lemur start

Lemur sollte starten und keine Fehler ausgeben. Evtl. Warnings können ignoriert werden. Lemur startet auf diese Weise nicht als Dienst, sondern im Vordergrund und blockiert das aktuelle Terminal Fenster. Lemur abbrechen und lemur Umgebung verlassen:

CTRL-C
exit

Web Proxy

Standardmäßig läuft lemur auf Port 8000. Der Port könnte zwar geändert werden aber nicht auf Port 80, wenn Lemur als beschränkter User lemur laufen soll. Um Lemur dennoch auf Port 80 erreichbar zu machen wird NGINX als leightweight Proxy verwendet

/etc/nginx/sites-available/default

Folgende Zeile anpassen (domain.org entsprechend anpassen):

servername lemur.domain.org;

vor dem Absatz location / { folgende Zeilen einfügen:

location /api {
    proxy_pass  http://127.0.0.1:8000;
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    proxy_redirect off;
    proxy_buffering off;
    proxy_set_header        Host            $host;
    proxy_set_header        X-Real-IP       $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
}

Den Bereich location / folgendermaßen anpassen:

location / {
    root /www/lemur/lemur/static/dist;
    include mime.types;
    index index.html;
}

Nginx neu starten:

service nginx restart

Startscript für den Lemur Dienst

vi /etc/init.d/lemur

Folgende Zeilen einfügen:

#!/bin/sh
# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
#if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
#    set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
#fi
### BEGIN INIT INFO
# Provides:          skeleton
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.  This example start a
#                    single forking daemon capable of writing a pid
#                    file.  To get other behavoirs, implemend
#                    do_start(), do_stop() or other functions to
#                    override the defaults in /lib/init/init-d-script.
### END INIT INFO 

# Author: Foo Bar <foobar@baz.org>
#
# Please remove the "Author" lines above and replace them
# with your own name if you copy and modify this script. 

DESC="Lemur Server"
DAEMON="/www/lemur/bin/lemur"
PID="/var/run/lemur.pid"

case $1 in
   start)
       start-stop-daemon --start --chuid lemur --make-pidfile --pidfile $PID --background  --exec $DAEMON start
       ;;
  stop)
       start-stop-daemon --stop --pidfile $PID
       ;;
esac

Script ausführbar machen:

chmod +x /etc/init.d/lemur

automatisch beim Systemstart starten und beim Shutdown beenden:

update-rc.d lemur defaults