Logjam-Schutz für Debian/Ubuntu-Server
Ziel und kurze Definition
Logjam ist ein Angriff auf den Diffie‑Hellman‑Schlüsselaustausch, der TLS/HTTPS, SMTPS, SSH und andere Protokolle betrifft. Diffie‑Hellman erlaubt zwei Parteien, über einen unsicheren Kanal einen gemeinsamen Schlüssel zu berechnen. Ein ausreichend großes, eindeutiges dhparams (z. B. 2048 Bit) reduziert das Risiko, dass Angreifer vorkompilierte Logik (Precomputation) nutzen.
Wichtig: Die hier beschriebenen Befehle müssen als root auf der Shell ausgeführt werden. Pfade und Dateinamen wurden unverändert übernommen.
Einen eindeutigen DH‑Parameter erzeugen
Der erste Schritt ist das Erzeugen eines einmaligen DH‑Parameters mit OpenSSL. Wir legen die Datei unter /etc/ssl/private/ ab. Falls das Verzeichnis nicht existiert, erstellen Sie es:
mkdir -p /etc/ssl/private
chmod 710 /etc/ssl/private
Erzeugen Sie dann dhparams.pem und setzen Sie sichere Berechtigungen:
cd /etc/ssl/private
openssl dhparam -out dhparams.pem 2048
chmod 600 dhparams.pem
Kurz erklärt: dhparams.pem enthält die für Diffie‑Hellman nötigen Primzahlen und einen Generator. 2048 Bit ist derzeit ein praktisches Minimum.
Apache
Zuerst passen wir die Cipher‑Suite gemäß den Empfehlungen von weakdh.org an. Öffnen Sie /etc/apache2/mods-available/ssl.conf:
nano /etc/apache2/mods-available/ssl.conf
Ändern oder ergänzen Sie folgende Zeilen:
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
Wichtig: Die SSLCipherSuite ist eine durchgehende Zeile — keine Zeilenumbrüche einfügen.
Zweitens setzen wir, falls verfügbar, den DH‑Parameter in Apache. Die Option SSLOpenSSLConfCmd ist in Apache >= 2.4.8 und OpenSSL >= 1.0.2 verfügbar. Prüfen Sie Versionen:
apache2 -v
Beispielausgabe (Debian 7):
root@server1:/etc/apache2# apache2 -v
Server version: Apache/2.2.22 (Debian)
Server built: Dec 23 2014 22:48:29
OpenSSL prüfen:
openssl version
Beispielausgabe:
root@server1:/# openssl version
OpenSSL 1.0.1e 11 Feb 2013
Wenn Ihre Versionen die Option unterstützen, fügen Sie in /etc/apache2/mods-available/ssl.conf hinzu:
SSLOpenSSLConfCmd DHParameters "/etc/ssl/private/dhparams.pem"
Anschließend Apache neu starten:
service apache2 restart
Hinweis: Wenn Ihre Apache/OpenSSL‑Version die Option nicht unterstützt, schützt bereits die angepasste SSLCipherSuite vor vielen Angriffsvektoren; der separate DH‑Parameter ist ein zusätzlicher Schutz.
Nginx
Ändern Sie /etc/nginx/nginx.conf:
nano /etc/nginx/nginx.conf
Fügen Sie innerhalb des http { … }‑Blocks hinzu oder ersetzen Sie die Einstellungen:
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/private/dhparams.pem;
Nginx neu starten:
service nginx restart
Postfix
Setzen Sie die sichere Cipher‑Suite und den DH‑Parameter für Postfix:
postconf -e "smtpd_tls_mandatory_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDC3-SHA, KRB5-DE5, CBC3-SHA"
postconf -e "smtpd_tls_dh1024_param_file = /etc/ssl/private/dhparams.pem"
Starten Sie Postfix neu:
service postfix restart
Hinweis: Die obigen postconf‑Zeilen stammen aus dem Originalskript; überprüfen Sie in Ihrer Umgebung die tatsächlich unterstützten Optionen und die Schreibweise der Cipher‑Namen.
Dovecot
Öffnen Sie die Dovecot‑Konfiguration:
nano /etc/dovecot/dovecot.conf
Fügen Sie direkt nach ssl_protocols die Cipherliste hinzu:
ssl_cipher_list=ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
Prüfen Sie die Dovecot‑Version:
dovecot --version
- Wenn Version >= 2.2.6, fügen Sie hinzu:
ssl_prefer_server_ciphers = yes
- Wenn Version >= 2.2.7, fügen Sie außerdem hinzu:
ssl_dh_parameters_length = 2048
Dovecot neu starten:
service dovecot restart
Pure‑FTPd
Bei Pure‑FTPd ist die Lage auf Debian/Ubuntu oft komplizierter, weil /usr/sbin/pure-ftpd-wrapper die -J‑Option nicht standardmäßig unterstützt. Fügen Sie -J im Wrapper hinzu:
nano /usr/sbin/pure-ftpd-wrapper
Suchen Sie die Zeile:
'TLS' => ['-Y %d', \&parse_number_1],
Fügen Sie direkt danach diese Zeile ein:
'TLSCipherSuite' => ['-J %s', \&parse_string],
Dann erstellen oder bearbeiten Sie /etc/pure-ftpd/conf/TLSCipherSuite:
nano /etc/pure-ftpd/conf/TLSCipherSuite
Tragen Sie dort die Cipherliste ein:
ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
Bestehende Datei ersetzen, speichern und Pure‑FTPd neu starten:
service pure-ftpd-mysql restart
Testen und Verifizieren
Nach den Änderungen sollten Sie Ihr System testen:
- Überprüfen Sie Apache/Nginx mit openssl s_client oder Online‑Tools wie Qualys SSL Labs (ssl‑test).
- Prüfen Sie E‑Mail‑Dienste mit sslscan oder swaks.
- Testen Sie FTP/TLS‑Verbindungen mit einem FTP‑Client, der TLS anzeigt.
Wichtig: Testen Sie nach jeder Änderung, bevor Sie produktive Dienste freigeben.
Wann diese Maßnahmen nicht ausreichen
- Wenn Ihr OpenSSL oder Ihre Server‑Software zu alt ist (z. B. OpenSSL < 1.0.2 oder Apache < 2.4.8), können Sie nicht alle Optionen aktivieren. Ein Upgrade ist dann empfohlen.
- Wenn Clients sehr alte Cipher verlangen (z. B. alte IoT‑Geräte), kann das Erzwingen moderner Ciphers Kompatibilitätsprobleme verursachen. Abwägen zwischen Sicherheit und Kompatibilität ist nötig.
Alternative Ansätze
- Einsatz von TLS‑Terminating‑Proxies (z. B. spezialisierte Load Balancer), die moderne Cipher und DH‑Parameter verwalten.
- Nutzung von Hardware‑Security‑Modulen oder SSL‑Offloading auf Edge‑Geräten.
- Zentrale Verwaltung der TLS‑Konfiguration via Konfigurationsmanagement (Ansible, Puppet, Salt), um Konsistenz zu gewährleisten.
Mentahe Modelle und Heuristiken
- Minimal‑Angrifffläche: Deaktivieren Sie veraltete Protokolle (SSLv2/SSLv3, ggf. TLS 1.0) und unsichere Ciphers.
- Einmaligkeit vor Masse: Ein individueller dhparams verhindert erfolgreiche Precomputation‑Angriffe, die gegen weit verbreitete Standard‑Parameter gerichtet sind.
- Defense in Depth: Cipher‑Suche, DH‑Parameter, Protokollversion und HSTS ergänzen sich.
Faktenbox
- Empfohlenes Minimum für DH: 2048 Bit.
- Relevante Softwareanforderungen (für SSLOpenSSLConfCmd): Apache >= 2.4.8, OpenSSL >= 1.0.2.
- Testempfehlungen: Qualys SSL Labs, sslscan, openssl s_client, swaks.
Rolle‑basierte Checkliste
Systemadministrator:
- dhparams.pem erzeugen und Berechtigungen setzen
- Backup der Konfigurationsdateien anlegen
- Dienste nacheinander neu starten und Logs prüfen
Web‑Administrator:
- ssl.conf/nginx.conf anpassen
- TLS‑Tests mit Browser und sslscan durchführen
Mail‑Administrator:
- Postfix/Dovecot konfigurieren und Mailclients testen
- Abgleich mit Unternehmensrichtlinien zur Cipher‑Verwendung
FTP‑Administrator:
- pure‑ftpd‑Wrapper anpassen und TLSCipherSuite setzen
- Clients auf unterstützte TLS‑Versionen prüfen
Kompatibilität und Migrationshinweise
- Falls Ihre Distribution veraltete Pakete liefert, bevorzugen Sie ein sicheres Upgrade vor dem Kompilieren von OpenSSL aus Quellen.
- Testen Sie Änderungen in einer Staging‑Umgebung, bevor Sie in Produktion gehen.
- Dokumentieren Sie alle Anpassungen für spätere Audits.
Sicherheitshärtung und Betrieb
- Aktivieren Sie HSTS (HTTP Strict Transport Security) für Web‑Services, wenn möglich.
- Überwachen Sie Logs auf TLS‑Fehler bzw. Verbindungsabbrüche nach Umstellungen.
- Planen Sie regelmäßige Überprüfungen der TLS‑Konfiguration (z. B. vierteljährlich).
Links
Kurze Ankündigung (zum Kopieren)
Neuer Security‑Patch: Wir haben unseren Debian/Ubuntu‑Server gegen die Logjam‑Schwachstelle gehärtet. Ein individueller 2048‑Bit DH‑Parameter wurde erzeugt und Cipher‑Suites für Apache, Nginx, Postfix, Dovecot und Pure‑FTPd angepasst. Bitte prüfen Sie Client‑Verbindungen und melden Sie Inkompatibilitäten.
Zusammenfassung
- Erzeugen Sie einen individuellen dhparams.pem (2048 Bit).
- Passen Sie Cipher‑Suited und Protokollversionen für alle relevanten Dienste an.
- Testen und dokumentieren Sie Änderungen.
- Erwägen Sie Software‑Upgrades, falls Funktionen nicht verfügbar sind.
Wichtig: Führen Sie Änderungen kontrolliert durch und prüfen Sie alle Dienste nach der Umstellung.
Ähnliche Materialien

Linux auf Chromebook installieren

smartmontools: Festplatten überwachen & einrichten
Logjam-Schutz für Debian/Ubuntu-Server

Dark Sky: Hyperlokale Regenvorhersage & Alternativen

SSH auf CentOS 7 mit WiKID 2FA sichern
