Zabezpečení Domino HTTP Josef Honc, M-COM 11. 11. 2014
Hlavní partneři a prezentátoři
Zabezpečení domino HTTP serveru Základní typy útoků a ochrana proti nim Přístup k serveru Komunikační protokoly
Základní typy útoků Znemožnění poskytování služby (DoS) Přetížení pomocí DDoS, případně zneužití zranitelnosti služby nebo protokolu Získání neoprávněného přístupu k serveru resp. datům Uživatelské přístupové údaje – jméno, heslo, session cookie Zachycení a následné dešifrování přenášených dat Cookie: Zneužití zranitelností služeb, starších šifrovacích protokolů a algoritmů (CRIME, BEAST/Lucky13, BREACH, Heartbleed, Poodle) Heslo: Social engineering, Phishing, brute force
Jak se proti útokům chránit Aktualizace Nastavení „Best Practices“ Testování
Zabezpečení přístupu k serveru Enforce server access settings Use more secure Internet Passwords Internet password lockout Ochrana internetových hesel pomocí xACL Vynucení složitosti internetových hesel Nastavení cache pro změnu HTTP hesla
Enforce Server Access Settings
Use more secure Internet Passwords
Use more secure Internet Passwords
Use more secure Internet Passwords
Internet password lockout
Ochrana internetových hesel pomocí xACL Configuring xACLs to protect Internet Password fields in the Domino Directory http://www.ibm.com/support/docview.wss?rs=0&uid=swg21244808
Vynucení složitosti internetových hesel Od verze 8.5.1 za podmínek: ID Vault – včetně povolení pro iNotes UserID uloženo v poštovní databázi Heslo je změněno pomocí uživatelských předvoleb v iNotes How to implement a Custom Password Policy for iNotes users http://www.ibm.com/support/docview.wss?uid=swg21330456
Nastavení cache pro změnu HTTP hesla HTTP server udržuje v platnosti staré heslo 48 hod Cache nastavena z důvodu konsistence při replikaci Notes.ini: HTTP_Pwd_Change_Cache_Hours=0 Can the time in which a changed Internet password is cached ever be modified http://www.ibm.com/support/docview.wss?uid=swg21084375
Zabezpečení přenosové vrstvy Kryptografické protokoly Šifrovací algoritmy Optimalizace nastavení HTTP serveru
Kryptografické protokoly Domino podporuje nativně pouze SSL 3.0 (SSL2.0 standardně deaktivován) Podpora pro TLS1.0 v 9.0.1FP2HF384 (vydán 3.11.2014) IBM HTTP Server podporuje TLS 1.2 (Domino 9.0.x Windows) Defined Protocol Year SSL 1.0 n/a SSL 2.0 1995 SSL 3.0 1996 TLS 1.0 1999 TLS 1.1 2006 TLS 1.2 2008 TLS 1.3 TBD https://www.trustworthyinternet.org/ssl-pulse/ https://en.wikipedia.org/wiki/Transport_Layer_Security
Šifrovací algoritmy
Výchozí konfigurace Domino SSL 3.0 Selfsigned certifikát pomocí certsrv.nsf (512b public key, MD5 hash) Výchozí šifrovací algoritmy
Test konfigurace SSL
Platný certifikát 2048 bit SHA1
Povolení silnějších šifer
Povolení silnějších šifer
SSL_DISABLE_RENEGOTIATE=1 Zakázání insecure renegotiation pomocí parametru SSL_DISABLE_RENEGOTIATE=1 v notes.ini na domino serveru
9.0.1 FP2IF1 Výchozí konfigurace domino (bez úprave) jen s důvěryhodným certifikátem a výchozími středními šiframi (slabé šifry jsou po instalaci fixu implicitně zakázány)
9.0.1 FP2IF1 – silnější šifry Po povolení silnějších šifer (AES) – slabé šifry jsou po instalaci fixu implicitně zakázány Lepší nastavení není možné, nelze kompletně vypnout SSLv3, aktivovat Forward Secrecy nebo Strict Transport Security
Podpora SHA-2 v Notes/Domino 9.x Domino 9.0.1 FP2 IF1 / Domino 9.0 IF6 Notes 9.0.1 FP2 IF2 Kyrtool (KYRTool_9x_ClientServer) – import klíču a certifikátů z PEM do KYR Planned SHA-2 deliveries for IBM Domino 9.x http://www.ibm.com/support/docview.wss?uid=swg21418982
IBM HTTP server + Podpora TLS1.2 Založen na Apache 2.2.8 Součástí Domino 9.0.x na OS Windows Nepodporuje Perfect Forward Secrecy Is it possible to run IBM HTTP Server (IHS) on the same computer as a Domino server? http://www-01.ibm.com/support/docview.wss?uid=swg21612316
IBM HTTP Server
IBM HTTP server
Konfigurační úpravy v domino.conf LoadModule rewrite_module modules/mod_rewrite.so RewriteEngine on #presmerovani HTTP na HTTPS RewriteCond %{SERVER_PORT}=80 RewriteRule ^(.*) https://%{SERVER_NAME}%{REQUEST_URI} [R,L] #zakazani metod TRACK a TRACE RewriteCond %{REQUEST_METHOD} ^TRACE RewriteRule .* - [F] RewriteCond %{REQUEST_METHOD} ^TRACK <VirtualHost *:443> SSLEnable SSLProtocolDisable SSLv2 SSLProtocolDisable SSLv3 #nastaveni HSTS Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains„ # preferovane sifrovaci alogoritmy SSLCipherSpec ALL NONE SSLCipherSpec TLSv12 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 SSLCipherSpec TLSv12 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 SSLCipherSpec TLSv12 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 SSLCipherSpec TLSv12 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 SSLCipherSpec ALL TLS_RSA_WITH_AES_128_GCM_SHA256 SSLCipherSpec ALL TLS_RSA_WITH_AES_256_GCM_SHA384 SSLCipherSpec ALL TLS_RSA_WITH_AES_128_CBC_SHA256 SSLCipherSpec ALL TLS_RSA_WITH_AES_256_CBC_SHA256 SSLCipherSpec ALL TLS_RSA_WITH_AES_128_CBC_SHA SSLCipherSpec ALL TLS_RSA_WITH_AES_256_CBC_SHA SSLCipherSpec ALL SSL_RSA_WITH_3DES_EDE_CBC_SHA </VirtualHost> KeyFile c:\IBM\Domino\ihs\sutol2.kdb SSLDisable Kompletní vypnutí SSLv3, komunikace je výhradně protokoly TLSv1.0 a vyšší
IBM HTTP server
Alternativní řešení reverzní proxy Apache HTTP server Nginx Pound Reverse proxy
Nginx - default
Nginx – po ladění Po zapnutí Strict Transport Security. Kompletní konfigurace nginx, pozor tato je z windows, což produkčně nedoporučuju. #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 0.0.0.0:80; server_name sutol2.m-com.cz; server_tokens off; access_log logs/sutol2_http.log main; location / { return 301 https://$host$request_uri; proxy_set_header Host $http_host; error_page 500 502 503 504 /err/50x.html; location /err { root c:/nginx/html; # HTTPS server # listen 0.0.0.0:443; server_name sutol2.m-com.cz.cz; access_log logs/sutol2.log main; ssl on; ssl_certificate sutol2.crt; ssl_certificate_key sutol2.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"; # podpora RC4 pro starší klienty, kteří nic lepšího neumí (XP, IE6) # ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS +RC4 RC4"; ssl_prefer_server_ciphers on; # silnejsi DH parametry – nutno vygenerovat pomoci OpenSSL ssl_dhparam dhparam.pem; # Enable HSTS (HTTP Strict Transport Security) add_header Strict-Transport-Security "max-age=15768000;includeSubDomains"; proxy_next_upstream off; proxy_redirect off; proxy_buffering off; client_max_body_size 20M; client_body_buffer_size 128k; #proxy_set_header X-Forwarded-Host $host; #proxy_set_header X-Forwarded-Server $host; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8080; # redirect server error pages to the static page /50x.html location /err {
Vyšší zabezpečení Domino HTTP Zakázání metod TRACE: HTTPDisableMethods=TRACE Skrytí identifikace HTTP serveru: DominoNoBanner=1 http://www-01.ibm.com/support/docview.wss?uid=swg21109279
Zabezpečení Session Cookie
Děkujeme za pozornost M-COM s.r.o. Josef Honc Email: josef.honc@m-com.cz Web: http://www.m-com.cz