wiki:sicherheit:apache2

Immer öfter Hört man von Sicherer Verschlüsselter Datenübertragung über SSL. Doch wie richtet man es ein und wie sicher ist SSL wirklich?

allgemeine Konfiguration

Zunächst sollte man dem Apache2 ein paar grundsätzliche Flausen abgewöhnen. Warum verrät er z.B. bei jeder Anfrage seine Versionsnummer und Patchstand?

Bei falsch aufgerufenen Seiten (Error 404) verkündet der Apache, welche Version er und ein paar andere Programme hat.

Den Umfang der Auskünfte (Programmnamen, Versionsnummern) stellt man ab, indem man in der /etc/apache/conf.d/security folgendes setzt

ServerTokens Prod

Um die Anzeige komplett zu unterdrücken, setzt man den folgenden Wert

ServerSignature Off

man muss sicherstellen, dass alle Inhalte, die außerhalb des Web-roots liegen, nicht verbreitet werden. Dazu muss man in jedem virtuellen Host folgendes eintragen:

<Directory />
  Order Deny,Allow
  Deny from all
  Options None
  AllowOverride None
</Directory>

Grundsätzlich sollte man in jedem virtuellen Host alle Optionen deaktivieren, wenn man sie nicht braucht.

Options none

Sollte man doch Optionen einschalten müssen, sollten diese auf ein Minimum reduziert werden.

Forward Secrecy

Wieder so eine Phrase, bei der kein Mensch weiß, um was es sich handelt aber jeder mitreden will.

Damit man nicht dumm stirbt, gibt es hier die Erklärung.

Doch wie bekommt man nun alle möglichen Schlüssel. Nachfolgend eine Tabelle, in der alle Kombinationen der Verschlüsselung aufgeführt sind.

