Skip to content

Ubuntu - IPv6 auf einem Apache, MySQL Server ausschalten

Kurztipp zum Wochenende, zum Thema Ipv6 und Apache/MySQL. 

ipv6_apache2

IPv6 auf einem Apache Server ausschalten

Um IPv6 auf einem Apache2 Server abzuschalten genügt ein einfacher Eintrag in der ports.conf. 

Hier muss das vorhandene Listen 80 angepasst werden.

nano /etc/apache2/ports.conf

Listen 0.0.0.0:80

sudo service apache2 restart

Ipv6 bei einem MySQL Server deaktivieren

Beim MySQL Server verhält es sich ähnlich, wie beim Apache. Es genügt in der Hauptkonfiguration die Listenadresse zu setzen.

nano /etc/mysql/my.con

bind-address            = 0.0.0.0

sudo service mysql restart

apache

Das könnte dich auch interessieren

Ubuntu - IPv6 auf einem Tomcat Server ausschalten

 

Mozilla SSL Server Konfigurator - Die richtigen TLS/SSL Einstellungen für Apache, Nginx oder HAProxy automatisch generieren

Die letzten Wochen ging es teilweise um die Analyse von SSL Verbindungen, heute soll es mal wieder um die dazugehörigen Einstellungen gehen.
Ich hatte in der Vergangenheit zwar schon Artikel zu SSL Einstellungen für Nginx, Apache oder Postfix geschrieben. Dennoch will ich mal auf den Mozilla SSL Konfiguration Generator hinweisen.
Das Webtool bietet zusammen mit dem ausführlichen Wiki Artikel über Server Side TLS Security  genau die richtige Kombination, um Webserver mit SSL zu konfigurieren.

mozilla-wiki
SSL Einstellungen per Klick erzeugen

Der webbasierte Mozilla SSL Konfigurator unterstützt neben den am weitesten verbreiteten Servern Apache und Nginx auch HA Proxy. 
Ich persönlich vermisse eine Option für Postfix, da es sich dabei aber um keinen reinen Webserver handelt, ist das auch nachvollziehbar.

Das Tool stellt neben verschiedenen Server und SSL Varianten drei Auswahlmöglichkeiten in puncto Sicherheit zur Verfügung (modern, intermediate und old).
Praktischerweise wird bei jedem Modus auch die Unterstützung für Browser oder Systeme eingeblendet. So weiß jeder Anwender direkt, ob die enthaltenen CypherSuites für das eigene Projekt nützlich sind oder nicht.
Welche SSLCipherSuites genau in der jeweiligen Einstellung verwendet werden, lässt sich in dem oben erwähnten Mozilla Wiki Artikel nachlesen.

ssl-config-generator

Leider müssen einzelne Server Versionen von Hand eingegeben werden, der Konfigurator erkennt diese aber ohne Probleme. 
Wie Stichproben gezeigt haben, nimmt das Tool OCSP Stapling automatisch aus der Config, wenn ein Wechsel von Apache 2.4 zu 2.2 erfolgt. (Diese Funktion wird erst seit 2.3 unterstützt).

Wie der Name des Tools vermuten lässt, wird nur eineKonfiguration generiert, diese muss in die geweilige ".conf" Datei auf einem Server kopiert werden.

Fazit

Nicht nur Administratoren finden mit dem Tool eine praktische Hilfe, wenn es um die Konfiguration von TLS auf einem Server geht. 
Auch der Heimanwender, kann sich mit Hilfe des dazugehörigen Wiki Artikel das nötige Wissen zu TLS/SSL aneignen und mit dem SSL Konfigurator schnell und einfach umsetzen. 

Tomcat 7/8 absichern - SSLv2 und SSLv3 deaktivieren - PFS aktivieren

In den damaligen Artikel über Poodle und SSLv3 Abschaltung bzw. Servehärtung ist der Tomcat total untergegangen. Das will ich mal schnell nachholen.

tomcat

Tomcat 7/8 härten - unsicheres SSL abschalten

Im Prinzip muss nicht viel gemacht werden, es sollten lediglich die richtigen Parameter in der server.xml hinterlegt werden. Zusätzlich darf natürlich gerne eine aktuelle und sichere Java Version verwendet werden.

Wichtig 

  • Aktuelle Java Version einsetzen
  • Aktuelle Tomcat Version einsetzen
  • Aktuelle DB Connectoren einsetzen

HTTPS Servereinstellungen

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" maxThreads="150" maxHttpHeaderSize="8192" minSpareThreads="25" scheme="https" secure="true" keystoreFile="\PfadzumKeystore\keystore" keystorePass="Password" clientAuth="false" sslProtocol="TLSv1.2" sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1"

ciphers="

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
 TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,
 TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,
 TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,
 TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,
 TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,
 TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA"
 
/>

Die Erklärung für die einzelnen Attribute dieser Konfiguration könnt ihr hier finden.

Wer sich nun fragt, wo hier Perfect Forward Secrecy konfiguriert ist, der findet diese in allen Cipher Suites mit "ECDHE_ECDSA und ECDHE_RSA" wieder. Da diese präferiert werden ist ein Diffie-Hellman Schlüsselaustauschverfahren gewährleistet. ECDH_ECDSA und ECDH_RSA unterstützen übrigens kein PFS.

