Shibboleth Infrastruktur an der RWTH Aachen Aspekte eines redundanten und sicheren Betriebs Kohler IT Center der RWTH Aachen University
Übersicht Ausgangspunkt Ziele Infrastruktur Redundante IdP/DS Server LDAP (inkl. F5 Loadbalancer) TMG Host Security Diverse Security Header (Apache) Ausblick und Verweise 2
Ausgangspunkt Infrastruktur zwei Zonen auf Solaris in der Mailinginfrastruktur Nautilus Load Balancer schaltete auf Standby-Server Betrieb 2006 bis 4. Q 2012 Probleme Nautilus alt (Mail-) Infrastruktur wurde abgelöst Betriebsunterbrechungen nicht vermeidbar 3
Ziele neue Infrastruktur Ausfallsicherheit / Redundanz Verteilung auf zwei Standorte ca. 65 lokale Service Provider darunter zentrale Dienste wie Selfservice IdM, Rollenverwaltung unterbrechungsfreier Betrieb z. B. bei Wartungen Rückgriff auf Software aus Repositories Vereinfachung der Wartung Sicherheit zeitnahe Wartung TLS, wo möglich 4
Infrastruktur: Redundante IdP/DS Server Entwicklung, Test, Produktion Memcache ipsec (Verschlüsselung auch UDP) memcachd Hosts (alle beteiligten IdP) iptables udp/11211 (allow: nur alle beteiligten IdP) ipsec, durchgängig SSL Apache nur 443 Ciphers (für TLS bzw. PFS) Zentrales Deployment von einem Source-Server Patchprozess / Updates unterbrechungsfrei Zentrales Logging (logback) Tomcat / Java (openjdk-7-jre-headless!) aus Debian Repositories 5
Infrastruktur: Übersicht 6
Infrastruktur: LDAP Backend Big IP F5 Load Balancer HA-Cluster (active + hot-standby) ausfallfreies Loadbalancing auch bei Software-Upgrades SSL offloading in Hardware möglich aber aus Sicherheitsgründen direktes durchleiten Multi-Master Betrieb (3 Server) ldaps:// strikte ACL für LDAP-Zweige Firewall 7
Infrastruktur: zentrales Deployment IdP Software + Ergänzungen 8
Infrastruktur: zentrales Deployment IdP Software + Ergänzungen 9
Infrastruktur: zentrales Deployment IdP Software + Ergänzungen 10
Infrastruktur: zentrales Deployment Attribut-Filter und Metadaten 11
Infrastruktur: zentrales Deployment Attribut-Filter und Metadaten 12
Infrastruktur: zentrales Deployment Attribut-Filter und Metadaten 13
Infrastruktur: Reverse Proxy (TMG) gezielte Port (Protokoll) / Pfadfreigaben Windows load balancing beide IdP möglichst gleich ausgelastet (Cookie based) X-forwarded-for (Quell-IP) / mod_rpaf (holt IP aus Header) einzelne Listener für unterschiedliche Dienste Eigene IP + Zertifikat und DNS Eintrag SSL terminiert, backend Kommunikation auch SSL PFS (perfect forward security, ssl ciphers; in Zukunft auch im backend Verkehr) TMG Auslaufmodell (Support abgekündigt) Alternativen (MS UAG, BigIP F5, CitrixNetScaler, Sophos UTM, Checkpoint Secure Web Gateway) 14
Infrastruktur: Reverse Proxy (TMG) 15
Infrastruktur: Caching? Pitfall? Caching vom TMG bei Shibboleth nicht gewünscht Bei SP und gerne auch IdP Apache (Header-) Konfiguration: Header set Cache-Control "private, no-cache, no-store, must-revalidate, max-age=0, s-maxage=0, proxy-revalidate" Header set Pragma "no-cache" Apache2 Modul konfigurieren $ sudo apt-get install libapache2-mod-rpaf # cat << EOT >> /etc/apache2/mods-available/rpaf.conf <IfModule rpaf_module> RPAFenable On RPAFsethostname On RPAFproxy_ips [IP 1] [IP 2] 127.0.0.1 ::1 RPAFheader X-Forwarded-For </IfModule> 16
Infrastruktur: Host Security SSH Zugriff nur von zentraler Hopping Station SSH Zugriff auf dedizierte Benutzer reglementiert (ssh.key et al.) partielle iptables Regeln für IdP: OUTPUT tcp/80 und tcp/443 zu ausgewählten Zielen (Metadaten, Exporte) Skripte werden i.d.r. per sudo ausgeführt 17
Diverse Security Header (Apache) Header unset ETag HTTP Strict Transport Security (HSTS, Apache) Wir haben: Header add Strict-Transport-Security "max-age=31536000; includesubdomains" Wir wollen: Header add Strict-Transport-Security "max-age=31536000; includesubdomains"; preload Header always append X-Frame-Options: deny Header set X-Content-Type-Options: nosniff Header add X-XSS-Protection: "1; mode=block" Header add Access-Control-Allow-Origin " ${FQDN_IDP} " Header set Public-Key-Pins: "max-age=2592000; pinsha256='vccpnuuy4okvtxrgbctvd/9mzh4rrrxuubacpz2qppk=';" 18
Diverse Security Header (Apache) Content Security Policy (CSP, Apache) Header set Content-Security-Policy: "default-src https: 'unsafe-inline'; connect-src https://${fqdn_idp}'; audio-src 'none'; script-src https: 'unsafe-inline' Header set X-WebKit-CSP: "default-src https: 'unsafe-inline'; connect-src 'https://${fqdn_idp}'; audio-src 'none'; script-src 'unsafe-inline'" 19
Ausblick und Verweise uapprove Umstieg auf CentOS 7 Austausch TMG dann auch SPDY, TCP Fast Open/TFO und Encrypt-then-MAC DANE (TLSA, DNS-Sec RFC 6698) Docker (container/chroot, lxc) Ggf. mit SELinux (Secure Containers with SELinux) SELinux und mod_selinux Stop disabling SELinux mod_security IPv6 20
Ausblick und Verweise Zusätzliche Protokoll-/Sicherheitserweiterungen Multi Path TCP (MPTCP) Online Certificate Status Protocol (OCSP) stapling (Apache >=2.3) Mehr-Wege-Authentifizierung Public Key Pinning Extension for HTTP (HPKP) Trust Assertions for Certificate Keys (TACK) keyless SSL 21
Ausblick und Verweise CSP https://developer.mozilla.org/en-us/docs/web/security/csp/csp_policy_directives http://content-security-policy.com/ https://www.owasp.org/index.php/content_security_policy 22
Viele Dank! Und Tschüss. 23