Webserver Security Kristian Köhntopp NetUSE AG, Kiel "Gehackt" • "Hacken" einer Website ist ein Angriff auf – Verfügbarkeit – Integrität – Vertraulichkeit Copyright ©2000 by NetUSE AG 1 Wer greift an? • Zwei große Gruppen: – "Script Kiddies" • Angreifer ohne Insiderwissen und ohne tiefergehende Ausbildung. • Verwenden meist vorgefertigte Angriffswerkzeuge. • Greifen ungerichtet an (Scanning) und brechen in eine große Zahl von Systemen ein. Copyright ©2000 by NetUSE AG • "Insider" – (Ex-)Mitarbeiter et. al. • Teilweise weitgehendes Wissen über Infrastruktur. • Verwendet Systemtools, Angriffswerkzeuge und selbstgeschriebene, maßgeschneiderte Programme ("Das Einbruchswerkzeug sitzt zwischen den Ohren"). • Will gezielt an bestimmte Netzwerkressourcen herankommen. 1 Welche Ziele verfolgen Angreifer? • "Script Kiddies": • "Insider": – – – – Warez-Site IRC "Trading-Bots" Bandbreite Paßworte als Handelsware Copyright ©2000 by NetUSE AG – Rache – spezifische Informationen aus dem Intranetwork • Kundenstammdaten • Kundenverkehrsdaten 1 Was wird angegriffen? • Netzwerkkomponenten – Router – Firewalls – Switches • Ziel: – Angriffsquelle verschleiern – Stepping Stone – Netzwerktopologie ermitteln – Netzwerkverkehr belauschen Copyright ©2000 by NetUSE AG • Server (eigentliches Ziel) – Server-Betriebssystem – Webserver – Webanwendung • Ziel: – Zugang zum ServerBetriebssystem – Zugang zu den Zieldaten 1 Was ist die Folge eines Angriffs? • Kompromittierte • Kompromittierter Server: Netzwerkkomponente: – Angreifer hat detaillierte Information über die Topologie. – Angreifer kann Routing beeinflussen und IPAdressen spoofen. – Angreifer kann unverschlüsselten Datenverkehr abhören. – Transitivität! Copyright ©2000 by NetUSE AG – Angreifer hat Zugriff auf Daten und Geheimnisse auf dem Server. – Angreifer hat die Systeminstallation kompromittiert ("Der Server lügt"). – Angreifer kann unverschlüsselten Datenverkehr abhören. – Transitivität! 1 Server: Die Drei Kardinalfehler • Betriebssystem: – Der Server bietet Dienste an, die er nicht anbieten muß/sollte. • Webserver: – Der Server liefert Daten im Web, die dort nicht stehen müssen/sollten. • Webanwendung: – Der Server glaubt Daten, die nicht aus vertrauenswürdigen Quellen stammen. Copyright ©2000 by NetUSE AG • • • Server bietet Dienste an: – Zugriff auf NFS Fileshares von überall (FH Lüneburg) – Zugriff auf Datenbank von überall (Buchhandel.de) – Zugriff auf RPC-Dienste (Sony Music.de) Server liefert Dateien: – Logfile des Webshops mit Kundenund CC-Daten (diverse) – Images mit Auflösung (Survivor TV Show) Server glaubt Daten: – Preisinfo als Zustand beim Anwender gehalten (verschiedene Videoläden) – Session-IDs dicht besetzt (ein anderer Buchladen) – Pfadnamen als URL-Parameter 1 Problem 1: Ein Server bietet zuviele Dienste an • Warum? • Standardinstallation: – Standardinstallation des Herstellers. – Installationszugänge für Produktion nicht abgeschaltet. – Defaultuser/Zugänge – Wartungszugänge allgemein aufrufbar (kein Extranet-Konzept). – Fehlendes BetreiberKnowhow. Copyright ©2000 by NetUSE AG – Optimiert für Intranets. – Optimiert für einfache Handhabung. – fehlende Patches. • Defaultuser: – "sa"/"", "system"/"manager", "scott"/"tiger", ... • Kein Extranet-Konzept: – Wartungszugänge nur verschlüsselt (ssh, SSL, VPN). – Keine Wege aus der Produktion ins Intranet. 1 Überflüssige Dienste • Standardinstallation (UNIX): – Webserver für • Manualpages (mehrere) • Systemadministration • Backupsteuerung – RPC-Server für • Backupsteuerung (Legato) • Systemadministration • Desktop-Komponenten • Network Filesystems • Interesting ports on jayniz.de: Port State Protocol Service 21 open tcp ftp 22 open tcp ssh 25 open tcp smtp 53 open tcp domain 80 open tcp http 111 open tcp sunrpc 113 open tcp auth 199 open tcp smux 443 open tcp https 515 open tcp printer 1024 open tcp unknown 3306 open tcp mysql 6666 open tcp irc-serv 7000 open tcp afs3-fileserver Nmap run completed -- 1 IP address (1 host up) scanned in 4 seconds – (Datenbanken) • Oracle, MySQL • Application-Server Copyright ©2000 by NetUSE AG 1 Notwendige Dienste • Notwendig sind meist nur zwei Dienste: – Domain Name System • aber nur outgoing? – HTTP/HTTPS • Zur Wartung oft weitere Dienste: – FTP • Zum Intranet oft weitere Dienste: – Datenbank/LDAP – rlogin/rcp, FTP/TELNET • besser: ssh/scp • besser: ssh, scp, rsync – telnet/rlogin • besser: ssh – POP/IMAP • besser: S/POP, S/IMAP Copyright ©2000 by NetUSE AG 1 Die Realität • Windows 2000, IIS Port 21 25 80 106 110 135 143 389 443 State open open open open open open open open open Protocol Service tcp ftp tcp smtp tcp http tcp pop3pw tcp pop-3 tcp loc-srv tcp imap2 tcp ldap tcp https • AIX Export list for lueneburg.de: /stadtinf /usr/lib/cobol /usr/local /ora-client /user /usr/lpp/info /install /u /pd-software /var/spool/mail /u1 rzserv2.fh(everyone) (everyone) (everyone) 193.174.32.20 (everyone) (everyone) 193.174.32.20 (everyone) (everyone) (everyone) (everyone) Copyright ©2000 by NetUSE AG • Unix, Apache: • Port 21 22 23 25 80 110 111 • rpcinfo -p www.....de program vers proto port 100000 4 tcp 111 portmapper ... 100024 1 udp 32772 status ... 100021 1 udp 4045 nlockmgr State open open open open open open open Protocol tcp tcp tcp tcp tcp tcp tcp Service ftp ssh telnet smtp http pop-3 sunrpc 1 Abhilfe • Kein Kontakt zum Internet ohne Firewall: – Keine Ausnahmen während der Installation • Unterscheide Kundenkontakte und Extranet-Kontakte: – Wartungszugänge immer • verschlüsselt • besonders authentisiert • nur für bestimmte Adressen • Regelmäßige Kontrolle – Selbst von außen Ports scannen. – Selbst von außen "einbrechen". • Regelmäßige Updates – Bugtraq verfolgen. – Patchlisten verfolgen. – Update-Konzept für Produktionsrechner • Zykluszeit < 3 Monate • Transitivitäten prüfen – von außen über DMZ ins Intranet? Copyright ©2000 by NetUSE AG 1 Problem 2: Ein Server liefert sensible Dateien • Webserver als • Was passiert, wenn Transformationsmaschine für Pfadnamen – Regelsatz: • DocumentRoot /www • Alias /images /www2/images • ScriptAlias /cgi-bin /www2/prod/cgi Copyright ©2000 by NetUSE AG – das Serverlog nach /www/logs/access.log gelegt wird? – das Verzeichnis /images browseable ist oder Bildnamen ratbar sind? – /www/htpasswd abrufbar ist? – Include-Dateien in /www/include/ abgelegt sind? 1 Abhilfe • Verzeichnisse außerhalb DocumentRoot: • .../servers/www.kunde.de – /cgi-bin – /database – /logs – /pages – /php – /tmp • DocumentRoot .../pages • FTP-Root: .../www.kunde.de • Leider nicht sehr übliche Konfiguration Copyright ©2000 by NetUSE AG • Geschützte Verzeichnisse: – .../servers/www.kunde.de • /logs geschützt durch .htaccess • /php geschützt durch .htaccess • Vorteil: Auch in Hostingumgebungen realisierbar. • Nachteil: Verzeichnisse werden bei inkorrekter Serverkonfiguration exponiert. 1 Nebenkriegsschauplatz Webhosting • Zugriff durch CGI• Abhilfe: Programme aus Hostingumgebungen: – Kunde rät aus eigenen Verzeichnisnamen fremde Verzeichnisnamen – Kunde schreibt Programme, die Verzeichnisse anderer Kunden durchsuchen Copyright ©2000 by NetUSE AG – chroot()-Umgebungen, "virtuelle Maschinen" • Nachteil: – Aufwendige Realisierung – Hoher Speicherbedarf – Umständliches Debugging • Vorteil: – ausgezeichnete Systemsicherheit 1 Problem 3: Ein Server glaubt nicht •vertrauenswürdige Bedeutung einer Firewall im • DieDaten Umkehrung darf niemals Datenfluß: vergessen werden! – Protokollbegrenzer – Authentisierung – Trust Boundary • Bedeutung "Trust Boundary" – Systeme/Datenquellen innerhalb werden durch unsere Administration kontrolliert. – Sie liefern daher vertrauenswürde Daten. Copyright ©2000 by NetUSE AG – Systeme/Datenquellen außerhalb der Boundary sind unkontrollierbar. – Sie liefern daher verseuchte Daten. – Diese Daten müssen vor Gebrauch unbedingt dekontaminiert werden. – Sie dürfen die Boundary danach niemals wieder nach draußen verlassen. 1 Trust Boundary Webserver Firewall GET/POST Browser Cookie Request-Parameter LDAP Datenbank Lokal administrierte Systeme, Nicht vertrauenswürdige Systeme vertrauenswürdig? Copyright ©2000 by NetUSE AG 1 Ursache • Der 3. Kardinalfehler ist sehr häufig. Warum? – HTTP ist ein zustandsloses Protokoll. – Webanwendungen brauchen Zustand. – Viele Umgebungen bieten keine adäquate Unterstützung für Statekeeping. – Viele Entwickler stricken sich "halbe" Lösungen selbst. Copyright ©2000 by NetUSE AG Session ID = 17 Browser httpd PHP SQL 14: $cart 16: = ( 1322, 1332, 1908 ); $cart 17: = ( 1322, 1332, 1908 ); $cart = ( 1322, 1332, 1908 ); 1 Weitere Ursachen • Andere Gründe: – Aus Zeitdruck Prototypen in Produktion geben. • Rapid Prototyping ersetzt keine Designphase. • Es ergänzt die Analysephase. – Datei-Struktur der Anwendung vs. Datenfluß • Was passiert, wenn man ihr an anderen Stellen Daten übergibt? • Was passiert, wenn der Anwender URLs wahllos aufruft? – Eingabevalidierung ist mühsam. • Findet an allen Stellen Eingabevalidierung statt? • Ist diese vollständig? • An welcher Stelle übernimmt die Webanwendung Benutzerdaten? Copyright ©2000 by NetUSE AG 1 Abhilfe • Statekeeping durch Application Server managen lassen. • Anwendung als Automaten strukturieren. – Automaten lassen sich gut formal verifizieren. • Eingaben zentral prüfen – Application Server sollte Bibliothek zum Formularmanagement haben. – Datentypen strikt prüfen. Copyright ©2000 by NetUSE AG • Eigentlich überflüssig, aber immer wieder gesehen: – Pfadnamen oder gar Code haben in Parametern nichts zu suchen. 1