Frage Wie man die 'logjam' Schwachstelle in Apache (httpd) repariert


Vor kurzem wurde eine neue Schwachstelle in Diffie-Hellman, informell als "Blockade" bezeichnet, veröffentlicht, für die diese Seite wurde zusammengestellt, wie man der Schwachstelle begegnen kann:

Wir haben drei Empfehlungen für die korrekte Implementierung von Diffie-Hellman   für TLS:

  1. Deaktivieren Sie Cipher Suites exportieren. Obwohl moderne Browser nicht mehr   Unterstützung von Exportsuites, erlauben die Angriffe FREAK und Logjam a   Man-in-the-Middle-Angreifer, um Browser dazu zu bringen, Export-Grade zu verwenden   Kryptografie, nach der die TLS-Verbindung entschlüsselt werden kann. Export   Chiffren sind ein Überbleibsel der Politik der neunziger Jahre, die stark verhindert hat   kryptografische Protokolle aus den Vereinigten Staaten exportiert werden. Nein   Moderne Kunden verlassen sich auf Exportsuiten und es gibt wenig Nachteile   sie deaktivieren.
  2. Deploy (Ephemeral) Elliptic-Kurve Diffie-Hellman   (ECDHE). Elliptic-Curve Diffie-Hellman (ECDH) Schlüsselaustausch vermeidet alle   bekannt machbare kryptoanalytische Angriffe und moderne Webbrowser jetzt   bevorzugen ECDHE gegenüber dem ursprünglichen, endlichen Feld, Diffie-Hellman. Das   diskrete Log-Algorithmen, mit denen wir Standard-Diffie-Hellman angreifen   Gruppen gewinnen nicht so stark von einem Vorteil der Vorberechnung, und   Einzelne Server müssen keine eindeutigen elliptischen Kurven generieren.
  3. Erzeugen Sie eine starke, einzigartige Diffie Hellman Group. Ein paar feste Gruppen sind   Wird von Millionen von Servern verwendet, was sie zu einem optimalen Ziel für   Vorberechnung und potentielles Abhören. Administratoren sollten   generiere einzigartige, 2048-Bit oder stärkere Diffie-Hellman-Gruppen mit   "sichere" Primzahlen für jede Website oder jeden Server.

Was sind die Best-Practice-Schritte, die ich ergreifen sollte, um meinen Server gemäß den obigen Empfehlungen zu sichern?


56
2018-05-20 09:34


Ursprung


Verbunden: Was ist Logjam und wie verhindere ich es? - Martin Schröder


Antworten:


Von dem Artikel, den Sie verlinkt habenEs gibt drei empfohlene Schritte, um sich vor dieser Sicherheitsanfälligkeit zu schützen. Im Prinzip gelten diese Schritte für jede Software, die Sie mit SSL / TLS verwenden, aber hier werden wir die spezifischen Schritte behandeln, um sie auf Apache (httpd) anzuwenden, da dies die fragliche Software ist.

  1. Deaktivieren Sie Cipher Suites exportieren

Behandelt mit den Konfigurationsänderungen, die wir in 2. vornehmen werden (!EXPORT gegen Ende des SSLCipherSuite Linie ist, wie wir Export Cipher Suites deaktivieren)

  1. Deploy (Ephemeral) Elliptic-Kurve Diffie-Hellman (ECDHE)

Dazu müssen Sie einige Einstellungen in Ihren Apache-Konfigurationsdateien bearbeiten SSLProtocol, SSLCipherSuite, SSLHonorCipherOrder ein "Best-Practices" Setup haben. Etwas wie das Folgende wird ausreichen:

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

Hinweis: für welche SSLCipherSuite Einstellung zu verwenden, dies ändert sich immer, und es ist eine gute Idee, Ressourcen wie konsultieren dieses um nach der neuesten empfohlenen Konfiguration zu suchen.

3. Erzeugen Sie eine starke, einzigartige Diffie-Hellman-Gruppe

Um dies zu tun, können Sie laufen

openssl dhparam -out dhparams.pem 2048.

Beachten Sie, dass dies den Server stark belastet, während die Parameter generiert werden - Sie können dieses potenzielle Problem immer umgehen, indem Sie die Parameter auf einer anderen Maschine generieren und verwenden scpoder ähnlich, um sie auf den betreffenden Server zur Verwendung zu übertragen.

Um diese neu zu generieren dhparams in Apache, von der Apache-Dokumentation:

Verwenden Sie den Befehl openssl dhparam, um benutzerdefinierte DH-Parameter zu generieren.   Alternativ können Sie füge folgendes an Standard-1024-Bit-DH   Parameter aus RFC 2409, Abschnitt 6.2 zu den jeweiligen   SSLCertificateFile-Datei:

(Hervorhebung von mir)

