Artikel mit Tag apache

Anleitung - Poodle SSL 3.0 Lücke in Apache, Nginx oder Postfix deaktivieren

Seit ein paar Tagen ist der Pudel los. Zumindest bei einigen. Gemeint ist die neue, von Google entdeckte SSLv3 Lücke. Diese erlaubt bei bestimmter Konstellationen einen Angriff auf die verwendeten Systeme. Um so einen Angriff zu verhindern haben Browserhersteller bereits vorgebeugt und wollen SSLv3  aus dem eigenen Browser verbannen (siehe Mozilla).

Ich möchte euch kurz zeigen, wie die Deaktivierung von SSLv3 unter Apache und Nginx funktioniert. Zunächst sollte aber getestet werden, ob der Server SSLv3 überhaupt freigeschaltet hat.

Apache oder Nginx auf SSLv3 Lücke testen

Es genügt ein einfacher Konsolenbefehl, um abzuprüfen, wie es mit dem Server steht

openssl s_client -connect REMOTE_SERVER:443 -ssl3

Sollte die Verbindung via SSLv3 aktiviert sein, erhaltet ihr bei einen erfolgreichen Handshake ein paar Werte zurück. Hier bei einem Apache Server

SSL handshake has read 1260 bytes and written 322 bytes

New, .../SSLv3, Cipher is DHE-RSA-AES256-SHA

Ist SSLv3 bereits deaktiviert, werden Fehlermeldungen ausgegeben

CONNECTED(00000003)

139957739407008:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1260:SSL alert number 40

139957739407008:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596:

no peer certificate available

No client certificate CA names sent

SSL handshake has read 7 bytes and written 0 bytes

New (NONE), Cipher is (NONE)

Secure Renegotiation IS NOT supported

apache

Apache Server - SSLv3 abschalten

Im Prinzip hatte ich es schon einmal beim Thema Hardening Apache Server erwähnt, wie bestimmte Protokolle festgelegt werden können. Es genügt folgende Zeile in der "default-ssl.conf" bzw. "ssl.conf" zu hinterlegen, um SSLv3 zu unterdrücken.

sudo nano /etc/apache2/mods-available/ssl.conf

SSLProtocol All -SSLv2 -SSLv3

Alternativ können auch einfach alle Protokolle außer TLS deaktiviert werden. Dazu werden mit Minus alle blockiert und mit Plus die gewünschten Protokolle hinzugefügt.

SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2

Alternativ dazu können mit dem Befehl "SSLCipherSuite" die gewünschten Chiffren angegeben, bzw. eine Priorisierung festlegt werden. Ich hatte dies im besagten Hardening Artikel bereits beschrieben. Weiter Details findet ihr hier.

Danach wie nach jeder Änderung der Konfiguration

sudo service apache2 restart 

nginx

Nginx Server - SSLv3 deaktvieren

Für den inzwischen auf Platz 1. gelisteten Webserver (der 10 000 größten Webseiten) gilt ein ähnliches Vorgehen, wie beim Kollegen Apache. Auch hier hatte ich bereits einen Artikel verfasst.

In der Config muss lediglich SSL 3.0 entfernt werden.

sudo nano /etc/nginx/nginx.conf

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

sudo service nginx restart 

Gleiches gilt für die hinterlegten Ciphersuites. Hier kann beim Apache Webserver nachgeschaut werden. 

SSLv3 lässt sich nicht deaktivieren, was tun?

Auf manchen Servern ist es nicht möglich SSLv3 zu deaktivieren, welche Gründe es auch immer haben mag. Hier bleibt die Möglichkeit auf OpenSSL 1.0.1j, 1.0.0o bzw. 0.9.8zc zu aktualisieren. Denn in den aktuellen Versionen ist TLS_FALLBACK_SCSV aktiv, was Schutz vor Poodle bietet. Ob OpenSSL nach einem Update akutell ist , lässt sich dies mit SSL LABS prüfen.

Sollte auch ein Update auf neuere Versionen nicht möglich sein, ist es möglich schädliche ChipherSuites zu verbieten.

Folgende Cipher Suites sollen NICHT enthalten sein, wenn ein Poodle Angriff verhindert werden soll.

IDEA-CBC-SHA, EXP-DES-CBC-SHA, DES-CBC-SHA, DES-CBC3-SHA, EXP-DH-DSS-DES-CBC-SHA, DH-DSS-DES-CBC-SHA, DH-DSS-DES-CBC3-SHA, EXP-DH-RSA-DES-CBC-SHA, DH-RSA-DES-CBC-SHA, DH-RSA-DES-CBC3-SHA, EXP-DHE-DSS-DES-CBC-SHA, DHE-DSS-CBC-SHA, DHE-DSS-DES-CBC3-SHA, EXP-DHE-RSA-DES-CBC-SHA, DHE-RSA-DES-CBC-SHA, DHE-RSA-DES-CBC3-SHA, EXP-ADH-DES-CBC-SHA, ADH-DES-CBC-SHA, ADH-DES-CBC3-SHA, EXP-RC2-CBC-MD5, IDEA-CBC-SHA, EXP-DES-CBC-SHA, DES-CBC-SHA, DES-CBC3-SHA, EXP-DHE-DSS-DES-CBC-SHA, DHE-DSS-CBC-SHA, DHE-DSS-DES-CBC3-SHA, EXP-DHE-RSA-DES-CBC-SHA, DHE-RSA-DES-CBC-SHA, DHE-RSA-DES-CBC3-SHA, ADH-DES-CBC-SHA, ADH-DES-CBC3-SHA, AES128-SHA, AES256-SHA, DH-DSS-AES128-SHA, DH-DSS-AES256-SHA, DH-RSA-AES128-SHA, DH-RSA-AES256-SHA, DHE-DSS-AES128-SHA, DHE-DSS-AES256-SHA, DHE-RSA-AES128-SHA, DHE-RSA-AES256-SHA, ADH-AES128-SHA, ADH-AES256-SHA

