TLS Basics and Hardening
Hallo zusammen,
In den letzten Tagen habe ich mich etwas mit Transport Layer Security (kurz TLS) auseinandergesetzt.
Hierzu muss man erst einmal ein bisschen die Begriffe SSL und TLS entwirren. SSL ist der alte Begriff und sollte nicht mehr verwendet werden. http://de.wikipedia.org/wiki/Transport_Layer_Security
Geschichte
Version | Beschreibung | Jahr |
SSL v1 | von Netscape erfunden | 1994 |
SSL v2 | von Netscape weiterentwickelt - gilt als unsicher | 1994 |
PCT 1.0 | Private Communication Technology war die SSL Implementation von Microsoft | 1995 |
SSL v3 | wurde später grösstenteils als TLS v1 übernommen | 1996 |
TLS v1 | http://tools.ietf.org/html/rfc2246 | 1999 |
TLS v1.1 | http://tools.ietf.org/html/rfc4346 | 2006 |
TLS v1.2 | http://tools.ietf.org/html/rfc5246 | 2008 |
SSL Handshake
Mit dem SSL Handshake wird die Verschlüsselung ausgehandelt.
Deutsch | Englisch | Varianten |
Schlüsselaustausch | Key Exchange | NULL, RSA, DH, ADH, EDH, SRP |
Authentifizierung | Authentication | NULL, RSA, DSS, DH |
Verschlüsselung | Symmetric Encryption Method/Cipher | NULL, RC2, RC4, DES, 3DES, IDEA, AES |
Hashfunktion | Message Authentication Code | NULL, MD5, SHA, SHA1, SHA256, SHA384 |
Export Flag | Export Flag | Export |
Eine seht detailierte Abhandlung darüber kann man unter folgendem Link nachlesen
http://blogs.msdn.com/b/kaushal/archive/2013/08/03/ssl-handshake-and-https-bindings-on-iis.aspx
Unsichere Verschlüsselungen
Es gibt viele verschiede Verschlüsselungen (CipherSuites) und Protokolle. Einige davon sind nicht mehr sicher und die Frage ist bloss, welche denn nun als unsicher gelten?
Leider habe ich nirgends eine Liste von Cipher Suites gefunden welche als unsicher gelten. Aufgrund meiner Tests mit verschiedenen Tools habe die folgende Liste zusammengestellt. Diese sollten nicht mehr verwendet werden.
- ADH-AES256-SHA
- ADH-CAMELLIA256-SHA
- ADH-DES-CBC3-SHA
- ADH-AES128-SHA
- ADH-CAMELLIA128-SHA
- ADH-RC4-MD5
- EDH-RSA-DES-CBC-SHA
- ADH-DES-CBC-SHA
- DES-CBC-SHA
Guidelines
Die folgenden Guidelines habe ich den folgenden Guides entnommen:
Zertifikate
- Private Keys von Zertifikaten sollten mindestens 1024 bit besser jedoch 2048 Bit sein
- Der Private Key muss geschützt werden
- Zertifikate nur von vertrauenswürdigen Zertifizierungsstellen kaufen
- Korrekte Certificate Chain prüfen
Protokolle
- SSL v2 ist unsicher und darf nicht mehr verwendet werden
- SSL v3 ist veraltet und alle Clients unterstützen TLS v1.0 deshalb kann SSLv3 deaktiviert werden
- TLS v1.0 ist grösstenteils sicher und kann mit entsprechender Konfiguration abgehärtet werden
- TLS v1.1/1.2 haben keine bekannten Sicherheitslücken
Verschlüsselung
- Anonymous Diffie-Hellman (ADH) bieten keine Authentifizierung - nicht verwenden
- NULL cipher suites bieten keine Verschlüsselung - nicht verwenden
- Export key exchange suites nutzen Authentifizierung welche leicht gebrochen werden können - nicht verwenden
- Suites mit schwacher Verschlüsselung (typisch 40 und 56 bits) können leicht gebrochen werden können - mindestens 128 bit verwenden
- RC4 is schwächer als vermutet . Support für RC4 sollte in nächster Zeit engfernt wrden (BEAST attack) - nicht verwenden
- 3DES bietet nur 108 bits Sicherheit (oder 112 je nach source), welches tiefer als das empfohlene Minimum von 128 bits liegt - nicht verwenden
- Elliptic Curve DSA (ECDSA) Zertifikate verwenden
Weitere Massnahmen
- Festlegen der Reihenfolge der Verschlüsselungsmethoden
- Unterstützung von Forward Secrecy
- Deaktivieren von Client-initiierten Renegotiation
- Deaktivieren von TLS Compression (CRIME Attack)
Praxis
Nun hast du viel gelesen aber immer noch keinen Plan, wie man das in der Praxis umsetzt. Tja, mir ist das genau gleich gegangen.
Microsoft Windows und IIS
Bei Windows wird alles über die Registry eingestellt. Der folgende KB Artikel erklärt das genauer.
How to restrict the use of certain cryptographic algorithms and protocols in Schannel.dll
http://support.microsoft.com/kb/245030/en-us
Eigentlich ist alles in der Registry. Ich habe mir mal die Mühe gemacht und die Registry Keys von Windows 2008, Windows 2008 R2, Windows 2012 und Windows 2012 R2 zu vergleichen. Die grosse Überraschung - überrall steht das selbe drin.
"EventLogging"=dword:00000001
"DisabledByDefault"=dword:00000001
Here are the important differences between the Windows Server versions:
- WS 2003 had SSL 2.0/3.0 and TLS 1.0 enabled by default. The default installation did not support AES ciphers – but support could be added through a hotfix.
- WS 2008 also had SSL 2.0/3.0 and TLS 1.0 enabled by default, but improved the cryptographic support with new AES cipher suites.
- WS 2008 R2 introduced TLS 1.1 and TLS 1.2, but they were disabled by default.
- WS 2012 takes us a step further with TLS 1.2 enabled by default.
https://www.nartac.com/Products/IISCrypto/Default.aspx
http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite
SSLCipherSuite ALL:!aNULL:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
SSLCipherSuite ALL:!aNULL:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP:+eNULL
SSLCipherSuite HIGH:!aNULL:!MD5
Prüfen der Security
Anschliessend sollte die Sicherheit geprüft werden. Dazu stehen verschiedene Tools zur Verfügung
Qualys SSL Labs
https://www.ssllabs.com/ssltest/
SSLscan
http://sourceforge.net/projects/sslscan/
http://code.google.com/p/sslscan-win/downloads/list
SSLScan.exe --no-failed icesrv01.corp.icewolf.ch:44
SSLDiagnos
http://sourceforge.net/projects/ssldiagnos/
ssldiagnos.exe -t icesrv01.corp.icewolf.ch -p 443
Nmap
nmap --script ssl-cert,ssl-enum-ciphers -p 443 icesrv01.corp.icewolf.ch
Weitere Informationenen
- How to restrict the use of certain cryptographic algorithms and protocols in Schannel.dll
http://support.microsoft.com/kb/245030/en-us - How to disable PCT 1.0, SSL 2.0, SSL 3.0, or TLS 1.0 in Internet Information Services http://support.microsoft.com/kb/187498/en-us
- Setup your IIS for SSL Perfect Forward Secrecy and TLS 1.2 http://www.hass.de/content/setup-your-iis-ssl-perfect-forward-secrecy-and-tls-12
- Cipher Suites in Schannel http://msdn.microsoft.com/en-us/library/windows/desktop/aa374757(v=vs.85).aspx
- Testing for Weak SSL/TSL Ciphers, Insufficient Transport Layer Protection
https://www.owasp.org/index.php/Testing_for_Weak_SSL/TSL_Ciphers,_Insufficient_Transport_Layer_Protection_(OWASP-EN-002) - Zukunftssicher verschlüsseln mit Perfect Forward Secrecy
http://www.heise.de/security/artikel/Zukunftssicher-Verschluesseln-mit-Perfect-Forward-Secrecy-1923800.html - SSL Labs: Deploying Forward Secrecy
https://community.qualys.com/blogs/securitylabs/2013/06/25/ssl-labs-deploying-forward-secrecy - Improving SSL Security for Forefront Threat Management Gateway (TMG) 2010 Published Web Sites
http://www.isaserver.org/articles-tutorials/configuration-security/improving-ssl-security-forefront-threat-management-gateway-tmg-2010-published-web-sites.html - Perfect Forward Secrecy (PFS) for IIS, TMG and UAG (and other services)
http://secattic.blogspot.com/2013/08/perfect-forward-secrecy-pfs-for-iis-tmg.html - Cipher Suite Names
http://www.openssl.org/docs/apps/ciphers.html#CIPHER_SUITE_NAMES