Jeder Anfänger im Bereich der Serververwaltung kommt irgendwann mal an den Punkt, an dem der Server läuft und man sich fragt: „Wie bekomme ich meinen Server sicher?“. Nach stundenlangem Suchen in diversen Foren macht sich jedoch meist Frust breit, da von vielen Usern nur Antworten zu lesen sind wie „Noob“ oder „Read the fucking manual“.

Ein kleiner Schritt in Richtung Sicherheit ist möglich in dem man schwache Verschlüsslungsalgorithmen und Protokolle ausschließt und nur noch die richtigen zulässt. Mit diesem Thema haben sich auch einige kluge Köpfe beschäftigt und basierend auf ihrer Arbeit ein Dokument verfasst, welches einem Vorschläge für eine starke Kryptografie gibt und einem die Theorie hinter der ganzen Kryptografie etwas näher bringt. Zu finden ist das Dokument unter bettercrypto.org. Im nachfolgenden möchte ich nun einige Stelle dieses Dokumentes publizieren.

Als erstes Beispiel ein Auszug zur Konfiguration des oft eingesetzten Webservers Apache2.

SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCompression off
# Add six earth month HSTS header for all users...
Header set Strict-Transport-Security "max-age=15768000"
# If you want to protect all subdomains, use the following header
# ALL subdomains HAVE TO support HTTPS if you use this!
# Strict-Transport-Security: "max-age=15768000 ; includeSubDomains"
SSLCipherSuite
'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+
aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!
eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256
-SHA:CAMELLIA128-SHA:AES128-SHA'

In der oben gezeigten Konfiguration werden unter anderem die Protokolle SSLv2 und SSLv3 verboten. Warum ist das so? Das SSL-Protokoll in der Version 2 ist anfällig für einen Angriff mit dem Namen „BEAST“ und in der Version 3 für den Angriff „POODLE“.

Ein weiteres Beispiel für eine starke Kryptografie wäre die Konfiguration des SSH-Zugangs auf einem Debian-Derivat mit OpenSSH.

Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
PermitRootLogin no # or 'without-password'to allow SSH key based login
StrictModes yes
PermitEmptyPasswords no
Ciphers aes256-ctr,aes128-ctr
MACs hmac-sha2-512,hmac-sha2-256,hmac-ripemd160
KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,
diffie-hellman-group-exchange-sha1

Links zum Beitrag