Webserver Security Kristian Köhntopp NetUSE AG, Kiel

Werbung
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
Herunterladen