Artikel mit Tag server

npmgraph - NPM Abhängigkeiten visualisieren

npmgraph.an - ein kleines, aber praktisches Tool, um npm (Node Packaged Modules) Abhängigkeiten anzuzeigen. Npm ist der Paket Manager von Node.js (siehe Artikel über Node.js).

Wie bei anderen Paket Managern (siehe Artikel über Abhängigkeiten apt-get) existieren auch bei npm viele Abhängigkeiten unter den einzelnen Paketen.

npmgraph.an bietet eine Möglichkeit diese grafisch darzustellen. Diese erfolgt mit Hilfe von Knoten und Kanten.

Erinnert mich etwas an Collusion bzw. Lightbeam, falls das noch jemand etwas sagt. Im Unterschied zu den Firefox Add-ons, ist beim "npm Abhängigkeits Visualisierer" eine 3D Ansicht möglich, nette Sache.

npmgraph

NPMGraph

9 praktische Keytool Befehle - Zertifikatsmanagement unter Java

Das leidige Thema Zertifikate hatte ich auf dem Blog nun schon öfters, vielleicht erinnert ihr euch ja noch an das selbstsignierte Tomcat Zertifikat.

Damals wurde anders als bei der klassischen Variante mit Apache/OpenSSL auf Keytool zurückgegriffen. Sozusagen das Pendant unter Java.

Heut möchte ich euch ein paar weitere praktische Befehle dazu zeigen. Zunächst muss das Keytool aber gefunden werden.

Unter Windows befindet es sich meist im Bin-Ordner der Java Installation, beispielsweise "C:\Program Files\Java\jre7\bin"

Unter Linux genügt ein einfaches "whereis keytool", um den gewünschten Pfad, beispielsweise "/usr/bin/keytool" zu finden.

9 praktische Keytool Befehle

Einen Keystore und ein Schlüsselpaar erzeugen

keytool -genkey -alias domain -keyalg RSA -keystore keystore -keysize 2048

Eine Zertifikatsanfrage erstellen

keytool -certreq -alias domain -keystore keystore -file anfrage.csr

Ein signiertes Zertifikat in den Keystore importieren

keytool -import -trustcacerts -alias domain -file domain.crt -keystore keystorefile

Ein vorhandenes Zertifikat exportieren

keytool -export -alias meincert -file meinexportiertescert.crt -keystore keystorefile

Ein selbstsigniertes Zertifikat erstellen

keytool -genkey -keyalg RSA -alias selfsigned -validity 3600 -keysize 2048

Ein Vorhandenes Zertifikat auslesen 

keytool -printcert -v -file meincert.crt

Welche Zertifikate befinden sich im Keystore?

keytool -list -v -keystore keystore

Liste die vertraulichen CAs auf

keytool -list -keystore /opt/data/cacerts

Lösche ein Zertifikat aus dem Keystore

keytool -delete -alias domain -keystore keystore

 

 

Hardening Apache Server - In 5min einen Webserver sicherer machen

Letzte Woche hatte ich euch kurz erklärt wie sich ein Apache in Verbindung mit einem Tomcat installieren lässt. Um auf der sicheren Seite zu sein, wurde der Apache gleich mit SSL "SSLEngine on" und einem selbstsignierten Zertifikat konfiguriert. 

In den folgenden Schritten möchte ich zeigen, wie ein Webserver (Apache) weiter abgesichert werden kann. Dazu müssen lediglich weitere Parameter in der Apache Konfiguration "/etc/apache2/sites-available/default-ssl.conf" gesetzt werden.

apache

Theoretisch könnt ihr die folgenden Zeilen direkt in eure Konfigdatei kopieren:

Apache Server härten

Wie bereits oben beschrieben werden alle Einstellungen in der default-ssl.conf gesetzt, innerhalb des ""VirtualHost" Bereichs:

Unsichere SSL Versionen blockieren

SSLProtocol All -SSLv2 -SSLv3

SSL Kompression deaktivieren um beispielsweise der "Crime" Attacke vorzubeugen 

SSLCompression off

Der Server soll vorgeben welche Verschlüsselung verwendet werden darf, normalerweise sucht sich der Client selbst etwas aus. 

SSLHonorCipherOrder On

Sichere Cipher Suites direkt vorgeben und ungewollte blockieren 

SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4

Damit ist der Grundstock für einen sicheren Apache gelegt.

HTTP Strict Transport Security aktivieren

Ein weiterer Sicherheitsaspekt wäre beispielsweise HTTP Strict Transport Security.

Nach Aktivierung dieser Option ist es nicht mehr möglich Session Cookies abzugreifen, indem man den Anwender auf eine unsichere HTTP Webseite leitet. Dem Apache wird sozusagen mitgeteilt, über einen bestimmten Zeitraum (max-age - Angaben in Sekunden) nur noch HTTPS Verbindungen zuzulassen.

Um diese Funktion nutzen zu können, muss zunächst ein Apache Modul installiert werden

a2enmod headers

Danach kann wiederum in die default-ssl.conf folgendes eingetragen werden. Im Beispiel wir dem Server mitgeteilt, dass er die nächste 10 Jahre nur HTTPS Verbindungen zulassen soll. Mögliche Subdomains werden mit einbezogen.

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"

OCSP (Online Certificate Status Protocol) aktivieren

