Version 1.2
Autor:Till Brehm
Folgen Sie howtoforge auf Twitter
Veröffentlicht 16.10.2014
In der folgenden Anleitung beschreibe ich die Schritte, um Ihren Server vor dem jüngsten Poodle-SSL-Angriff zu schützen. Ich werde für meine Beispiele einen perfekten ISPConfig 3-Server auf Debian 7 verwenden, aber die gleichen Schritte funktionieren auch auf jeder anderen Linux-Distribution. Ein standardmäßiger ISPConfig-Hosting-Server führt die folgenden Dienste aus:Webserver (Nginx oder Apache), Mailserver (Postfix und Dovecot / Courier), FTP-Server (pure-ftpd), die SSL/TLS-Verbindungen anbieten und potenzielle Ziele für einen Pudelangriff sind.
Ich gehe davon aus, dass Sie als Root-Benutzer auf Ihrem Server angemeldet sind. Wenn Sie unter Ubuntu arbeiten und nicht als Root angemeldet sind, stellen Sie allen Befehlen "sudo" voran oder führen Sie "sudo -" aus, um Root-Benutzer zu werden.
Apache-Webserver
Um einen Apache-Webserver abzusichern, muss die Zeile
SSLProtocol all -SSLv2 -SSLv3
muss in jedem SSL-vhost auf dem Server hinzugefügt werden. Wenn die SSLProtocol-Einstellung nicht explizit in einem vhost festgelegt ist, wird die globale Einstellung angewendet. Im Falle eines ISPConfig 3-Servers kann die SSLProtocol-Einstellung global eingestellt werden, da die vhosts diese Einstellung nicht überschreiben. Öffnen Sie auf einem Debian- oder Ubuntu-Server die Datei /etc/apache2/mods-available/ssl.conf in einem Editor
nano /etc/apache2/mods-available/ssl.conf
Scrollen Sie nach unten, bis Sie die Zeilen sehen:
# nur sichere Protokolle aktivieren:SSLv3 und TLSv1, aber nicht SSLv2
SSLProtocol all -SSLv2
und ändern Sie sie in:
# nur sichere Protokolle aktivieren:aber nicht SSLv2 und SSLv3
SSLProtocol all -SSLv2 -SSLv3
Dann Apache neu starten
service apache2 neu starten
Nginx-Webserver
Bei einem Nginx-Webserver ist die Zeile
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
muss in jedem SSL-Server-{ }-Dienst hinzugefügt werden. Wenn die SSLProtocol-Einstellung nicht explizit in einem server { }-Abschnitt festgelegt ist, wird die globale Einstellung des http { }-Abschnitts angewendet. Im Fall eines ISPConfig 3-Servers kann die SSLProtocol-Einstellung global im http { }-Abschnitt festgelegt werden, da die server { }-Abschnitte diese Einstellung nicht überschreiben. Öffnen Sie auf einem Debian- oder Ubuntu-Server die Datei /etc/nginx/nginx.conf in einem Editor
nano /etc/nginx/nginx.conf
und fügen Sie die Zeile hinzu:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
nach der Zeile:
http {
Starten Sie dann nginx neu:
service nginx neu starten
Postfix-Mailserver
Um Postfix zu zwingen, das SSLv2- und SSLv3-Protokoll nicht bereitzustellen, führen Sie diese Befehle aus:
postconf -e 'smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3'
postconf -e 'smtpd_tls_protocols=!SSLv2,!SSLv3'
postconf -e 'smtp_tls_protocols=!SSLv2,!SSLv3'
Dadurch werden die Zeilen hinzugefügt:
smtpd_tls_mandatory_protocols =!SSLv2,!SSLv3
smtpd_tls_protocols =!SSLv2,!SSLv3
smtp_tls_protocols =!SSLv2,!SSLv3
in der Datei /etc/postfix/main.cf. Führen Sie dann diesen Befehl aus, um die neue Konfiguration anzuwenden:
Service-Postfix-Neustart
Dovecot IMAP/POP3-Server
Dovecot unterstützt SSL-Protokolleinstellungen in Version 2.1 und höher. Der erste Schritt ist also, herauszufinden, welche Dovecot-Version Sie verwenden. Der Befehl lautet:
dovecot --version
Auf meinem Server habe ich folgendes Ergebnis erhalten:
[email protected]:~# dovecot --version
2.1.7
[email protected]:~#
was anzeigt, dass mein Server ssl_protocol-Einstellungen unterstützt.
Bearbeiten Sie die Dovecot-Konfigurationsdatei
nano /etc/dovecot/dovecot.conf
und fügen Sie die Zeile hinzu
ssl_protocols =!SSLv2 !SSLv3
direkt nach der ssl_key-Zeile, also sollte Ihre Datei so aussehen:
ssl_key =ssl_protocols =!SSLv2 !SSLv3
und schließlich dovecot neu starten, um die Änderungen zu übernehmen:
service dovecot neu starten
Courier-POP3-/IMAP-Server
Der imap- und pop3-Server von Courier bietet standardmäßig Verbindungen über das SSLv3-Protokoll an, also müssen wir es auch neu konfigurieren. Die Courier-Konfigurationsdateien befinden sich im Ordner /etc/courier/. Zuerst beginnen wir mit der Konfigurationsdatei des IMAP-Daemons:
nano /etc/courier/imapd-ssl
Fügen Sie die folgenden Zeilen hinzu oder ersetzen Sie sie:
IMAPDSTARTTLS=JA
IMAP_TLS_REQUIRED=1
TLS_PROTOCOL=TLS1
TLS_STARTTLS_PROTOCOL=TLS1
Bearbeiten Sie dann die Konfigurationsdatei des POP3-Daemons:
nano /etc/courier/pop3d-ssl
Fügen Sie die folgenden Zeilen hinzu oder ersetzen Sie sie:
POP3STARTTLS=JA
POP3_TLS_REQUIRED=1
TLS_PROTOCOL=TLS1
TLS_STARTTLS_PROTOCOL=TLS1
Starten Sie abschließend die Courier-Daemons neu:
service kurier-imap-ssl neustart
service kurier-pop-ssl neustart
FTP mit pure-ftpd
Das Sichern von pure-ftpd auf Debian und Ubuntu ist etwas komplizierter, da das Skript /usr/sbin/pure-ftpd-wrapper von Debian den Schalter -J nicht unterstützt, der von pure-ftpd verwendet wird, um die SSL-Protokolle festzulegen. Der erste Schritt besteht also darin, Unterstützung für die Option -J im Wrapper-Skript hinzuzufügen. Dies funktioniert nicht in Debian 6, da die pure-ftpd-Version in Debian 6 zu alt ist und keine Einstellung für SSL-Protokolle hat. Daher besteht die einzige Option für Benutzer von Debian 6 darin, auf Debian 7 zu aktualisieren. Öffnen Sie die Datei
nano /usr/sbin/pure-ftpd-wrapper
und scrollen Sie nach unten zur Zeile
'TLS' => ['-Y %d', \&parse_number_1],
und fügen Sie gleich danach diese neue Zeile hinzu:
'TLSCipherSuite' => ['-J %s', \&parse_string],
Schließlich erstellen wir eine Konfigurationsdatei, die die SSL-Protokolle enthält, die wir zulassen möchten:
echo 'HIGH:MEDIUM:+TLSv1:!SSLv2:!SSLv3'> /etc/pure-ftpd/conf/TLSCipherSuite
Um die Änderungen zu übernehmen, starten Sie pure-ftpd neu. Auf meinem Server verwende ich pure-ftpd mit mysql, also lautet der Name des Daemons pure-ftpd-mysql statt nur pure-ftpd.
service pure-ftpd-mysql neustarten
das Ergebnis sollte ungefähr so aussehen:
[email protected]:~# service pure-ftpd-mysql restart
Neustart des FTP-Servers:Ausführen:/usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql .conf -l pam -Y 1 -8 UTF-8 -H -J HIGH:MEDIUM:+TLSv1:!SSLv2:!SSLv3 -D -b -O clf:/var/log/pure-ftpd/transfer.log - E -u 1000 -A -B
[E-Mail-geschützt]:~#
die Option -J wurde also erfolgreich zur Startsequenz des Daemons hinzugefügt.
Links
- SSL-Pudelangriff
- ISPConfig