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.

Sonntagsvideo - Ein Streifzug durch die Fehler in der Kryptografie (30c3)

Heute Abend läuft kein Tatort im TV (gut schaue ich eh so gut wie nie) somit ist ein Anlass für eine etwas andere Sonntag Abend Unterhaltung gegeben. Wie wäre es mit einer Runde Kryptografie.

Der etwas eine Stunde dauernde Beitrag "Zwischen supersicherer Verschlüsselung und Klartext liegt nur ein falsches Bit" rund um Verschlüsselungstechniken hat zwar schon ein paar Monate auf dem Buckel (30c3), ist dennoch aktuell bzw. aktueller denn je, gerade in Jahr 2014 als Heartbleed, Shellshock und Poodle durchs Dorf getrieben wurden.

Vim Adventures, VimGolf oder Vim Interaktiv - Spielend den Umgang mit dem Linux Editor Vim lernen

Regelmäßige Nutzer von Linux Systemen werden Vi bzw. die Weiterentwicklung Vim (Vi IMproved) kennen. Anders als normale Texteditoren wie pico oder nano, bietet Vim verschiedene Betriebsmodi und ist damit beliebig erweiterbar.

Viele Gelegenheitsnutzer schrecken vor der Benutzung des Editors zurück, da die Bedienung für Einsteiger auf den ersten Blick wenig intuitiv erscheint. Dies beginnt meist schon bei der Navigation durchs geöffnete Dokument. 

VIM Adventures

Ich selbst bin kein Vim Crack und freue mich damit um so mehr, auf Vim Adventures gestoßenzu sein  (ich weiß, gibt es wohl schon eine Weile...) . Die Seite hat den Umgang mit dem Editor schlicht und einfach in ein Zelda artiges Spiel verpackt.

VIM-Adventures

Angefangen mit der bereits erwähnten Navigation, werden neue Befehle erlernt und der Umgang mit Vim vermittelt. Leider ist das Spiel nicht ganz umsonst, nach einem kurzen Einstieg mit Level 1, wird für die restlichen 12 Level $25 verlangt. Das Konzept ist wirklich super, aber der Preis weniger erfreulich.

VimGolf 

Für eine komplett kostenlose Herausforderung kann auf VimGolf zurück gegriffen werden. Hier geht es darum so einfach wie möglich einen vorgegebenen Text zu manipulieren. Nach gelöster Aufgabe werden verschiedene Lösungswege aufgezeigt. Quasi learning by doing, jedoch wird hier der Umgang mit Vim bereits vorrausgesetzt.

OpenVim Interaktiv

Eine bessere Möglichkeit sich mit dem Vim-Editor vertraut zu machen, bietet OpenVim mit einem interaktivem Tutorial an. Die Schritt für Schritt Anleitung benötigt lediglich einen Browser, hier wird Vim komplett simuliert. Perfekt.

Vim-tutorial

Notepad++ auf Ubuntu nutzen, kein Problem mit Notepadqq

Mein Lieblingseditor auf Windows Rechnern ist mit Abstand Notepad++. Es wäre natürlich schön, das gute Stück auch auf Linux Maschinen wie Ubuntu, ElementaryOS oder Mint verwenden zu können. Mit Wine ließe sich das bestimmt ermöglichen, die Installation von Notepadqq stellt jedoch die einfachere Alternative dar. 

Es handelt sich zwar nur um einen Klon des Originals, aber dieser reicht in meinen Augen völlig aus. Die Installation unter Ubuntu 14.04 ist Dank eines eigenes PPAs recht einfach.

Notepadqq unter Ubuntu 14.04 installieren

sudo add-apt-repository ppa:notepadqq-team/notepadqq

sudo apt-get update

sudo apt-get install notepadqq

notepadqq

Sollte euch der Editor nicht zusagen, könnt ihr ihn mit wenigen Befehlen wieder deinstallieren. via

sudo apt-get remove notepadqq

sudo add-apt-repository --remove ppa:notepadqq-team/notepadqq

 

Linux - SSH Login ohne Passwort mit SSH Schlüssel einrichten

Für die Wartung von Servern oder anderen sicheren Netzwerkverbindungen wird meistens SSH (Secure SHELL) verwendet.

Normalerweise erfolgt die Authentifizierung so einer Verbindung via Passwort. Viel sicherer ist eine Authentifizierung mit einem SSH Schlüssel. Für die Einrichtung einer sicheren Verbindung mit SSH Schlüssel sind nur wenige Handgriffe nötig.

Hier eine kurze Anleitung für das Umstellen von Passwort auf SSH Schlüssel Authentifizierung.

Vorraussetzung ist, dass das SSH Server Paket bereits installiert ist.

Schlüssel erzeugen

ssh-keygen -t rsa -b 4096

Generating public/private rsa key pair.

Enter file in which to save the key (/home/guenny/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/guenny/.ssh/id_rsa.

Your public key has been saved in /home/guenny/.ssh/id_rsa.pub.

The key fingerprint is:

a5:e2:b2:38:ff:a7:f5:de:03:dd:ss:6e:dd:c8:7d:11

The key's randomart image is:

+--[ RSA 4096]----+

|                 |

|                 |

|          .      |

|         oE      |

|     .  S ..     |

|    + o. ..      |

|. o. =.o.+ .     |

| = ..o+o+ o .    |

|. .o+oo.   .     |

+-----------------+

Schlüssel kopieren

sudo cat home/guenny/.ssh/id_rsa.pub >> /guenny/.ssh/authorized_keys

SSH Konfiguration sichern

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig

SSH Konfiguration für Public Key Auth anpassen

sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config

sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_config

sudo echo "DebianBanner no" >> /etc/ssh/sshd_config

Die Werte RSAAuthentication und PubkeyAuthentication sollten in den Standardeinstellungen bereits auf yes stehen

Konfiguration neu laden

sudo service ssh reload

Sobald die Konfiguration neu geladen wurde, ist es zwingend notwendig mit einer zweiten Verbindung zu testen, ob alles richtig konfiguriert wurde. Die bestehende Verbindung sollte dazu offen bleiben. 

Schlüssel auf andere Server kopieren 

Um Schlüssel auf andere Server zu kopieren kann der Befehl ssh-copy-id verwendet werden.

ssh-copy-id -i ~/.ssh/id_rsa.pub REMOTE_SERVER