Technologieführer

Logjam-Schutz für Debian/Ubuntu-Server

5 min read Sicherheit Aktualisiert 03 Oct 2025
Logjam-Schutz für Debian/Ubuntu-Server
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.

Autor
Redaktion

Ähnliche Materialien

Linux auf Chromebook installieren
Installation

Linux auf Chromebook installieren

smartmontools: Festplatten überwachen & einrichten
Systemadministration

smartmontools: Festplatten überwachen & einrichten

Logjam-Schutz für Debian/Ubuntu-Server
Sicherheit

Logjam-Schutz für Debian/Ubuntu-Server

Dark Sky: Hyperlokale Regenvorhersage & Alternativen
Wetter-Apps

Dark Sky: Hyperlokale Regenvorhersage & Alternativen

SSH auf CentOS 7 mit WiKID 2FA sichern
Sicherheit

SSH auf CentOS 7 mit WiKID 2FA sichern

Windows 10: automatische Updates stoppen
Windows

Windows 10: automatische Updates stoppen