Eine weitere Möglichkeit den eigenen Webserver gegen Angriffe zu schützen ist OCSP. Hierbei wird während des Aufbaus einer SSL/TLS Verbindung das Zertifikat auf Echtheit überprüft.

Hierzu ist natürlich ein offizielles Zertifikat eines CA notwendig. Diese Sicherheits-Funktion bietet ihre Vor- und Nachteile, warum ich sie nur bedingt empfehle.

Bei einem selbstsignierten Zertifikat, macht diese Sicherheitsfunktion sowieso wenig Sinn. Dennoch hier der Befehl, wie diese eingebunden wird (benötigt Apache 2.4):

SSLUseStapling on

SSLStaplingCache "shmcb:logs/stapling-cache(150000)"

Abschlusstest

Egal welche Funktion ihr in eine Konfiguration einbaut. Sie sollte vor Inbetriebnahme immer getestet werden

apache2ctl -t

sudo service apache2 restart 

Anleitung - Ubuntu 14.04 LTS Server - Tomcat 7 mit Apache Server in 15 Minuten installieren und konfigurieren

Damit mal wieder etwas Leben in die Bude kommt hier eine kurze Anleitung, wie man innerhalb von 10-15 Minuten einen Tomcat Server in Verbindung mit Apache auf einem Ubuntu Server System (14.04) installiert und konfiguriert.

Zunächst müssen die benötigten Pakete installiert werden. Neben Apache 2 und Tomcat 7 wird zusätzlich Java benötigt.

Für den richtigen Betrieb ist ebenfalls mod-jk von Nöten, diese Modul leitet Anfragen an den Apache mit Hilfe des Protokolls AJP an Tomcat weiter.

Installation

sudo apt-get update

sudo apt-get install apache2

sudo apt-get install tomcat7

sudo apt-get install openjdk-7-jre-headless

sudo apt-get install libapache2-mod-jk

Nachdem alle Pakete installiert sind, müssen einige Dateien konfiguriert werden:

Tomcat Konfiguration

Das Arbeitsverzeichnis und den Worker Prozess für Tomcat festlegen:

nano /etc/apache2/workers.properties

workers.tomcat_home=/var/lib/tomcat7
workers.java_home=/usr/lib/jvm/java-7-openjdk-amd64
ps=/
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

Dem Mod-JK Modul mitteilen wo diese Datei zu finden ist und Wo Fehler und Co gelogt werden sollen:

nano /etc/apache2/mods-enabled/jk.conf

JkWorkersFile /etc/apache2/workers.properties

JkLogFile /var/log/apache2/mod_jk.log

Dem Tomcat Server mitteilen, dass der AJP Prozess verwendet werden soll, dazu muss folgender String aktiviert werden:

nano /etc/tomcat7/server.xml

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Apache Server konfigurieren

Zunächst erfolgt die Konfiguration für die zukünftige Seite an sich. Natürlich mit SSL. Hierzu werden bereits Schlüsselpfade hinterlegt, welche im nächsten Schritt noch erstellt werden müssen. Wichtig ist das Einbinden von JKMount, damit Tomcat und Apache zusammen arbeiten. FYI: Es wird der Bereich innerhalb von "VirtualHost _default_:443" angepasst.

sudo nano /etc/apache2/sites-available/default-ssl.conf

ServerAdmin
webmaster@localhost
ServerName tomcatsrv:443
DocumentRoot /var/lib/tomcat7/webapps/ROOT/
SSLEngine on
SSLCertificateFile /etc/apache2/crypt/tomcatsrv.crt
SSLCertificateKeyFile /etc/apache2/crypt/tomcatsrv.key
JKMount /ROOT* worker1

Verschlüsselung aktivieren

Damit der Server gleich eine sichere Verbindung verwendet, wird http erst gar nicht konfiguriert, sondern gleich https aktiviert. 

sudo a2enmod ssl

sudo mkdir /etc/apache2/crypt

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/crypt/tomcatsrv.key -out /etc/apache2/crypt/tomcatsrv.crt

Den richtigen CN in unserem Fall "tomcatsrv" vergeben.

Am Ende sollten alle Dienste neu gestartet werden

Neustart der Dienste

sudo service apache2 restart

sudo service tomcat7 restart

Sollte es zu Fehlern bei der Konfiguration gekommen sein, werdet ihr das beim Neustarten der Dienste bemerken. Alternativ kann ein Blick ins Log nie schaden.

Sollte unverhofft alles glatt gehen, müsstet ihr unter https://tomcatserv:443 die Tomcat Startseite finden ("ROOT"). Viel Erfolg. 

Linux Befehl - Update auf Ubuntu 14.04 LTS

Wie überall zu lesen ist, wurde Ubuntu 14.04 LTS veröffentlicht. Das heißt 5 Jahre Update Garantie für das System. Besonders im Serverbereich ist das relevant. Dennoch müssen sich Besitzer eines Serversystem noch etwas gedulden, bist die Version 14.04.1 veröffentlicht wird.

Für die Nutzer eines Desktop Systems kann bereits jetzt mit einem einfachen Befehl von Ubuntu 12.04 LTS, 13.04 oder 13.10 auf 14.04 LTS aktualisiert werden.  

Desktop Update auf Ubuntu 14.04 LTS

update-manager -d

Server Update auf Ubuntu 14.04 LTS

sudo apt-get install update-manager-core

sudo do-release-upgrade -d

Die Neuerungen des Desktop Systems erfahrt ihr in diesem kurzem Video.