Weiterführende Links

LAMP Server mit SSL - Linux, Apache, MySQL, PHP unter Ubuntu 14.04 in 10min installieren

Im Prinzip hatte ich bereits ein fast komplette Anleitung für einen LAMP Server unter Ubuntu verfasst. Zu finden ist sie im Artikel "Wordpress Installation in 5 Minuten".

Dennoch möchte ich heute eine etwas ausführlichere Anleitung niederschreiben, die als Grundlage für weitere Installationen dienen kann.

1. Apache Server installieren

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install apache2

Der Server startet direkt nach der Installation und ist unter http://localhost zu erreichen.

lamp-apache2-server

Weitere Konfigurationen wie bzw. das Härten sind in anderen Anleitungen zu finden. Siehe beispielsweise den Artikel "Hardening Apache".

Hier geht es nun mit dem MySQL Server weiter.

2. MySQL Server installieren

sudo apt-get install mysql-server

Das verlangte root Passwort vergeben und zwingend merken.

sudo apt-get install libapache2-mod-auth-mysql php5-mysql

lamp-mysql-server

Um die Installation abzurunden und eine erste Härtung vorzunehmen, sollte folgendes Skript ausgeführt werden.

sudo /usr/bin/mysql_secure_installation

Remove anonymous users? [Y/n] y ... Success!

Disallow root login remotely? [Y/n] y ... Success!

Remove test database and access to it? [Y/n] y

- Dropping test database...

- Removing privileges on test database... ... Success!

Reload privilege tables now? [Y/n] y ... Success!

Falls keine Testdatenbank existiert, kann diese auch nicht gelöscht werden, es erscheint die Meldung "Failed Database doesn't exists".

Der MySQL Server ist nun fertig eingerichtet.

Mit dem Befehl "mysql -u root -p" könnt ihr euch auf die SQL Konsole einloggen, um Datenbanken anzulegen.

Sollte eine andere IP als 127.0.0.1 verwendet werden, so muss "sudo nano /etc/mysql/my.cnf" editiert werden:

bind-address = 127.0.0.1

3. PHP5 installieren

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

Neben dem bereits weiter oben installierten php5-mysql Paket gibt es weitere Pakete, die installiert werden können, je nach Anforderung.

Eine Liste der bereits installierten Module kann mit Hilfe einer "info.php" abgerufen werden. Hierzu ist noch etwas Konfigurationsaufwand nötig:

sudo nano /var/www/html/info.php

lamp-php-info

Danach kann unter http://localhost/info.php eine Übersicht der Installation abgerufen werden.

Weitere Module lassen sich mit "apt-cache search php5" auflisten und mit "sudo apt-get install modulname" nachinstallieren.

lamp-php5

Abschluss

Die Installation des LAMP Servers ist nun abgeschlossen. Jedoch ist es sinnvoll den Server weiter zu härten.

Es empfiehlt sich ein Umstellung auf HTTPS, sowie das Abschalten unsicherer Protokolle wie SSL 3.0.

Die Umstellung auf HTTPS werde ich noch einmal kurz erläutern.

4. LAMP Server auf HTTPS umstellen

Zunächst muss das SSL Modul installiert werden.

sudo a2enmod ssl

sudo service apache2 restart

Danach sollte ein Zertifikat erzeugt werden. Um die etwas kryptische Zeile zu verstehen, gebe ich eine eine kurze Erklärung zu dem Befehl.

  • Es wird ein selbstsigniertes Zertifikat erzeugt, dieses ist 1 Jahr gültig ("-days 365") und hat einen 4096bit RSA Schlüssel ("-newkey rsa:4096").
  • Die Option "-x509" sorgt für ein selbstsigniertes Zertifikat und keine Anfrage für einen CA (csr).
  • Indem der Wert "-nodes" verwendet wird, fällt die Abfrage nach einer Passphrase für den Schlüssel weg.

sudo mkdir /etc/apache2/crypt

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

Bitte darauf achten den richtigen CN zu vergeben.

Nachdem das Zertifikat erstellt wurde, muss dem Apache Server beigebracht werden, auf HTTPS zu lauschen.

Hierzu müssen ein paar Werte angepasst werden.

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

SSLCertificateFile /etc/apache2/crypt/srv.crt

SSLCertificateKeyFile /etc/apache2/crypt/srv.key

Folgende Werte sollten zusätzlich eingefügt werde, um unsichere Protokolle zu deaktivieren:

SSLProtocol All -SSLv2 -SSLv3

SSLCompression off

Die neue Konfiguration muss abschließend aktiviert werden

sudo a2ensite default-ssl.conf

sudo service apache2 restart

Zur Erklärung: Durch den Befehl “a2ensite” wird ein symbolischer Link im sites-enabled Verzeichnis auf die .conf Datei des virtuellen Hosts im sites-available Verzeichnis gesetzt.

lamp-apache2-server-https

5. Ende

Nun ist der LAMP Server unter einer HTTPS Adresse zu erreichen. Für eine produktive Nutzung müssen natürlich noch weitere Schritte unternommen werden, auf die ich hier nicht weiter eingehe.

Die Grundinstallation ist jedoch geschafft und der Server kann zu Testzwecken verwendet werden.

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.