postfix

Postfix - SSL 3.0 ausschalten

Auch auf dem bekannten Mailserver Postfix lässt sich SSL 3.0 unterbinden, hier genügt ein einfach Eingriff  "/etc/postfix/main.cf"

sudo nano /etc/postfix/main.cf 

smtpd_tls_security_level = encrypt

smtpd_tls_mandatory_ciphers = high

smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3

smtpd_tls_protocols = !SSLv2 !SSLv3


smtp_tls_protocols = !SSLv2, !SSLv3

smtp_tls_security_level = encrypt

smtp_tls_mandatory_ciphers = high

smtp_tls_mandatory_protocols = !SSLv2 !SSLv3

sudo service postfix restart


Letzendlich gilt es, die eigenen Server immer im Auge zu haben und auf aktuelle Sicherheitslücken zu scannen.

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 Anleitung - Wordpress Installation in 5 Minuten

In der letzten Woche habe ich auf die Schnelle eine Wordpress Installation benötigt.

Bei vielen Providern wird dies zwar bereits als "One Click Installation" angeboten, aber auch auf einem lokal installiertem Ubuntu System ist diese Anforderung in wenigen Minuten und mit wenigen Befehlen erledigt. 

Bevor es los geht, kurz noch etwas vorweg: Ubuntu liefert in den eigenen Repositories zwar eine Wordpress Installation aus. Ich empfehle aber diese Option zu ignorieren und immer die neueste Version zu installieren.

Aktuelle Wordpress Version unter Ubuntu, Mint oder Elementary OS installieren

Benötigte Pakete installieren

sudo apt-get install apache2

sudo apt-get install libapache2-mod-php5

sudo apt-get install mysql-server

Passwort vergeben und merken 

sudo apt-get install php5-mysql

Neuestes Wordpress herunterladen und installieren

cd /

sudo mkdir blog

cd blog/

sudo wget http://wordpress.org/latest.tar.gz

sudo tar -xvf latest.tar.gz

sudo cp wordpress/wp-config-sample.php wordpress/wp-config.php

Datenbank anlegen und einrichten

mysql> create database blog;

Query OK, 1 row affected (0.00 sec)

mysql> create user wp_admin@localhost;

Query OK, 0 rows affected (0.00 sec)

mysql> set password for wp_admin@localhost=PASSWORD("meinPasswort");

Query OK, 0 rows affected (0.00 sec)


mysql> grant all privileges on 'blog.*' to wp_admin@localhost identified by 'meinPasswort';

Query OK, 0 rows affected (0.00 sec)

quit

Rechte für Apache vergeben und den richtigen Seitenpfad einrichten

sudo usermod -a -G www-data root

sudo chown -R www-data:www-data wordpress/

sudo nano /etc/apache2/sites-enabled/000-default

DocumentRoot /blog/wordpress

<Directory /blog/wordpress/>

                Options Indexes FollowSymLinks MultiViews

                AllowOverride None

                Order allow,deny

                allow from all

 </Directory>

Wordpress Datenbank Einstellungen konfigurieren

sudo nano /blog/wordpress/wp-config.php

// ** MySQL settings - You can get this info from your web host ** //

/** The name of the database for WordPress **/

define('DB_NAME', 'blog');

/** MySQL database username **/

define('DB_USER', 'wp_admin');

/** MySQL database password **/

define('DB_PASSWORD', 'meinPasswort');

Dienste neu starten und Seite aufrufen

sudo service apache2 restart

sudo service mysql restart 

Fertige Installation unter http://localhost aufrufen. Thats it.

WordPress-Installation

Debian 6.0 - Squeeze ist fertig

Es hatte sich schon eine Weile angekündigt, jedoch galt es noch einige Bugs zu beheben, nun ist Debian 6 Codename "Squeeze" nach 22 Monaten Entwicklung endlich fertiggestellt.
Die freie Linuxdistribution bringt laut Entwicklern den ersten "freien Kernel" mit sich, der keine proprietäre Firmware mehr enthalten soll. Die zahlreichen Änderungen würden hier den Rahmen sprengen, können jedoch alle im ausführlichen Changelog nachgeschlagen werden. Laut Homepage sind über 10.000 neue Pakete in der Version 6 enthalten.

Debian 6

Zahlreiche Software Pakete die Debian mit bringt wurde natürlich auch aktualisiert, darunter sind Dienste wie Apache, MySQL, Samba, PHP oder Tomcat. Ebenso wurden zahlreiche Desktop Dienste auf den neusten Stand gebracht.