Auf diesen folgt ein Standard-1024-Bit-DH-Parameter. Daraus können wir schließen, dass die benutzergenerierten DH-Parameter einfach an die relevanten angehängt werden können SSLCertificateFile fraglich.

Führen Sie dazu etwas ähnlich dem folgenden aus:

cat /path/to/custom/dhparam >> /path/to/sslcertfile

Alternativ, wie der Apache Unterabschnitt von dem Artikel, den Sie ursprünglich verlinkt haben, können Sie auch die benutzerdefinierte dharams-Datei angeben, die Sie erstellt haben, wenn Sie die Zertifikatsdatei selbst nicht ändern möchten:

SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"

unabhängig davon, welche Apache-Konfiguration (en) für Ihre bestimmte SSL / TLS-Implementierung relevant sind - im Allgemeinen in conf.d/ssl.confoder conf.d/vhosts.conf Dies hängt jedoch davon ab, wie Sie Apache konfiguriert haben.

Es ist erwähnenswert, dass, wie dieser Link,

Vor Apache 2.4.7 ist der DH-Parameter immer auf 1024 Bit und gesetzt   ist nicht vom Benutzer konfigurierbar. Dies wurde in mod_ssl 2.4.7 behoben   Red Hat hat sich mit seiner RHEL 6 Apache 2.2-Distribution zurück portiert   httpd-2.2.15-32.el6

Auf Debian Wheezy upgrade apache2 auf 2.2.22-13 + deb7u4 oder höher und openssl auf 1.0.1e-2 + deb7u17. Die obige SSLCipherSuite funktioniert nicht perfekt, stattdessen verwenden Sie die folgenden Anweisungen dieser Blog:

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384: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-DSS-AES128-SHA256:DHE-DSS-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384: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:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-RSA-AES256-SHA256:!DHE-RSA-CAMELLIA128-SHA:!DHE-RSA-CAMELLIA256-SHA

Sie sollten überprüfen, ob Ihre Apache-Version später als diese Versionsnummern ist, abhängig von Ihrer Distribution, und falls nicht - aktualisieren Sie sie wenn möglich.

Nachdem Sie die oben genannten Schritte zur Aktualisierung Ihrer Konfiguration durchgeführt und den Apache-Dienst neu gestartet haben, um die Änderungen zu übernehmen, sollten Sie überprüfen, ob die Konfiguration den Anforderungen entspricht, indem Sie die Tests ausführen SSLLabs und weiter der Artikel im Zusammenhang mit dieser besonderen Sicherheitsanfälligkeit.


81
2018-05-20 09:50



Was die Last angeht, die auf dem Server durch das Generieren der Parameter angelegt wird, können Sie sie immer auf einem anderen Rechner erzeugen und einfach die Datei scp kopieren oder sogar kopieren und auf den Zielserver kopieren. Es besteht keine Notwendigkeit, die Parameter im Produktionsserver zu generieren. - Erathiel
Nachdem Sie Ihre Konfiguration geändert haben, möchten Sie möglicherweise einen Check bei ausführen SSLLabs.com um nur sicher zu sein. - user2428118
Gibt es eine Möglichkeit, diese Sicherheitslücke in Apache / 2.2.22 (Ubuntu 12.04) zu beheben? Ich fügte dhparams.pem zu certificate.crt aber hinzu weakdh.org/sysadmin.html beschwert sich immer noch - tersmitten
@tersmitten Das ist eine ganz andere Frage zu diesem Thema. - Michael Hampton♦
Sie können die Schlüsselgenerierung immer mit dem Befehl 'nice' ausführen. Also, du kannst es als: schön 19 openssl dhparam -out dhparams.pem 2048. Dies funktioniert länger, verbraucht jedoch nur ungenutzte CPU-Zeit. - Znik


Basierend auf einem Patch von Winni Neessen habe ich einen Fix für Apache / 2.2.22 (Debian Wheezy, vielleicht auch unter Ubuntu) veröffentlicht: https://flo.sh/debian-wheezy-apache2-logjam-fix/ - Vielen Dank. für dein Feedback.


0
2018-05-21 02:32



Das ist eher ein Hackshack als eine Lösung. Einen reellen Proxy vor dem Apache als Reverse-Proxy zu platzieren wäre viel einfacher, und man verlässt sich nicht auf einen 3rd-Party-Apache. - that guy from over there
Warum sollten wir diesen Binärdateien vertrauen? - α CVn
Sie müssen den Binärdateien nicht vertrauen. Sie können apache2.2.x sehr leicht selbst kompilieren, indem Sie die beschriebenen Schritte befolgen, wenn Sie sich die Zeit nehmen. Dies würde außerdem Ihre Sicherheit erhöhen, da Ihr Setup dann einzigartige Primärschlüssel hat. - Flo
Ich würde vorschlagen, dass sich die Leute nicht über Patches beschweren, die ein Problem in einer Open Source-Software beheben. - Florian Heigl
@FlorianHeigl Ich bin mir nicht einmal sicher, was ich von diesem Kommentar halten soll ... - BE77Y


