IIS SSL hardening

Člověk by čekal, že když má server udržovaný, s aktuálními servisními balíčky a hotfixy, tak je v pohodě. Opak je však pravdou – je více než záhodno utahovat vše, co jde. A jednou z oblastí, které je dobré kontrolovat na všech verzích Windows Serveru, je SSL.

IIS od verze 5 volil protokoly v tomto sestupném pořadí – PCT 1.0, SSL 3.0, SSL 2.0. PCT 1.0 a SSL 2.0 jsou již obecně považovány za slabé, od Windows 7 a Windows Serveru 2008 R2 již nejsou ze strany klienta používané. Bohužel je však i ve Windows 2008 SSL 2.0 standardně zapnuté, takže si jej může případný útočník vynutit (řekne serveru, že nepodporuje SSL 2.0).

Platí, že TLSv1 = SSLv3. U starších OS je ještě doporučeno zakázat slabé šifry DES 56/56, NULL, RC2 40/128, RC4 40/128, RC4 56/128. Ty jsou opět u Windows Serveru 2008 R2 standardně vypnuté.

Nejsnazší cestou, jak zjistit aktuální stav, je spustit některý z online testů:

https://www.ssllabs.com/ssldb/index.html – hodně podrobný, trvá delší dobu

http://foundeo.com/products/iis-weak-ssl-ciphers/test.cfm – jednodušší, rychlý výsledek

https://tls.woodgrovebank.com/ – Microsoftí testovací sajta, v řádku Serveru auth lze zjistit, jaké šifrování podporuje klientský prohlížeč

Pro úplnost si sem píšu ještě odkaz na Apache kvůli Subversion:

http://blog.zenone.org/2009/03/pci-compliance-disable-sslv2-and-weak.html - včetně openssl kontroly a instrukcí pro Apache v2

U W2008 R2 stačí vytvořit:

HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server (musí se vytvořit)
Create "Enabled" DWORD and set it to "0".

U W2000/W2003 je pak zapotřebí upravit/vytvořit vícero záznamů:

HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server (musí se vytvořit)
Value: Enabled
Type: REG_DWORD
Data: 0x0

HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\PCT 1.0\Server
Value: Enabled
Type: REG_DWORD
Data: 0x0

nebo

Value: DisabledByDefault
Type: REG_DWORD
Data: 0x1

(má to stejný efekt). A teď je u W2000/W2003 potřeba omezit slabé šifry:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\DES 56/56]
"Enabled"=dword:0000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\NULL]
"Enabled"=dword:0000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 40/128]
"Enabled"=dword:0000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 56/128]
"Enabled"=dword:0000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128]
"Enabled"=dword:0000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128]
"Enabled"=dword:0000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 64/128]
"Enabled"=dword:0000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\PCT 1.0\Server]
"Enabled"=dword:0000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server]
"Enabled"=dword:00000000

Po vložení potřebných hodnot do registrů je nutné restartovat server a zopakovat online test.

Aktuální verzí je TLSv1.2, které přináší podporu cifer AES-256/SHA-256. Ten je již ve W7 i W2008 R2 obsažen, ale není standardně povolen. S nastavováním TLSv1.2 nebo TLSv1.1 bych však byl zatím opatrný, protože Visty i W2008 non-R2 (stejně jako starší W2003) podporují maximálně TLSv1.0. Navíc mají nová šifrování pochopitelně negativní dopad na zátěž CPU.

Enable TLS 1.2 (AES-256/SHA-256) in IIS 7.5, Server 2008 r2, WIndows 7 – obsahuje PowerShell skript, který povolí TLS 1.2 na straně klienta i serveru, dále obsahuje popis, jak pomocí Group Policy privilegovat nové šifrování AES-256/SHA-256.

Zobrazit komentáře