380 likes | 597 Views
TLS ve Windows. Ondřej Ševeček MCM:Directory | MVP:Security | CEH ondrej @sevecek.com | sevecek.com. O čem bude řeč?. Co je TLS a SSL Jaké používá algoritmy a jaké potřebuje certifikáty Jakou m á TLS podporu v operačních systémech Útoky, záplaty a kompatibilita
E N D
TLS ve Windows Ondřej Ševeček MCM:Directory| MVP:Security| CEH ondrej@sevecek.com | sevecek.com
O čem bude řeč? • Co je TLS a SSL • Jaké používá algoritmy a jaké potřebuje certifikáty • Jakou má TLS podporu v operačních systémech • Útoky, záplaty a kompatibilita • Implementace a příklady • Ověřování klientským certifikátem
Co je TLS • Transport Layer Security • kryptografický protokol pro bezpečné přenášení dat v aplikační vrstvě TCP/IP • RSA, RC4, DES, AES, ECDH, MD5, … • standardní forma staršího NetScape SSL • Šifrování a ověření identity serveru • HTTPS (SSTP, IPHTTPS), LDAPS, RDP, SMTPS, Hyper-V Replication, 802.1x EAP • Ověření uživatele (klienta) • TLS clientcertificateauthenticationand logon • Vyžaduje certifikát serveru • RSA, DSA, ECDSA
Co je TLS Server Certificate TLS tunnel Client Server ApplicationtrafficHTTP, LDAP, SMTP, RDP
Použití klientských certifikátů Server Certificate ClientCertificate TLS tunnel Client Server ApplicationtrafficHTTP, LDAP, SMTP, RDP
Certifikát serveru • Přenos klíče • RSA keyexchange • (EC)DH keyexchange • Ověření identity serveru • Subject a SAN rozšíření certifikátů • časová platnost • důvěryhodný řetěz autorit • CRL/OCSP • by default až IE8
Historie TLS • SSL 2.0 (1995) a SSL 3.0 (1996) • not FIPS compliant • TLS 1.0 (1999) • IETF RFC 2246 • vyžadováno na kompatibilitu s FIPS • TLS 1.1 (2006) • až od Windows 7 a Windows 2008 R2 • vypnuto ve výchozím stavu • TLS 1.2 (2008)
Schannel • COM knihovna pro vytváření TLS spojení • SCHANNELSecurity Provider • HKLM\System\CCS\Control\SecurityProviders\SCHANNEL • Group Policy • Policies / Administrative Templates / Network / SSL
SSL ciphersuites • SSL_RC4_128_WITH_MD5 • SSL_DES_192_EDE3_CBC_WITH_MD5 • SSL_RC2_CBC_128_CBC_WITH_MD5 • SSL_DES_64_CBC_WITH_MD5 • SSL_RC4_128_EXPORT40_WITH_MD5
Windows XP/2003- TLS 1.0/SSL cipher suites (no AES) • TLS_RSA_WITH_RC4_128_MD5 • TLS_RSA_WITH_RC4_128_SHA • TLS_RSA_WITH_3DES_EDE_CBC_SHA • TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA • TLS_RSA_WITH_DES_CBC_SHA • TLS_DHE_DSS_WITH_DES_CBC_SHA • TLS_RSA_EXPORT1024_WITH_RC4_56_SHA • TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA • TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA • TLS_RSA_EXPORT_WITH_RC4_40_MD5 • TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 • TLS_RSA_WITH_NULL_MD5 • TLS_RSA_WITH_NULL_SHA • SSL_RSA_WITH_RC4_128_SHA • SSL_RSA_WITH_3DES_EDE_CBC_SHA • SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA • SSL_RSA_WITH_RC4_128_MD5
Windows Vista/2008+ TLS v1.0 cipher suites (AES/EC/SHA1, no SHA2) • TLS_RSA_WITH_AES_128_CBC_SHA • TLS_RSA_WITH_AES_256_CBC_SHA • TLS_RSA_WITH_RC4_128_SHA • TLS_RSA_WITH_3DES_EDE_CBC_SHA • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA • TLS_DHE_DSS_WITH_AES_128_CBC_SHA • TLS_DHE_DSS_WITH_AES_256_CBC_SHA • TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA • TLS_RSA_WITH_RC4_128_MD5 • SSL_RSA_WITH_RC4_128_SHA • SSL_RSA_WITH_3DES_EDE_CBC_SHA • SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA • SSL_RSA_WITH_RC4_128_MD5
Podpora AES na Windows 2003 • http://support.microsoft.com/kb/948963 • TLS_RSA_WITH_AES_128_CBC_SHA AES128-SHA • TLS_RSA_WITH_AES_256_CBC_SHA AES256-SHA
Windows 7/2008 R2+ TLS v1.1 ciphersuites (AES/EC/SHA2) • TLS_RSA_WITH_AES_128_CBC_SHA256 • TLS_RSA_WITH_AES_128_CBC_SHA • TLS_RSA_WITH_AES_256_CBC_SHA256 • TLS_RSA_WITH_AES_256_CBC_SHA • TLS_RSA_WITH_RC4_128_SHA • TLS_RSA_WITH_3DES_EDE_CBC_SHA • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256 • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384 • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384 • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256 • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256 • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256 • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA384_P384 • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA384_P384 • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256 • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384 • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256 • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384 • TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 • TLS_DHE_DSS_WITH_AES_128_CBC_SHA • TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 • TLS_DHE_DSS_WITH_AES_256_CBC_SHA • TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA • TLS_RSA_WITH_RC4_128_MD5 • SSL_CK_RC4_128_WITH_MD5 • SSL_CK_DES_192_EDE3_CBC_WITH_MD5 • TLS_RSA_WITH_NULL_SHA256 • TLS_RSA_WITH_NULL_SHA • SSL_RSA_WITH_RC4_128_SHA • SSL_RSA_WITH_3DES_EDE_CBC_SHA • SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA • SSL_RSA_WITH_RC4_128_MD5
FIPS kompatibilita • ZakazujeSSL 2.0 a SSL 3.0 • Umožňuje jenTLS 1.0 a novější • RDP toto podporuje až od Windows 2003 SP1 • RDP klient5.2+ • Nemůže používat RC4 • Nemůže používatMD5
Útoky • SSL 2.0 kompletně diskreditováno • TLS 1.0 a SSL 3.0 insecurerenegotiationattack • vypnuto dočasně úplně pomocí KB977377 • securerenegotiation zpátky zapnuto KB980436, který implementuje RFC 5746 • TLS 1.0 BEAST attack • útok pouze na klienta, na serverech to neovlivníte • řeší KB2643584 a KB2638806 • DoSvulnerability • server vcelku hodně pracuje oproti klientovi • renegotiation je ještě o hodně náročnější na prostředky • RC4 je příliš slabé (2013)
Ochrana proti renegoútoku (KB980436) • Nainstalujte KB980436 • jak na servery tak klienty • tím pádem klienti i servery automaticky dělají securerenegotiation • servery i klienti přidávají do komunikace RenegoIndicationExtension, aby to druhá strana věděla • by default všichni dělají securerenego, ale přijímají i insecurerenego • Pokud chcete vynutit securerenego, zapněte v registrech • HKLM\System\CCS\Control\SecurityProviders\SCHANNELna serveru: AllowInsecureRenegoClients = DWORD = 0na klientovi: AllowInsecureRenegoServers = DWORD = 0 • Klienti se nepřipojí na server, který neumí securerenego (RFC 5746) • bez ohledu na to, jestli je nebo není potřeba renego • Servery odmítnou klienty, kteří neumí securerenego • bez ohledu na to, jestli je nebo není potřeba renego • Pokud mátebez ohledu na registry problém, že se klienti nemohou někam připojit, i když není zrovna renego vůbec potřeba, zapněte na klientech • UseScsvForTls = DWORD = 1 • místo RenegotiationIndicationExtension to posílá suitu 00FF, která neRFC5746 serverům nevadí
Ochrana proti BEAST útoku (KB2643584) • Nainstalujte KB2643584 nebo 2638806 (XP/2003) • všechna klientova data chodí na více, než jeden paket • ve výchozím stavu si to musí klientova aplikace vyžádat (SendExtraRecord= 0) • IE k tomu potřebuje další záplatu • Můžete vynutit rozdělování na více paketů pro všechny aplikace • HKLM\System\CCS\Control\SecurityProviders\SCHANNELSendExtraRecord = DWORD = 1 • ale možná se na některé servery nedostanete • RDP s NLA, SQL Server, SSTP • Můžete to úplně vypnout • SendExtraRecord = DWORD = 2
Jak poznám že mám záplatu • PowerShell • gwmiwin32_quickfixengineering | ? { $_.HotfixId -eq 'KB980436' }
Jak vypnout SSL 2.0 • HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols • \PCT 1.0 • \SSL 2.0 • \Client • Enabled = DWORD = 0 • \Server • Enabled = DWORD = 0
Jak zapnout TLS 1.1 a 1.2 • HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols • \TLS 1.1 • \TLS 1.2 • \Client • Enabled = DWORD = 1 • DisabledByDefault = DWORD = 0 • \Server • Enabled = DWORD = 1 • DisabledByDefault = DWORD = 0
Omezení a prioritizace algoritmů (2003-) • http://support.microsoft.com/kb/245030 • HKLM\System\CCS\Control\SecurityProviders\SCHANNEL\Ciphers
Testování TLS • www.ssllabs.com
Certifikáty • BuďRSA Exchange na serveru • funguje i se SSL 3.0 • někdy vyžaduje i signature(LDAPS, Exchange) • neboRSA/ECDH Signature na serveru • neboDSA/DH Signature na serveru • funguje i se SSL 3.0 • neboECDSA/ECDH Signature na serveru
RSA certifikáty • 2048 široce podporováno na klientech • 1024 je slabé • menší než 1024 (například 1023) je blokováno KB2661254 • SHA-1 stále lepší než 12 znaková komplexní hesla • http://www.sevecek.com/Lists/Posts/Post.aspx?ID=145 • SHA-2 • serveru je to jedno (XP/2003 potřebují KB968730 kvůli autoenrollmentu) • klient to ověří od Windows XP SP3 • klient to ověří od KB938397 pro Windows 2003 • Alternatesignaturealgorithm (PKCS#1 v2.1) • vůbec použitelné až od Vista
HTTP.SYS a TLS • IIS interface? • NETSH HTTP SHOW SSLCERT • DELETE SSLCERT • ADD SSLCERT • AppId • http://www.sevecek.com/Lists/Posts/Post.aspx?ID=9 • IIS: {4dc3e181-e14b-4a21-b022-59fc669b0914} • SSTP: {ba195980-cd49-458b-9e23-c84ee0abcd75} • SQL RS: {1d40ebc7-1983-4ac5-82aa-1e17a7ae9a0e} • WinRM: {afebb9ad-9b97-4a91-9ab5-daf4d59122f6} • Hyper-V: {fed10a98-8cb9-41e2-8608-264b923c2623}
CSP vs. CNG • IE a HTTP.SYS podporujeoboje CSP i CNG • Windows 2003 Schannel a starší potřebuje pouze • RSA SchannelCryptographicService Provider při použití RSA certifikátu serveru • DH SchannelCryptographicService Provider při použití DSA certifikátu serveru
Více web serverů a hlavička host Server Certificatewww.gopas.cz TLS tunnel IP: 10.10.0.37 HTTP GET /uri.htm User-Agent: Internet ExplorerAccept-Language: cs-cz Host: www.gopas.cz Client Server
Více web serverů a hlavička host Server Certificatewww.gopas.cz TLS tunnel IP: 10.10.0.37 Server HTTP GET /uri.htm Host: www.gopas.cz Client HTTP GET /uri.htm Host: www.sevecek.com Server
Více web serverů a hlavička host Server Certificate*.gopas.cz TLS tunnel IP: 10.10.0.37 Server HTTP GET /uri.htm Host: www.gopas.cz Client HTTP GET /uri.htm Host: kurzy.gopas.cz Server
Server Name Indication (SNI) • Podporováno odserveru Windows 2012 • Schannel a HTTP.SYS • Klienti alespoň Windows Vista/2008 • musí to ale chtít aplikace • IE 7 • Firefox 2.0 • Opera 8.0 • Opera Mobile 10.1 • Chrome 6 • Safari 2.1 • Windows Phone 7
Ověření klientským certifikátem • Nutno k ustavení TLS tunelu • ještě dříve, než mohou vůbec projít aplikační data, byť i jen jednoduché HTTP hlavičky např. • Omezení anonymních pokusů o zkoušení hesla • možno použít přímo k ověřování uživatelů • Komplikace použití z cizích strojů • export certifikátu, čipová karta
Požadavky na klientský certifikát • Digital signature • je slušné nemít uvnitř nonrepudiation • Přihlašování vůči AD • SAN musí obsahovat UPN • nebo musí být certifikát mapován na účet v AD "ručně" • issuing CA musí být NTAuth • Není nutné, aby ho vydala stejná CA jako certifikát serveru ($$$) • veřejný certifikát serveru • vlastní vnitřní certifikát uživatele
Certificate Trust List (CTL) • Server zasílá klientům seznam svých důvěryhodných root CA • Pokud je jich moc, je to zbytečná zátěž kabelu • Možno definovat omezení (OID) na klientský certifikát • CTL vlastní OID: 1.3.6.1.4.1.311.10.1 • Store in IntermediateCAs • Applywith NETSH HTTP ADD SSLCERT • SSLCTLIDENTIFIER = ctlname • SSLCTLSTORENAME = CA
Reference • Schannelciphersuites in Windows Vista • http://msdn.microsoft.com/en-us/library/windows/desktop/ff468651(v=vs.85).aspx • Ciphersuites in Schannel in Windows 7 and newer • http://msdn.microsoft.com/en-us/library/windows/desktop/aa374757(v=vs.85).aspx • Ciphersuites in Schannel in Windows XP and 2003 • http://msdn.microsoft.com/en-us/library/windows/desktop/aa380512(v=vs.85).aspx • AES support in Schannel in Windows 2003 • http://support.microsoft.com/kb/948963
Děkuji za pozornost! • Příbuzné kurzy • GOC173 - PKI deployment