Cipher-TagProtocolKey Ex.Auth.Enc.MACType
ECDHE-RSA-AES256-GCM-SHA384TLSv1.2ECDHRSAAESGCM(256)AEAD
ECDHE-ECDSA-AES256-GCM-SHA384TLSv1.2ECDHECDSAAESGCM(256)AEAD
ECDHE-RSA-AES256-SHA384TLSv1.2ECDHRSAAES(256)SHA384
ECDHE-ECDSA-AES256-SHA384TLSv1.2ECDHECDSAAES(256)SHA384
ECDHE-RSA-AES256-SHASSLv3ECDHRSAAES(256)SHA1
ECDHE-ECDSA-AES256-SHASSLv3ECDHECDSAAES(256)SHA1
SRP-DSS-AES-256-CBC-SHASSLv3SRPDSSAES(256)SHA1
SRP-RSA-AES-256-CBC-SHASSLv3SRPRSAAES(256)SHA1
DHE-DSS-AES256-GCM-SHA384TLSv1.2DHDSSAESGCM(256)AEAD
DHE-RSA-AES256-GCM-SHA384TLSv1.2DHRSAAESGCM(256)AEAD
DHE-RSA-AES256-SHA256TLSv1.2DHRSAAES(256)SHA256
DHE-DSS-AES256-SHA256TLSv1.2DHDSSAES(256)SHA256
DHE-RSA-AES256-SHASSLv3DHRSAAES(256)SHA1
DHE-DSS-AES256-SHASSLv3DHDSSAES(256)SHA1
DHE-RSA-CAMELLIA256-SHASSLv3DHRSACamellia(256)SHA1
DHE-DSS-CAMELLIA256-SHASSLv3DHDSSCamellia(256)SHA1
AECDH-AES256-SHASSLv3ECDHNoneAES(256)SHA1
SRP-AES-256-CBC-SHASSLv3SRPNoneAES(256)SHA1
ADH-AES256-GCM-SHA384TLSv1.2DHNoneAESGCM(256)AEAD
ADH-AES256-SHA256TLSv1.2DHNoneAES(256)SHA256
ADH-AES256-SHASSLv3DHNoneAES(256)SHA1
ADH-CAMELLIA256-SHASSLv3DHNoneCamellia(256)SHA1
ECDH-RSA-AES256-GCM-SHA384TLSv1.2ECDH/RSAECDHAESGCM(256)AEAD
ECDH-ECDSA-AES256-GCM-SHA384TLSv1.2ECDH/ECDSAECDHAESGCM(256)AEAD
ECDH-RSA-AES256-SHA384TLSv1.2ECDH/RSAECDHAES(256)SHA384
ECDH-ECDSA-AES256-SHA384TLSv1.2ECDH/ECDSAECDHAES(256)SHA384
ECDH-RSA-AES256-SHASSLv3ECDH/RSAECDHAES(256)SHA1
ECDH-ECDSA-AES256-SHASSLv3ECDH/ECDSAECDHAES(256)SHA1
AES256-GCM-SHA384TLSv1.2RSARSAAESGCM(256)AEAD
AES256-SHA256TLSv1.2RSARSAAES(256)SHA256
AES256-SHASSLv3RSARSAAES(256)SHA1
CAMELLIA256-SHASSLv3RSARSACamellia(256)SHA1
PSK-AES256-CBC-SHASSLv3PSKPSKAES(256)SHA1
ECDHE-RSA-DES-CBC3-SHASSLv3ECDHRSA3DES(168)SHA1
ECDHE-ECDSA-DES-CBC3-SHASSLv3ECDHECDSA3DES(168)SHA1
SRP-DSS-3DES-EDE-CBC-SHASSLv3SRPDSS3DES(168)SHA1
SRP-RSA-3DES-EDE-CBC-SHASSLv3SRPRSA3DES(168)SHA1
EDH-RSA-DES-CBC3-SHASSLv3DHRSA3DES(168)SHA1
EDH-DSS-DES-CBC3-SHASSLv3DHDSS3DES(168)SHA1
AECDH-DES-CBC3-SHASSLv3ECDHNone3DES(168)SHA1
SRP-3DES-EDE-CBC-SHASSLv3SRPNone3DES(168)SHA1
ADH-DES-CBC3-SHASSLv3DHNone3DES(168)SHA1
ECDH-RSA-DES-CBC3-SHASSLv3ECDH/RSAECDH3DES(168)SHA1
ECDH-ECDSA-DES-CBC3-SHASSLv3ECDH/ECDSAECDH3DES(168)SHA1
DES-CBC3-SHASSLv3RSARSA3DES(168)SHA1
PSK-3DES-EDE-CBC-SHASSLv3PSKPSK3DES(168)SHA1
ECDHE-RSA-AES128-GCM-SHA256TLSv1.2ECDHRSAAESGCM(128)AEAD
ECDHE-ECDSA-AES128-GCM-SHA256TLSv1.2ECDHECDSAAESGCM(128)AEAD
ECDHE-RSA-AES128-SHA256TLSv1.2ECDHRSAAES(128)SHA256
ECDHE-ECDSA-AES128-SHA256TLSv1.2ECDHECDSAAES(128)SHA256
ECDHE-RSA-AES128-SHASSLv3ECDHRSAAES(128)SHA1
ECDHE-ECDSA-AES128-SHASSLv3ECDHECDSAAES(128)SHA1
SRP-DSS-AES-128-CBC-SHASSLv3SRPDSSAES(128)SHA1
SRP-RSA-AES-128-CBC-SHASSLv3SRPRSAAES(128)SHA1
DHE-DSS-AES128-GCM-SHA256TLSv1.2DHDSSAESGCM(128)AEAD
DHE-RSA-AES128-GCM-SHA256TLSv1.2DHRSAAESGCM(128)AEAD
DHE-RSA-AES128-SHA256TLSv1.2DHRSAAES(128)SHA256
DHE-DSS-AES128-SHA256TLSv1.2DHDSSAES(128)SHA256
DHE-RSA-AES128-SHASSLv3DHRSAAES(128)SHA1
DHE-DSS-AES128-SHASSLv3DHDSSAES(128)SHA1
DHE-RSA-SEED-SHASSLv3DHRSASEED(128)SHA1
DHE-DSS-SEED-SHASSLv3DHDSSSEED(128)SHA1
DHE-RSA-CAMELLIA128-SHASSLv3DHRSACamellia(128)SHA1
DHE-DSS-CAMELLIA128-SHASSLv3DHDSSCamellia(128)SHA1
AECDH-AES128-SHASSLv3ECDHNoneAES(128)SHA1
SRP-AES-128-CBC-SHASSLv3SRPNoneAES(128)SHA1
ADH-AES128-GCM-SHA256TLSv1.2DHNoneAESGCM(128)AEAD
ADH-AES128-SHA256TLSv1.2DHNoneAES(128)SHA256
ADH-AES128-SHASSLv3DHNoneAES(128)SHA1
ADH-SEED-SHASSLv3DHNoneSEED(128)SHA1
ADH-CAMELLIA128-SHASSLv3DHNoneCamellia(128)SHA1
ECDH-RSA-AES128-GCM-SHA256TLSv1.2ECDH/RSAECDHAESGCM(128)AEAD
ECDH-ECDSA-AES128-GCM-SHA256TLSv1.2ECDH/ECDSAECDHAESGCM(128)AEAD
ECDH-RSA-AES128-SHA256TLSv1.2ECDH/RSAECDHAES(128)SHA256
ECDH-ECDSA-AES128-SHA256TLSv1.2ECDH/ECDSAECDHAES(128)SHA256
ECDH-RSA-AES128-SHASSLv3ECDH/RSAECDHAES(128)SHA1
ECDH-ECDSA-AES128-SHASSLv3ECDH/ECDSAECDHAES(128)SHA1
AES128-GCM-SHA256TLSv1.2RSARSAAESGCM(128)AEAD
AES128-SHA256TLSv1.2RSARSAAES(128)SHA256
AES128-SHASSLv3RSARSAAES(128)SHA1
SEED-SHASSLv3RSARSASEED(128)SHA1
CAMELLIA128-SHASSLv3RSARSACamellia(128)SHA1
PSK-AES128-CBC-SHASSLv3PSKPSKAES(128)SHA1
ECDHE-RSA-RC4-SHASSLv3ECDHRSARC4(128)SHA1
ECDHE-ECDSA-RC4-SHASSLv3ECDHECDSARC4(128)SHA1
AECDH-RC4-SHASSLv3ECDHNoneRC4(128)SHA1
ADH-RC4-MD5SSLv3DHNoneRC4(128)MD5
ECDH-RSA-RC4-SHASSLv3ECDH/RSAECDHRC4(128)SHA1
ECDH-ECDSA-RC4-SHASSLv3ECDH/ECDSAECDHRC4(128)SHA1
RC4-SHASSLv3RSARSARC4(128)SHA1
RC4-MD5SSLv3RSARSARC4(128)MD5
PSK-RC4-SHASSLv3PSKPSKRC4(128)SHA1
EDH-RSA-DES-CBC-SHASSLv3DHRSADES(56)SHA1
EDH-DSS-DES-CBC-SHASSLv3DHDSSDES(56)SHA1
ADH-DES-CBC-SHASSLv3DHNoneDES(56)SHA1
DES-CBC-SHASSLv3RSARSADES(56)SHA1
EXP-EDH-RSA-DES-CBC-SHASSLv3DH(512)RSADES(40)SHA1export
EXP-EDH-DSS-DES-CBC-SHASSLv3DH(512)DSSDES(40)SHA1export
EXP-ADH-DES-CBC-SHASSLv3DH(512)NoneDES(40)SHA1export
EXP-DES-CBC-SHASSLv3RSA(512)RSADES(40)SHA1export
EXP-RC2-CBC-MD5SSLv3RSA(512)RSARC2(40)MD5export
EXP-ADH-RC4-MD5SSLv3DH(512)NoneRC4(40)MD5export
EXP-RC4-MD5SSLv3RSA(512)RSARC4(40)MD5export

