{"id":1446,"date":"2013-07-08T07:37:33","date_gmt":"2013-07-08T05:37:33","guid":{"rendered":"http:\/\/blog.benny-baumann.de\/?p=1446"},"modified":"2013-07-08T07:43:55","modified_gmt":"2013-07-08T05:43:55","slug":"fighting-the-beast","status":"publish","type":"post","link":"https:\/\/blog.benny-baumann.de\/?p=1446","title":{"rendered":"Fighting the BEAST"},"content":{"rendered":"<p>Nachdem in letzter Zeit mehrere Probleme mit <a href=\"https:\/\/community.qualys.com\/blogs\/securitylabs\/2013\/03\/19\/rc4-in-tls-is-broken-now-what\">SSL<\/a> und <a href=\"https:\/\/community.qualys.com\/blogs\/securitylabs\/2011\/10\/17\/mitigating-the-beast-attack-on-tls\">TLS<\/a> bekannt geworden sind und ich mich bereits mehrfach an die Konfiguration eines Workarounds gesetzt habe, gelang gestern der Durchbruch, das <a href=\"https:\/\/www.ssllabs.com\/ssltest\/analyze.html?d=box1.sys.ccs-baumann.de\">BEAST zu bezwingen<\/a>.<!--more--><\/p>\n<p>Bevor ich jetzt tief in Details einsteige, der wahrscheinlich f\u00fcr die meisten mit GnuTLS wichtigste Teil:<\/p>\n<pre lang=\"apache\">GnuTLSPriorities SECURE256:-CIPHER-ALL:+COMP-DEFLATE:-MAC-ALL:!MD5:!ANON-DH:!3DES-CBC:-CAMELLIA-256-CBC:!CAMELLIA-128-CBC:-AES-256-CBC:!AES-128-CBC:+VERS-TLS1.2:+VERS-TLS1.1:+SHA384:+SHA256:+AES-256-GCM:+SHA1:+VERS-TLS1.0:+ARCFOUR-128:+CAMELLIA-256-CBC:+AES-256-CBC:%SERVER_PRECEDENCE<\/pre>\n<p>Das ist sicherlich noch nicht perfekt (insbesondere, weil er aus irgendeinem Grund noch RSA-KEX vor DHE-RSA priorisiert), aber zumindest gibt es schon mal eine Ausgangskonfiguration, mit der es prinzipiell funktioniert.<\/p>\n<p>Also zur Erkl\u00e4rung der doch sehr kryptischen Zeile, deren Syntax <a href=\"http:\/\/gnutls.org\/manual\/html_node\/Priority-Strings.html\">in der Dokumentation<\/a> zwar beschrieben ist &#8211; leider jedoch ohne Erw\u00e4hnung ein paar sehr wichtiger Details. Daher war dann auch eine <a href=\"http:\/\/blog.lighttpd.net\/articles\/2013\/06\/01\/mitigating-beast-with-gnutls\/\">an anderer Stelle gefundene Beschreibung<\/a> sehr hilfreich, auch wenn diese nicht wie gew\u00fcnscht funktioniert hat.<\/p>\n<p>Aber sie enthielt zwei wichtige Punkte, die entweder in der offiziellen Dokumentation fehlten oder meinem Blick geschickt entwichen sind.<\/p>\n<ul>\n<li>Durch Anh\u00e4ngen von %SERVER_PRECEDENCE kann man GnuTLS dazu bringen, die Reihenfolge von Ciphern basierend auf dem Priority-String serverseitig zu ermitteln.<\/li>\n<li>Durch Entfernen und Neueinf\u00fcgen von Cipher-Gruppen kann man diese komplett umsortieren<\/li>\n<\/ul>\n<p>Der erste Punkt war mir dabei zwar bereits \u00fcber den Weg gelaufen, jedoch funktioniert dieser erst ab GnuTLS 3 &#8211; welches in <a href=\"http:\/\/www.debian.org\/releases\/stable\/\">Debian Veraltet<\/a> und <a href=\"http:\/\/www.debian.org\/releases\/testing\/\">Debian Instabil<\/a> leider nicht per Default installiert ist. Und auch wenn man etwas nachhilft, muss man mit GnuTLS noch etwas vorsichtig umgehen; mit etwas Conflict Resolution im Aptitude l\u00e4sst sich ein System aber recht gut auf GnuTLS 3 ziehen.<\/p>\n<p>Der Priority-String ist mit oben erw\u00e4hnten zwei Punkten auch recht schnell erkl\u00e4rt:<\/p>\n<ol>\n<li>SECURE256: Alle Cipher ab 256 Bit Keystrength aktivieren (Auch wenn SECURE256 ein Alias f\u00fcr SECURE192 ist und daher ab 192 Bit die Cipher aktiviert &#8211; aber Kryptographie ist selten Straight Forward)<\/li>\n<li>-CIPHER-ALL: Alle Cipher deaktivieren<\/li>\n<li>+COMP-DEFLATE: Kompression aktivieren<\/li>\n<li>-MAC-ALL:!MD5: Alle MAC-Verfahren deaktivieren und insbesondere MD5 entg\u00fcltig<\/li>\n<li>!ANON-DH: Anonymes Diffie-Hellman KEX unterbinden (entg\u00fcltig)<\/li>\n<li>!3DES-CBC: Und Triple-DES wollen wir auch nicht mehr sehen<\/li>\n<li>-CAMELLIA-256-CBC:!CAMELLIA-128-CBC:-AES-256-CBC:!AES-128-CBC: 128-Bit-Cipher entfernen und 256-Bit-Cipher vor\u00fcbergehend deaktivieren<\/li>\n<li>+VERS-TLS1.2:+VERS-TLS1.1: Protokoll-Support f\u00fcr TLS1.2 und TLS1.1 aktivieren<\/li>\n<li>+SHA384:+SHA256:+AES-256-GCM: Cipher mit SHA384 und SHA256 als MAC erlauben und passende Varianten mit AES-256 mit GCM aktivieren<\/li>\n<li>+SHA1: Dahinter die Varianten mit SHA1 als MAC einsortieren<\/li>\n<li>+VERS-TLS1.0:+ARCFOUR-128: Das BEAST bek\u00e4mpfen und einen f\u00fcr BEAST unanf\u00e4lligen Cipher einsortieren (Und ja, RC4 [sic] hier verwenden zu m\u00fcssen <strong>schmerzt<\/strong>!)<\/li>\n<li>+CAMELLIA-256-CBC:+AES-256-CBC: Und noch einige CBC-Cipher, wobei CAMELLIA vor AES verwendet werden sollte<\/li>\n<li>%SERVER_PRECEDENCE: Und zu guter Letzt sagen wir GnuTLS noch, dass die Reihenfolge (und nicht nur die Technik) wichtig ist.<\/li>\n<\/ol>\n<p>Wer zus\u00e4tzlich neben dem BEAST auch <a href=\"https:\/\/community.qualys.com\/blogs\/securitylabs\/2012\/09\/14\/crime-information-leakage-attack-against-ssltls\">gegen Kriminalit\u00e4t<\/a> vorgehen m\u00f6chte, l\u00e4sst in obigem Priority String einfach das Aktivieren der Deflate-Kompromitierung [sic] weg.<\/p>\n<p>Jetzt fehlt nur noch, die Konfig auf allen VHosts einzuspielen, aber nachdem einmal die Konfig an sich steht, ist das gerade mal noch die Finger\u00fcbung.<\/p>\n<p class=\"wp-flattr-button\"><a href=\"https:\/\/blog.benny-baumann.de\/?flattrss_redirect&amp;id=1446&amp;md5=63a6e6a665a9e79c7058b0d838abcd44\" title=\"Flattr\" target=\"_blank\"><img src=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" srcset=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" alt=\"Flattr this!\"\/><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Nachdem in letzter Zeit mehrere Probleme mit SSL und TLS bekannt geworden sind und ich mich bereits mehrfach an die Konfiguration eines Workarounds gesetzt habe, gelang gestern der Durchbruch, das BEAST zu bezwingen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[4],"tags":[156,10,165,69,112,333,346,50,57,67],"class_list":["post-1446","post","type-post","status-publish","format-standard","hentry","category-server","tag-apache","tag-debian","tag-gnutls","tag-internet","tag-kryptographie","tag-mod_gnutls","tag-server","tag-ssl","tag-tls","tag-uberwachung"],"_links":{"self":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/1446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1446"}],"version-history":[{"count":6,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/1446\/revisions"}],"predecessor-version":[{"id":1448,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/1446\/revisions\/1448"}],"wp:attachment":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1446"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1446"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}