Anstatt die komplexe Route der oben genannten Hacks zu gehen, bedenken Sie Wechsel zu Nginx als Ihre Haupt-Webserver-Software (nicht nur Caching oder Proxy). Offensichtlich scheint es sicherheitshalber aktueller zu sein als die alten Apache-Engines. Durch die Verwendung des Nginx-Repository erhalten Sie eine stabilere Webserver-Engine auf dem neuesten Stand als Apache.

Ich habe komplett umgeschaltet. Er hat mir eine Menge zeitaufwändiger Problemlösungen in Bezug auf TLS erspart, und - für unsere Konfigurationen - hat es auch viel RAM im gleichen Prozess freigegeben. Tatsächlich fand ich die Verwendung von Nginx erfrischend einfach und unkompliziert, verglichen mit den unzähligen Konfigurationskomplikationen von httpd / apache, an die ich mich gewöhnt hatte. Könnte Geschmackssache sein, ich war ziemlich fließend in httpd / apache rewrite / config / Wartung bevor ich drehte, und es war einfacher als ich befürchtet hatte. Es gibt entsprechende aktuelle Informationen zu nginx config, die online verfügbar sind, und die Benutzerbasis ist riesig, sehr aktiv und unterstützungsfreundlich. https://news.netcraft.com/wp-content/uploads/2018/03/wpid-wss-top-1m-share.png


-7
2017-11-04 11:16



Nginx eingerichtet, um Export-Chiffren zu ermöglichen wäre genau So anfällig für den Logjam-Angriff wie ein Apache-Server, der für Export-Chiffren eingerichtet wurde. Außerdem fragt die Frage nach Lösungen in Apache. - α CVn
Nicht wahr. In der Tat war der Hauptgrund, warum ich einmal zu nginx konvertiert habe, genau das, weil die Verwaltung des Distributionspakets, sowohl yum als auch apt, zu der Zeit geschah nicht liefert eine aktuelle Version von Apache. Während das mitgelieferte nginx alles enthielt, was ich gegen den Exploit zu der Zeit brauchte. Auch hier war es mehr den Standards gewachsen, und ich vermute, dass die Aktualisierungszyklen viel kürzer sind. Jetzt ist es Logjam, aber bei der Arbeit stoße ich auf das gleiche Problem mit Apache 2.2 und die Distro liefert keinen Backport gegen mehrere SSL / TLS-bezogene Probleme. Lösung: Ersetzen Sie Apache durch nginx. Problem gelöst. - Julius
Tatsächlich, Lösung: Entweder wechseln Sie zu einer Distribution, die aktuellere Pakete für Software bereitstellt, wo Sie unbedingt eine neuere Version benötigen (nicht nur Backported Bug Fixes, wie es zB bei Debian oder CentOS der Fall ist), oder baue Pakete selbst aus der Quelle (es ist nicht schwer) und installiere sie mit dem Paketmanager, oder Einfach alte Installation aus Quellcode (auch nicht schwer, aber ein wenig mehr Arbeit zu verwalten). Bei einer Frage mit der Frage "Wie schütze ich die Schwachstelle X in der Y-Software?" Ist eine Antwort, die besagt, dass Y-Software durch Z-Software ersetzt wird, oft keine sinnvolle Antwort. - α CVn
Nun, es gibt immer noch dieses kleine Problem, das Abhängigkeiten genannt wird, und seine nicht brandneue Hardware, und abgesehen davon, dass es ein System ist, das ich nicht durch Änderung der Distribution korrigiere, müssen wir uns mit Server-Software-Unterschieden in Bezug auf Marionetten beschäftigen -Verwaltung. Es ist nicht so, dass wir genug Zeit auf der Welt haben, um ganze OS-Kerne umzuschalten. Ein Paket-Upgrade (d. H. Apache zu Nginx) ist im Vergleich machbar. - Julius
Apache zu Nginx ist kein Upgrade, es ist ein Ersatz. Backporting ist eine Möglichkeit. Wenn Sie viel Arbeit in die Apache-Lösung investiert haben, ist es auch eine Menge Arbeit, sie komplett auszulöschen und durch etwas anderes zu ersetzen. Und diese Frage ist immer noch über zentrierte Lösungen Apache, nicht Nginx. Ich werde nicht mehr Zeit damit verbringen, darüber zu streiten; Wenn Sie Antworten posten, stellen Sie sicher, dass sie die Frage beantworten, die Sie oben auf der Seite gestellt haben. Wenn du eine Antwort posten willst, die Leute dazu ermutigt, von Apache zu Nginx zu wechseln, tue es auf jeden Fall, aber auf eine Frage, die Nginx erlaubt. - α CVn