Umsetzung

Um die Verschlüsselung global zu setzen, muss man in der Datei /etc/apache2/mods-enabled/ssl.conf die folgendenen Zeilen eintragen / Ändern

Vorsicht:

In den <VirtualHost>-Anweisungen wird der Wert noch einmal gesetzt und damit überschrieben. Kommentiert ihn bei jedem vHost aus!!

SSLProtocol all -SSLv2
SSLHonorCipherOrder On
SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+RC4:EDH+RC4:RC4-SHA:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5

Nachtrag:

  1. Leider Ist in der obigen Regel nicht der „anonyme Diffi-Hellmann Schlüsselaustausch“ inbegriffen. dieser sollte wenn mögliche auch abgeschalten werden. Ein :!ADH an die Zeile SSLCipherSuite angehängt und auch dieses Problem ist gelöst
  2. RC4-Verschlüsselung gilt nicht mehr als sicher und kann mit !:RC4 deaktiviert werden
  3. Aufgrund von Inkompatibilität habe ich mich dazu entschieden, EDH-3DES und EECDH-3DES zu aktivieren. Die Optimierte CipherSuite ist nun
    SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+AES256:EDH+AES256:EECDH+3DES:EDH+3DES:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5:!ADH
  4. Aufgrund von aktuellen Ereignissen (DH-Logjam Attacke) kann die obige CipherSuite auch nicht mehr als Maß aller Dinge betrachtet werden. Eine Beschreibung der zusätzlichen Absicherung sowie einer SSLCipherSuite ist hier beschrieben.

HTTP Strict Transport Security

Quellen

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
   ____   ___   ____  _   __   ___ 
  /  _/  / _ ) /_  / | | / /  / _ \
 _/ /   / _  |  / /_ | |/ /  / , _/
/___/  /____/  /___/ |___/  /_/|_|
 
  • wiki/sicherheit/apache2.txt
  • Zuletzt geändert: 2015/10/23 10:32
  • von wikiadmin