Computer- und Netzwerksicherheit - Netzwerksicherheit

Aus FernFH MediaWiki
Version vom 26. Jänner 2022, 17:32 Uhr von VÖLKL Peter (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Netzwerksicherheit

Ein wesentlicher Aspekt der technischen Informationssicherheit ist die Netzwerksicherheit. Wenn Daten von einem Gerät zu einem anderen übertragen werden, muss die Einhaltung der Schutzziele (Vertraulichkeit, Integrität und Verfügbarkeit; siehe Lektion "Säulen der Informationssicherheit - CIA Triade") weiter gewährleistet werden. Eine genaue Betrachtung der Übertragungsverfahren und Zugriffe ist daher unbedingt erforderlich, da aufgrund der standardmäßigen Offenheit der aktuellen Übertragungstechnologien meist auch eine Vielzahl von Angriffsvektoren möglich ist.

Sicherheitsaspekte der Netzwerkschichten

Die Betrachtung der Netzwerksicherheit bedarf einer gesonderten Betrachtung der einzelnen Netzwerkschichten. In jeder Schicht gibt es eigene Schwachstellen und mögliche Maßnahmen der Absicherung.

Ein Überblick der Netzwerkschichten des OSI-Referenzmodells ist in Tabelle "OSI-Schichten und TCP/IP Modell" aufgelistet. Die Details dazu finden sich im Studienheft IT112 - Netzwerke und verteilte Systeme – von Univ.-Prof. DI Dr. Erich Schikuta, in Lektion 5.

Tabelle: OSI-Schichten und TCP/IP Modell

OSI-Modell
Einordnung Funktion TCP/IP-Modell
7 Anwendungsschicht (Application Layer) Anwendungs­orientiert Netzwerkschnittstelle zur Anwendung Anwendungs-Schicht
6


Darstellungsschicht (Presentation Layer)


Daten-Repräsentation und Verschlüsselung
5


Sitzungsschicht (Session Layer)


Kommunikation zwischen Rechnern
4 Transportschicht (Transport Layer) Transport­orientiert Ende-zu-Ende Verbindungen und Verlässlichkeit Host-zu-Host-Schicht
3


Vermittlungsschicht (Network Layer) Pfad Bestimmung und logische Adressierung Internet-Schicht
2


Sicherungsschicht (Data Link Layer) Physische Adressierung Netzzugangs-Schicht
1


Übertragungsschicht (Physical Layer)


Medium, Signal und binäre Übertragung

Die Absicherung der einzelnen Schichten – zur Erreichung der Schutzziele – erfolgt nun durch den Einsatz der acht spezifischen Sicherheitsmechanismen [Ec09, 737]:

  • Kryptografische Verfahren,
  • Digitale Signaturen,
  • Zugriffskontrollmechanismen,
  • Datenintegritätsmechanismen,
  • Austausch von Authentizitätsinformationen,
  • Anonymisierung und Verschleierung von Verkehrsdaten,
  • Mechanismen zur Kontrolle der Wegewahl und
  • Notariatsmechanismen.

Transportorientierte Sicherheitsaspekte

Das Ziel der transportorientierten Netzwerkschichten ist die Übertragung von Daten zwischen zwei Geräten. Dabei ist es meist erforderlich, die Weiterübertragung durch dazwischen liegende Geräte und auch unterschiedliche Übertragungsmedien in Anspruch zu nehmen. Dabei kann es zu Datenverlust und Datenänderungen kommen. Auch muss die Möglichkeit der Abhörung des Datenverkehrs in berücksichtigt werden.

Durch manipulierte und fehlerhafte Pakete kann es ebenfalls zu Beeinträchtigungen der beteiligten IT-Systeme kommen. Daher ist es erforderlich die Weiterleitung und Verarbeitung des Netzwerkverkehrs zu limitieren und alle ungewollten Pakete zu filtern.

Zur Absicherung des Transports werden in den unteren Schichten meist Firewalls (siehe weiter Kapitel "Firewalls") und in den oberen Schichten bestimmte Protokolle eingesetzt. Einige wichtige Absicherungstechnologien auf Protokollebene sind:

  • TLS (Transport Layer Security),
  • IPsec (Internet Protocol Security),
  • PPTP (Point-to-Point Tunnelling Protocol),
  • L2TP (Layer 2 Tunneling Protocol),
  • PPP (Point-to-Point Protocol),
  • PAP (Password Authentication Protocol),
  • CHAP (Challenge Handshake Authentication Protocol),
  • RADIUS (Remote Authentication Dial-In User Service),
  • DIAMETER (keine Abkürzung; Bezug des Namens zu RADIUS),
  • TACACS+ (Terminal Access Controller Access Control System) und
  • WPA2 (Wi-Fi Protected Access 2).

Nicht vergessen werden darf dabei auch auf das Übertragungsmedium selbst. So können ungesicherte Netzwerkdosen und schlecht abgesicherte WLAN Verbindungen ein leichtes Eintrittstor in das interne Netzwerk sein. Auch gibt es Möglichkeiten den Netzwerkverkehr über die entstehenden elektromagnetischen Felder der Kabel und beteiligten Geräte abzuhören und natürlich können in der anderen Richtung auch Störungen durch elektromagnetische Felder im Kabelumfeld (z.B. durch Stromleitungen, Motoren oder Generatoren) entstehen.

In Tabelle "Protokolle der transportorientierten Netzwerkschichten" sind die wesentlichen Aufgaben der hier aufgezählten Protokolle, sowie ihre Einordnung in die Netzwerkschichten zusammengefasst.

Tabelle: Protokolle der transportorientierten Netzwerkschichten

Protokoll Netzwerk-schicht Zweck
TLS (Transport Layer Security) OSI Layer 4 Neue Bezeichnung und Weiterentwicklung von SSL (Secure Socket Layer). Unterstützt Verschlüsselung und Authentifizierung mittels Zertifikaten.
IPsec (Internet Protocol Security) OSI Layer 3 Betrieb eines VPN Tunnels.
PPTP (Point-to-Point Tunnelling Protocol) OSI Layer 2 Betrieb eines VPN Tunnels.
L2TP (Layer 2 Tunneling Protocol) OSI Layer 2 Betrieb eines VPN Tunnels .
PPP (Point-to-Point Protocol) OSI Layer 2 Verbindungsaufbau über Einwahlleitungen (Modem). Nutzt PAP oder CHAP zur Authentifikation.
PAP (Password Authentication Protocol) OSI Layer 2 Authentifikation über das PPP.

Passwörter werden unverschlüsselt übertragen.

CHAP (Challenge Handshake Authentication Protocol) OSI Layer 2 Authentifikation über das PPP.

Keine Passwortübertragung, sondern Prüfung durch Hashwerte aus Passwort und gemeinsamer Zufallszahl.

RADIUS (Remote Authentication Dial-In User Service) OSI Layer 2 Authentifikation von Clients in Netzwerken.
DIAMETER (keine Abkürzung; Bezug des Namens zu RADIUS) OSI Layer 2 Weiterentwicklung von RADIUS mit größerem Funktionsumfang.
TACACS+ (Terminal Access Controller Access Control System) OSI Layer 2 Weiterentwicklung von RADIUS mit verschlüsselter Kommunikation.
WPA2 (Wi-Fi Protected Access 2) OSI Layer 2 Nachfolger von WEP (Wired Equivalent Privacy) und WPA. Authentifizierung und Verschlüsselung von WLAN-Verbindungen.

Anwendungsorientierte Sicherheitsaspekte

Die Absicherung von Netzwerken auf Anwendungsebene geschieht durch Protokolle und ihre Implementierung in den jeweiligen Applikationen. Die häufigsten Anwendungsgebiete sind dabei die sichere Kommunikation mit Webseiten und über E-Mail, sowie der Dateitransfer und Serverzugriff.

Für eine sichere Kommunikation zwischen Webseiten und Browsern wurde das HTTP (Hypertext Transfer Protokoll) Protokoll um die Möglichkeit eines Transportes mittels TLS (Transport Layer Security, vormals SSL) erweitert. Das daraus entstandene HTTPS (HTTP over SSL) Protokoll kombiniert somit ein Protokoll der Anwendungsschicht mit einem Protokoll der Transportschicht.

Durch die Möglichkeiten von TLS, einer verschlüsselten Kommunikation und der zertifikatsbasierten Authentifizierung der Kommunikationspartner, werden sichere Verbindungen zwischen Webserver und Internetbrowser ermöglicht. Je nach Ausprägung wird es nur zur Verschlüsselung, zur Authentifikation des Servers gegenüber dem Client oder sogar zur Authentifikation des Clients gegenüber dem Sever (mittels Clientzertifikat) genutzt.

Auch das File Transfer Protokoll (FTP) ist in einer um TLS erweiterten Version FTPS (FTP over SSL) verfügbar.

Sowohl HTTP, als auch FTP übertragen ihre Daten ohne die genannten TLS Erweiterungen gänzlich unverschlüsselt. Die Daten sind in den Ursprungsversionen dieser Protokolle auch nicht vor Manipulationen geschützt.

Zur Absicherung von E-Mail-Kommunikation wurde der E-Mail-Standard MIME (Multipurpose Internet Mail Extensions), welcher den Aufbau von E-Mail-Nachrichten regelt, mit S/MIME (Secure MIME) um die Möglichkeit zertifikatsbasierter Verschlüsselung und Signierung der Nachrichten erweitert.

Um eine sichere Verbindung zu Serverkonsolen zu ermöglichen, kann das Secure Shell (SSH) Protokoll eingesetzt werden. Es basiert auf einer zertifikatsbasierten Authentifizierung und Verschlüsselung. Ähnlich wie bei TLS kann diese sowohl über Server-, als auch über Clientzertifikate erfolgen. Die Übertragung der Konsolendaten zwischen Server und Client erfolgt textbasiert. Weiter ist es möglich, Dateien zu übertragen. Diese Protokollform wird dann als SFTP (SSH File Transfer Protokoll) bezeichnet.

Firewalls

Der Begriff „Firewall“ kommt von der bildlichen Vorstellung einer brennenden Barriere, welche nicht überwunden werden kann. Eine bessere Darstellung wäre dafür jedoch eher eine mittelalterliche Zugbrücke mit Wachposten, da eine Firewall nicht für alle unüberwindbar sein soll und bestimmte Reisende ungehindert durchlassen muss. Ein weiterer, besserer, Vergleich ist der einer Brandschutzwand mit einer Türe, die zwar alle Personen durchlässt, jedoch das Feuer (unerwünschtes) blockiert.

Eine Firewall steht immer zwischen zwei getrennten Teilen eines Computernetzwerks. Sie kontrolliert den gesamten Datenverkehr und lässt nur jene Daten durch, die den vorgegebenen Regeln entsprechen (siehe Abbildung "Grundprinzip einer Firewall").

Grundprinzip einer Firewall

Eine Firewall kann dabei auf unterschiedlichen Netzwerkschichten aufsetzen und ist meist Teil eines Netzwerkgerätes der jeweiligen Schicht (Bridge, Switch, Router oder Server).

Aktuelle Firewall-Lösungen decken inhaltlich meist mehrere Firewall-Typen ab. So sind meist Packet-Filter-Firewalls und Stateful Firewalls kombiniert. Application Level Firewalls sind häufig auch, in Form von Modulen, in die jeweiligen Serverdienste integriert, die sie schützen sollen.

Im Bereich der zunehmenden Virtualisierung von Rechnernetzen ist es nötig, eine Absicherung durch virtuelle Netzwerkhardware zu gewährleisten. Dazu gehören auch virtualisierte Firewalls mit demselben Funktionsumfang.

Die unterschiedlichen Typen von Firewalls sind:

  • Packet Filter Firewalls,
  • Stateful Firewalls,
  • Proxy Firewalls,
  • Circuit-Level Proxy-Firewalls,
  • Application-Level Proxy-Firewalls und
  • Kernel Proxy-Firewalls.

Bei Packet Filter Firewalls handelt es sich um die Implementierung von Regeln der transportierenden Netzwerkschichten. Dabei werden bestimmte Pakettypen und die zugehörigen Paketheader überprüft. Eine inhaltliche Prüfung der Daten erfolgt hierbei nicht. Über die Paketheader können Daten wie Herkunftsadresse und Zieladresse, das verwendete Transport-Protokoll, sowie die zugehörigen Portnummern, geprüft werden.

Zusätzlich zu den Packet Filter Firewalls werden bei Stateful Firewalls die Pakete nicht nur einzeln, sondern im Zusammenhang der gesamten zugehörigen Verbindung betrachtet. Das bedeutet, dass der Verbindungsaufbau und die laufende Kommunikation erkannt werden. Dadurch ist es möglich, auf unterschiedliche Phasen einer Netzwerktransaktion unterschiedlich zu reagieren. Auch können ungültige Pakete erkannt werden, die in der aktuellen Phase der jeweiligen Verbindung nicht zulässig sind. Die einzelnen Verbindungen werden dabei in der State-Table der Firewall verwaltet.

Bei den Proxy-Firewalls handelt es sich um Firewalls der anwendungsorientierten Schichten. Je nach der zugehörigen Schicht untergliedern sie weiter sich in eigene Untertypen.

Die Circuit-Level Proxy-Firewall befindet sich auf Ebene der Sitzungsschicht. Sie unterstützt Regeln zu einem breiten Spektrum an Anwendungsprotokollen, kann jedoch nicht den Inhalt der Anwendungsschicht überprüfen. Sie prüft lediglich den Header der Pakete der Sitzungsschicht und leitet daraus ab, welche Anwendungskommunikationen stattfinden sollen.

Eine detaillierte Analyse des Netzwerkverkehrs ermöglicht hingegen die Application-Level Proxy-Firewall. Sie befindet sich auf Ebene der Anwendungsschicht und kann damit den Inhalt des Netzwerkverkehrs auf Anwendungsebene überprüfen. Dies ermöglicht eine Erkennung von unerwünschten Zugriffen auf Anwendungen durch Auswertung der direkten Anwendungskommunikation. Ein Beispiel für eine Application-Level Proxy-Firewall ist ein HTTP-Proxy-Server mit Content Filterung und Virenschutz. Er kann dabei unerwünschte Webinhalte und Schadcode erkennen und dem Anwender statt diesem eine Fehlermeldung senden.

Bei Kernel Proxy-Firewalls ist die gesamte Funktionalität direkt im Betriebssystem-Kernel implementiert. Sie verarbeiten die Pakete mittels virtueller Netzwerk-Stacks. Das bedeutet, dass für jedes Paket ein individueller virtueller Bereich angelegt wird, in dem dann seine Überprüfung stattfindet. In diesem virtuellen Stack gibt es dann je Netzwerkschicht eigene Regelwerke. Da die gesamte Verarbeitung direkt im Kernel erfolgt, sind Kernel Proxy-Firewalls performanter als Application-Level Proxy-Firewalls.

Eine weitere wichtige Funktionalität von Firewalls ist das IP-Masquerading und die damit verbundene Network Address Translation (NAT). Damit wird ermöglicht, eine einzelne öffentliche IP-Adresse durch mehrere Clients mit privaten IP-Adressen zu nutzen. Auch können damit Port-Weiterleitungen von der öffentlichen IP-Adresse zu dahinter liegenden Servern mit privaten IP-Adressen realisiert werden. Die Details zu öffentlichen und privaten IP-Adressen und die Funktionsweise des IP-Masquerading wurden bereits im Studienheft IT112 - Netzwerke und verteilte Systeme – von Univ.-Prof. DI Dr. Erich Schikuta genauer erläutert.

Im Zusammenhang mit Firewalls werden oft Intrusion Detection Systeme (IDS) eingesetzt. Dabei handelt es sich um Dienste, die den gesamten Netzwerkverkehr einer bestimmten Verbindung übermittelt bekommen und diesen analysieren. Sie erkennen dabei mögliche Angriffsmuster und Auffälligkeiten in den Verbindungsinformationen. Sobald ein IDS eine Auffälligkeit erkennt, kann es diese dokumentieren und melden. In bestimmten Fällen kann es auch so konfiguriert werden, dass es neue Firewall-Regeln hinzufügt, die die auffälligen Verbindungen blockiert.

Für den Betrieb von Servern, die von außen erreichbar sein sollen (z.B. Webserver und E-Mail-Server), wird meist ein gesondertes Netzwerksegment eingerichtet. Dieses hat dann eigene Firewall-Regeln, welche den Zugriff der Server auf das interne Netzwerksegment stark einschränken. Dadurch wird diese, risikoreichere Zone, von dem internen Netzwerk getrennt und kann auch gesondert überwacht werden. Da hierbei einzelne Zugriffe von außen in diese weniger sichere Zone durchgelassen werden, wird sie als De-Militarisierte-Zone (DMZ) bezeichnet.

Virtuelle Private Netze (VPN)

Ein Virtuelles Privates Netz (VPN) dient der Vernetzung mehrerer Standorte über unsichere Datenleitungen (z.B. über das Internet). Dies ist oft erforderlich, wenn ein Unternehmen mehrere Standorte hat, oder wenn Mitarbeiter mobil arbeiten und dabei Zugriff auf das interne Netzwerk benötigen.

Bei einem VPN werden die Daten einer kompletten Netzwerkschicht verschlüsselt übertragen. Dies geschieht oft direkt über VPN Dienste, welche in die jeweilige Firewall-Lösung integriert sind. In Abbildung "VPN Verbindung zwischen zwei Standorten" ist eine VPN Verbindung dargestellt, die zwei Bürostandorte über das Internet miteinander verbindet. Das VPN ist dabei auf den Firewalls installiert, die gleichzeitig Gateways ins Internet sind. Die verschlüsselte Verbindung zwischen den beiden VPN-Endpunkten (in diesem Fall die Firewalls) wird als VPN-Tunnel bezeichnet.

VPN Verbindung zwischen zwei Standorten

Wenn ein einzelner Computer an ein VPN angebunden ist, wird der VPN Tunnel durch einen lokalen VPN Dienst des Computers an das Unternehmensnetz angebunden. Die lokal installierte Software wird dabei als VPN-Client und der Einstiegspunkt in das Unternehmensnetz als VPN-Gateway bezeichnet.

Wie der Schlüsseltausch und der Verbindungsaufbau für die gemeinsame Verbindung aussehen und welche Chiffren verwendet werden, hängt vom jeweiligen VPN Protokoll ab. Die meisten Protokolle unterstützen dabei mehrere unterschiedliche Chiffren um mit möglichst vielen Clients kompatibel sein zu können. Hier ist jedoch Vorsicht geboten, da diese großzügige Kompatibilität von Angreifern ausgenutzt werden kann, indem sie versuchen eine Verbindung mit einer möglichst schwachen Chiffre aufzubauen, um diese dann wiederum leichter analysieren zu können. Die verwendeten Chiffren sollten daher im VPN-Gateway sehr genau auf die Anforderungen möglichen VPN-Clients abgestimmt sein. Alle nicht benötigten Methoden sollten dann deaktiviert werden.

Der größere Aufwand bei einer VPN Verbindung ist immer der Verbindungsaufbau, da hier die Authentifikation, der Schlüsseltausch und die Vereinbarung der Chiffre erfolgt. Die Verschlüsselung der Datenleitung erfolgt dann meist über symmetrische Kryptographie-Methoden und ist daher wesentlich schneller.

Dies ist vergleichbar mit dem Graben eines Tunnels. Der Aufbau des Tunnels ist sehr schwierig und dauert lange (Tunnelbohrer, korrekte Bohrstrecke bis zum Endpunkt, Stützen der Tunnelwände,…). Sobald der Tunnel jedoch gegraben ist, kann dieser sehr einfach von beiden Seiten befahren werden.

Es gibt eine Vielzahl von VPN-Protokollen auf unterschiedlichen Netzwerkschichten. Einige der wichtigsten Protokolle sind in Tabelle "VPN-Protokolle" aufgelistet.

Tabelle: VPN-Protokolle

Protokoll Netzwerkschicht
PPTP (Point-to-Point Tunneling Protocol) OSI Layer 2
L2TP (Layer 2 Tunneling Protocol) OSI Layer 2
IPsec (Internet Protocol Security) OSI Layer 3
OpenVPN (Open Source VPN) OSI Layer 3
SSTP (Secure Socket Tunneling Protocol) OSI Layer 3

Web Application Security

Eine Vielzahl der Angriffe auf IT-Systeme geschieht im Bereich der Webanwendungen. Die Webserver sind meist öffentlich erreichbar und bieten daher eine leicht auffindbare und optimale Angriffsfläche. Oft werden IT-Systeme mit bestimmten Schwachstellen im Web über Suchmaschinen gesucht (Siehe Kapitel "Google Hacking"), um sie dann gezielt angreifen zu können.

Das Eintrittstor in den Webserver sind meist die darauf laufenden Webanwendungen. Es ist daher unbedingt erforderlich, bereits bei der Entwicklung der Applikationen auf IT-Sicherheit zu achten und diese in den Entwicklungsprozess mit einzubeziehen. Unsicherer Programmcode ist im Nachhinein nur aufwändig zu entdecken und zu korrigieren.

OWASP Top 10

Die Bedrohungen für Web-Applikationen werden regelmäßig in ihrer Häufigkeit erfasst und durch unterschiedliche Stellen ausgewertet. Die bekannteste Auswertung wird durch das OWASP Top Ten Project erstellt. OWASP ist eine Non-Profit-Organisation, deren Ziel es ist, die Erhöhung der Sicherheit von Web-Anwendungen zu fördern.

Die derzeitige OWASP Top 10 Liste (Stand 12. Juni 2013) beinhaltet folgende Bedrohungen, absteigend sortiert [Ow15a]:

  1. Injection
  2. Broken Authentication and Session Management
  3. Cross-Site Scripting (XSS)
  4. Insecure Direct Object References
  5. Security Misconfiguration
  6. Sensitive Data Exposure
  7. Missing Function Level Access Control
  8. Cross-Site Request Forgery (CSRF)
  9. Using Components with Known Vulnerabilities
  10. Unvalidated Redirects and Forwards

Die Top 3 der häufigsten Bedrohungen nach OWASP werden am Ende der Lektion im Rahmen der Angriffsvektoren genauer erläutert.

Web Application Firewalls (WAF)

Oft existieren Anwendungen, die nur schwer durch das eigene Unternehmen gewartet oder angepasst werden können. Dies können entweder Fremdsoftware oder sehr alte Eigenentwicklungen sein, die schlecht dokumentiert oder aufgrund von fehlendem Knowhow nicht mehr wartbar sind.

Um auch diese Anwendungen gegen Angriffe absichern zu können, empfiehlt sich der Einsatz einer Web Application Firewall.

Dabei handelt es sich um eine Application-Level Proxy-Firewall, die eine zusätzliche Schutzschicht zwischen Webserver und Webanwendung darstellt, welche alle Ein- und Ausgaben der Web-Anwendung zusätzlich auf möglich Angriffe überprüft und diese somit gegen bestimmte Angriffe absichert für die die Anwendung sonst verwundbar wäre.

Eine frei verfügbare und weit verbreitete WAF ist ModSecurity [Tr15]. Es handelt sich dabei um ein Modul für den Webserver Apache, welches wiederum durch Rulesets mit den entsprechenden Filterregeln zur Angriffserkennung ausgestattet werden kann.

Cloud Computing Security

Der Begriff Cloud-Computing bezeichnet das Auslagern von einzelnen IT-Services hin zu Anbietern dieser Services im Internet. Die Möglichkeiten sind hierbei sehr vielfältig. Sie reichen von der Zurverfügungstellung von Online-Speicherplatz über die gesamte Bandbreite vom einfachen Webservice bis hin zu kompletter virtueller Infrastruktur. Ein Vorteil liegt hierbei in der einfachen Skalierbarkeit der in Anspruch genommenen Services, da sich meist viele Anwender die Ressourcen des Anbieters, je nach gewünschtem Bedarf, teilen. Die Einstiegskosten sind beim Cloud Computing entsprechend geringer als bei der Investition in eigene Ressourcen. Der Hauptvorteil liegt daher in den sich daraus ergebenden wirtschaftlichen Vorteilen durch die variable Mitnutzung komplexer Ressourcen.

Innerhalb der Cloudservices wird zwischen vier verschiedenen Servicemodellen unterschieden: Humans as a Service (HuaaS), Software as a Service (SaaS), Platform as a Service (PaaS) und Infrastructure as a Service (IaaS). Die Architektur kann in Form eines Schichtenmodells beschrieben werden, da die einzelnen Servicearten aufeinander aufbauen und die jeweils unten liegende Serviceschicht benötigen. Das Schichtenmodell der Cloud-Architektur ist in Abbildung "Cloud-Architektur Schichtenmodell" inklusive der in den jeweiligen Schichten befindlichen Services dargestellt.

Cloud-Architektur Schichtenmodell

Authentifikation bei Cloud-Services

Für die Authentifikation und die damit verbundene Autorisation werden bei den einzelnen Cloud Storage Anbietern unterschiedliche Verfahren verwendet. Diese können eigene Implementierungen oder allgemein verfügbare Methoden sein.

Ein Beispiel dafür ist OAuth [MP14]. Es ermöglicht die zentrale Verwaltung von Benutzern und Rollen gegenüber Drittanbieter Services. Dabei wird mit Access-Token gearbeitet, die vom Autorisierungs-Server an den Client übergeben werden und ihm damit den Zugriff auf die eigentlichen Ressourcen ermöglichen.

Die Verwendung von Access-Token ermöglicht es, Cloud-Dienste mit Applikationen auf unterschiedlichen Geräten zu vernetzen, ohne die eigenen Zugangsdaten preisgeben zu müssen. Diese müssen lediglich bei der Anforderung der Token eingegeben werden. Hat die Anwendung den Token erhalten, kann Sie fortan auf den Cloud-Dienst zugreifen. Jeder Token hat wiederum einen bestimmten Autorisationsumfang innerhalb des Cloud-Dienstes. Wenn der Zugriff der einzelnen Anwendung wieder deaktiviert werden, muss nur der Token deaktiviert werden. Dies hat dann keinen Einfluss auf andere verbundenen Anwendungen.

Cloud Storage Security

Daten sind innerhalb der verteilten Speicher des Cloud Storage Anbieters meist über Hashwerte adressiert um sie schnell aufzufinden und Redundanzen innerhalb eines Speicherortes zu vermeiden. Das bedeutet jedoch auch, dass ein möglicher Angriff unter Kenntnis des Hashwertes möglich ist. Hier können fehlerhafte Sicherheits-Implementierungen der Anbieter ausgenutzt werden. Einen weiteren möglichen Angriffsvektor stellt in diesem Zusammenhang die Ausnutzung des Geburtstagsparadoxons dar. Hierbei kann dem Speicherdienst der Besitz einer Datei, durch die Generierung einer anderen Datei mit gleichem Hashwert, vorgetäuscht werden (Hash Value Manipulation Angriff). Diese und ähnliche Angriffsszenarien wurden in [Mu11] analysiert und anhand des Cloud Storage Services Dropbox getestet und als durchführbar eingestuft.

Neben der besseren Absicherung der Datenübertragungen und der Verifikation des Dateibesitzes [Mu11, S. 9], könnten die Daten mittels Kryptographie auf Dateiebene, vor und nach ihrer Übertragung an den Cloud-Speicher Service abgesichert werden. Dabei können die schwachen Sicherheitsmechanismen der Anbieter, im schlimmsten Fall, lediglich zum Abruf von verschlüsselten Daten ausgenutzt werden.

Auch die Verfügbarkeit und Integrität der abgelegten Daten ist ein wesentlicher Aspekt der Cloud Security. So sollten kritische und wichtige Daten auf mehrere Speicherorte gespiegelt abgelegt werden, um eine Verfügbarkeit der mit ihnen verbundenen Services zu gewährleisten [KVB13, S. 48].

Speicherort von Cloud-Daten

Ein weiterer wichtiger Aspekt der Nutzung von Cloud-Diensten ist der Speicherort. So ist durch die EU Datenschutzrichtlinie 95/46/EG [Eu00b], welche in Österreich durch das Datenschutzgesetz (DSG) [Bg19] umgesetzt wurde, verboten, personenbezogene Daten aus EU Mitgliedsstaaten an Staaten weiterzugeben, die über keinen gleichwertigen Datenschutz verfügen.

Der Nachfolger ist die EU Datenschutz-Grundverordnung (DSGVO) [Eu17], welche als Verordnung am 25. Mai 2018 in Kraft tritt ist und damit die EU Datenschutzrichtlinie 95/46/EG aufhebt. Obwohl die DSGVO als Verordnung unmittelbar angewendet wird, hat sie dennoch einige Punkte, welche durch nationales Recht geregelt werden müssen. Diese werden in Österreich durch das neue Datenschutz-Anpassungsgesetz 2018 (Datenschutzgesetz 2018 – DSG) [Bg17] getroffen, welches ebenfalls am 25. Mai 2018 in Kraft tritt.

Einige Staaten haben Gesetze erlassen, welche ihnen, in bestimmten Fällen, Zugriff auf die gespeicherten Daten aller Unternehmen des Landes erlauben. Ein Beispiel für eine solche gesetzliche Befugnis ist der USA Patriot Act. Solche Eingriffe werden natürlich in wenigen Unternehmen gerne gesehen, und verstoßen mitunter gegen Datenschutzbestimmungen in anderen Ländern. [Ar09, S. 15]

Unklarheiten und EuGH Urteile zur Datenübermittlung in die USA

Im Jahr 2000 wurde von der europäischen Kommission daher zusätzlich das Safe-Harbor-Abkommen verabschiedet, welches gemeinsam mit dem US Handelsministerium [Us14] ausgearbeitet wurde. Es ermöglicht einen Datenaustausch zu US Gesellschaften, sofern diese die Safe-Harbor-Vereinbarung unterzeichnet haben und damit dem Safe-Harbor-Programm beigetreten sind. Dies soll einen ausreichenden Schutz der personenbezogenen Daten gewährleisten, obwohl der grundlegende Datenschutzstandard der USA deutlich unter dem der EU Staaten liegt. [Eu00a]

Am 06. Oktober 2015 wurde das Safe-Harbor-Abkommen vom Gerichtshof der Europäischen Union wieder für ungültig erklärt [Eu15]. Die allein auf Grundlage des Safe-Harbor-Abkommens gestützten Übermittlungen sind seit dem Urteilsspruch unmittelbar rechtswidrig. Betroffen sein dürften nicht nur Daten von bekannten Internetunternehmen, sondern auch die Beschäftigtendaten amerikanischer Industriekonzerne. Es ist aber auch zweifelhaft, ob Unternehmen ohne weiteres auf andere in der Richtlinie für Drittstaatentransfers vorgesehene Rechtsgrundlagen ausweichen können. [Pe15, S. 805]

Daher wurde an einer Nachfolgeregelung gearbeitet und das Abkommen mit dem Namen EU-US Privacy Shield zwischen der EU und den USA ausgehandelt. Für die Unterfertigung des Abkommens waren Gesetzesänderungen in den USA nötig, welche beispielsweise eine einfachere Klagemöglichkeit von EU Bürgern bei Datenschutzverletzungen vorsehen. Auf Grundlage des Abkommens hat die EU Kommission am 12. Juli 2016 beschlossen [Eu16], dass der Datenschutzstandard der USA nun angemessen ist und dem der EU entspricht.

Am 16. Juli 2020 wurde auch das EU-US Privacy Shield durch den EuGH für nicht angemessen und damit nichtig erklärt. Die Begründung ist zusammengefasst, dass weiterhin Zugriff auf in die USA übermittelte Personendaten durch US Behörden möglich sind und den Betroffenen keine entsprechenden Rechte zugesichert werden, welche sie gegenüber den US-behörden durchsetzen könnten.

Möglichkeiten der internationalen Datenübermittlung

Eine Möglichkeit für einen rechtmäßigen internationalen Datenverkehr sind Angemessenheitsbeschlüsse. Es gibt natürlich auch andere, wie z.B. das Vorliegen „geeigneter Garantien“. Diese können z.B. in verbindlichen internen Datenschutzvorschriften (Binding Corporate Rules), die von der zuständigen Aufsichtsbehörde genehmigt worden sind, bestehen oder in den oben bereits erwähnten Standarddatenschutzklauseln, die von der Europäischen Kommission erlassen oder von einer Aufsichtsbehörde angenommen und von der Kommission genehmigt worden sind. Auch eine ausdrückliche Einwilligung der betroffenen Personen im Einzelfall oder die Erforderlichkeit für die Erfüllung eines Vertrages mit der betroffenen Person kann eine Möglichkeit für den internationalen Datenverkehr sein. [WK20]

Angriffsvektoren der Datenübertragung

In Netzwerken gibt es eine Vielzahl möglicher Angriffsvektoren. Diese betreffen alle Netzwerkschichten und damit sowohl die Transportebene, als auch die Anwendungsebene.

Die Arten der Auswirkungen sind dabei sehr vielfältig. Die Übertragungswege können abgehört, manipuliert oder zur Beeinträchtigung der Systemverfügbarkeit missbraucht werden.

Nachfolgend sind nun einige dieser Angriffsvektoren, sowie mögliche Gegenmaßnahmen, genauer beschrieben.

Denial-of-Service Angriff

Bei einem DoS (Denial-of-Service) Angriff handelt es sich um einen Angriff auf die Verfügbarkeit eines Server-Dienstes. Dabei wird dieser durch eine große zu Menge an Anfragen übelastet und ist dadurch nicht mehr verfügbar.

DoS Angriffe können unterschiedliche Server-Dienste als Angriffsziel haben. Gängig sind dabei Angriffe gegen die Verfügbarkeit von Webservern, um eine Internetpräsenz zu überlasten und dadurch die Zielseite auszuschalten. Dies kann gerade bei businesskritischen Webseiten, wie beispielsweise Onlineshops, zu erheblichen finanziellen Verlusten führen.

Der Angriff beschränkt sich dabei nicht auf valide Server-Anfragen. Es werden meist bewusste Protokollverstöße und fehlende Antworten des Verbindungsaufbaus generiert. Dies kann dann den Server-Dienst in einen Wartezustand bringen und damit eine entsprechende Mehrbelastung verursachen.

Heutzutage werden DoS Angriffe über verteilte Netzwerke von mehreren Punkten aus durchgeführt. Sie werden daher als DDoS (Distributed Denial of Service) bezeichnet. Dies wird meist durch ein Netzwerk aus Viren bewerkstelligt, welches vom Angreifenden zentral gesteuert werden kann. Diese Art des Netzwerkes wird als Bot-Netz bezeichnet, da die Viren ihre Tätigkeiten ferngesteuert durchführen. Durch die Verteilung des Angriffs auf mehreren Ausgangspunkten ist es für die Firewall des angegriffenen Servers schwieriger zu unterscheiden, welche Anfragen nun gutartig oder bösartig sind.

Da es leicht möglich ist bestehende Bot-Netze zu mieten, ist dies ein sehr gefährlicher und aktueller Angriffsvektor. Der Angreifende muss dazu oft nicht einmal mehr das nötige Know-How besitzen, sondern lediglich über die entsprechenden Angebotsquellen verfügen. Die Bedienung erfolgt dann über ein simples User-Interface, mit dem das Netz im Mietzeitraum gesteuert werden kann.

Um DDoS Angriffen vorzubeugen, sollten entsprechende Firewall-Regeln eingerichtet sein, welche ungültige Pakete und Verbindungen blockieren (siehe "Stateful-Firewalls" im Kapitel "Firewalls"). Wichtig ist dabei, den Angriff so nahe wie möglich bei den Angreifenden zu filtern. Dies kann durch providerseitige Filtermaßnahmen erreicht werden. Auch existieren, je nach betroffenem Server-Dienst, meist protokollspezifische Maßnahmen die Auswirkungen abzuschwächen.

Weiter sollten Maßnahmen zur Lastverteilung von akut auftretenden Anfragespitzen geplant werden. Dies kann in einem großen Rechenzentrum beispielsweise durch die dynamische Verteilung von Serverressourcen geschehen.

Sniffing

Beim Sniffing (Schnüffeln) handelt es sich um das Abhören von Datenverbindungen. Dabei werden Datenpakete mitgehört, welche in öffentlich zugänglichen Netzen übertragen werden. Handelt es sich dabei um unverschlüsselte Daten können diese ausgelesen und interpretiert werden.

Sniffing kann durch Verschlüsselung des Datenverkehrs entgegengewirkt werden. Der Tausch des zugehörigen Schlüssels kann dabei mittels Schlüsseltauschverfahren (siehe Kapitel "Schlüsseltauschverfahren" in Lektion Kryptographie) sichergestellt werden. Dies verhindert nicht das Abhören der Pakete selbst. Die darin enthaltene Information wird für den Abhörenden jedoch unbrauchbar.

Man-in-the-Middle Angriff

Bei einem Man-in-the-Middle Angriff werden die Datenpakete nicht – wie beim Sniffing – nur abgehört, sondern über den Rechner des Angreifenden umgeleitet. Dadurch ist es möglich, den Inhalt der Daten zu manipulieren.

Einem Opfer eines Man-in-the-Middle Angriffs kann daher ein geänderter Inhalt übermittelt werden. Es geht allerdings davon aus, den angefragten und gewünschten Inhalt bekommen zu haben und merkt dies meist auch nicht. Damit ist es dem Angreifenden beispielsweise möglich, durch manipulierte Zugangsseiten und Formulare Daten zu erfragen oder, im Rahmen eines Downloads, einen Schadcode auszuliefern. Diese Umleitung auf bösartige Formularseiten wird auch als Pharming bezeichnet.

Beim Diffie-Hellmann Schüsseltausch ist es beispielsweise durch einen Man-in-the-Middle Angriff möglich, die Datenverbindung abzuhören. Der Angreifende gibt sich dabei an beiden Seiten als die gewünschte Gegenseite aus. Diese tauschen damit unbewusst beide einen Schlüssel mit dem Angreifenden aus und nicht mit der gewünschten Gegenstelle. Der Man-in-the-Middle muss den Datenverkehr in beide Richtungen nur immer jeweils mit dem zugehörigen Schlüssel der Gegenstelle verschlüsseln und entschlüsseln und kann dazwischen alle Daten im Klartext lesen.

Als Gegenmaßnahme zu Man-in-the-Middle Angriffen können Verfahren eingesetzt werden, welche die Daten zusätzlich mittels Zertifikaten signieren (siehe Kapitel "Hashing" und "Asymmetrische Verfahren" in Lektion "Kryptographie"). Da sich der Private-Key nur im Besitz des jeweiligen Absenders befindet, können die Daten nicht unbemerkt durch den Angreifenden manipuliert werden.

Google Hacking

Viele Angriffe auf Webserver geschehen nicht gezielt auf bestimmte Systeme. Stattdessen suchen die Angreifer nach beliebigen verwundbaren Systemen, indem sie die Indizierung der Seiten in Suchmaschinen ausnutzen.

Dieser Angriffsvektor wird als Google Hacking bezeichnet. Dabei handelt es sich noch nicht um einen direkten Angriff, sondern eine Methode des Informationsgewinnes über mögliche verwundbare Systeme.

Beim Google Hacking wird in Google nach bestimmten HTML-Headern und Dateinamen gesucht. Das können beispielsweise bestimmte Versionen oder Dateien eines Content-Management-Systems (CMS) oder Debug-Informationen von Webservern sein.

Auch kann z.B. gezielt nach Passwortdateien gesucht werden, welche irrtümlich frei abrufbar sind.

Als Gegenmaßnahme sollten Fehlermeldungen immer durch eigene Fehlerseiten, und nie direkt durch die eigene Ausgabe des Scripts angezeigt werden. Interne Fehlercodes und Fehlerdetails dürfen nur in Logdateien gespeichert und niemals dem Endanwender gezeigt werden. Auch sollte unbedingt darauf geachtet werden, den Zugriff auf Webverzeichnisse mit Administrationsseiten und internen Dateien zu beschränken. Die Standardpfade für Administrationsbereiche von CMS Umgebungen sollten ebenfalls immer geändert werden.

Injection

Bei Injection handelt es sich um einen Angriff durch das Einbringen von Schadcode und Kommandos zur Ausführung direkt am angegriffenen Webserver. Dabei werden unsauber programmierte Webformulare und Übergabeparameter ausgenutzt, um den Code vom jeweiligen Interpreter am Server ausführen zu lassen.

Injection Angriffe sind die am weitest verbreiteten, da gerade im Web viele unsaubere Programmiercodes in Tutorials und Foren kursieren, welche wiederum von oft Entwicklern wiederverwendet werden. Einen Hinweis auf die Behebung der Schwachstellen findet man dabei sehr selten. Die Injection Angriffe befinden sich bereits seit 2007 auf Platz 1 der OWASP Top 10 [Ow15a].

Da bei Injection Angriffen Schadcode am Server ausgeführt werden kann, handelt es sich um eine sehr schwerwiegende Sicherheitslücke, welche zu Datenverlust und Datenverfälschung, sowie Kontrollverlust über den gesamten Webserver führen kann.

Die bekannteste Variante der Injection-Angriffe ist die SQL-Injection. Dabei werden unsauber programmierte SQL-Aufrufe ausgenutzt, welche die Eingabewerte direkt an in den SQL-Befehl integrieren. Die Eingabewerte können von Angreifenden dann dazu verwendet werden, andere SQL-Befehle auszuführen, oder den jeweiligen Befehl um weitere Bestandteile zu erweitern.

Ein Bespiel für eine verwundbare SQL Abfrage lautet:

String query = "SELECT * FROM accounts WHERE custID='" + request.getParameter("id") +"'";

Dabei kann durch Übergabe des Wertes:

?id=' or '1'='1

eine Abfrage erzeugt werden, die alle möglichen Einträge der Tabelle wiedergibt, da die Bedingung damit nun immer wahr ist.

Die eigentliche, an den Datenbank-Server übermittelte SQL-Abfrage lautet in diesem Fall:

SELECT * FROM accounts WHERE custID='' or '1'='1';

Auch kann durch fehlerhafte Werte ein Fehler bewusst herbeigeführt werden, der auf einem schlecht konfigurierten System für den Benutzer ersichtlich zurückgegeben wird. Durch die Fehlermeldung kann dann oft auf die Konfiguration und Versionierung der Serversoftware rückgeschlossen werden, was weitere Angriffsversuche wiederum erleichtert.

Um Injection Angriffe zu verhindern ist es wichtig, jeden Dateninput, ganz gleich, ob es ein Benutzerformular oder eine Programmschnittstelle ist, zu validieren oder entsprechend umzucodieren. Dies kann mittels eigener Implementierung von Funktionen für die Anpassung und Überprüfung der Überbewerte, oder dem Einsatz einer entsprechenden API erfolgen. Ist keine API verfügbar, sollten alle möglichen Metazeichen sehr sorgfältig durch eine eigene Funktion, vor der weiteren Verarbeitung entschärft werden. Auch besteht die Möglichkeit mittels Whitelist nur explizit erlaubte Schriftzeichen zuzulassen und alle anderen Zeichen zu filtern. Dies ist jedoch meist schwierig, da manche Metazeichen von den Anwendungen benötigt werden.

Broken Authentication and Session Management

Dabei handelt es sich um den Diebstahl von Zugangsdaten oder dem validen Zustand eines authentifizierten Anwenders.

Die meisten Internetzugriffe, wie beispielsweise über HTTP, erfolgen transaktionslos. Das bedeutet, dass jede Anfrage an einen Webserver unabhängig von den vorangegangenen Anfragen durchgeführt und beantwortet wird. Um dem Client eine durchgängige Anwendungsbenutzung mit den entsprechenden, serverseitig gespeicherten Zuständen, zu ermöglichen, bedient man sich hier sogenannter Sessions. In einer Session werden bestimmte Zustände bzw. Variablen serverseitig zwischengespeichert und bei der nächsten Anfrage des Clients wiederverwendet. Erst dadurch sind Anwendungen möglich, bei denen sich der Anwender nur zu Beginn anmelden muss und dann alle übrigen Zugriffe mit den für ihn hinterlegten Berechtigungen durchführen kann, ohne seine Authentifizierung bei jedem Zugriff wiederholen zu müssen.

Um dem Server mitzuteilen, welche Session für den aktuellen Zugriff verwendet werden soll, übergibt der Client eine entsprechende Session-ID, die ihm beim ersten Zugriff vom Server mitgeteilt wurde.

Der Angreifende versucht nun die Session-ID zu stehlen, damit er diese bei seinem eigenen Client hinterlegen und somit Serveranfragen mit der Identität des Opfers durchzuführen. Um die Session-ID zu erhalten gibt es mehrere Möglichkeiten. Die häufigsten sind, das Wiederverwenden von alten Session-ID’s durch den Server durch falsche Session-Timeouts, die Übergabe der Session-ID über den Webpfad (die URL) und die damit verbundene irrtümliche Weitergabe der ID durch den Anwender, sowie das Abhören einer der Session-ID einer unverschlüsselten Verbindung.

Um diese Art von Angriffen zu verhindern, sollte ein professionelles Login- und Session-Management implementiert werden. Von Eigenentwicklungen ist hierbei abzuraten, da dadurch oft Fehler entstehen können, die wiederum ein Ausnutzen durch potenzielle Angreifer vereinfachen. Auch sollte besonderer Wert auf die Verhinderung von Cross Site Scripting Attacken (siehe Kapitel "Cross-Site Scripting (XSS)") und der Verschlüsselung der Datenverbindungen (z.B.: durch Verwendung von HTTPS) gelegt werden.

Zur Einhaltung der Anforderungen an Authentifizierung und Session-Management wurde der der OWASP Application Security Verification Standard [Ow15b] entwickelt, dessen Einhaltung ebenfalls empfohlen werden kann.

Cross-Site Scripting (XSS)

Beim Cross Site Scripting wird die Ausgabe eines, vorher an die Website übergebenen, Wertes ausgenutzt. Wird der Wert direkt in den Webseitencode eingefügt, kann dadurch Schadcode eingeschleust werden, der im Clientbrowser ausgeführt wird.

Ein Beispiel hierfür sind Internet-Foren und Login-Formulare ohne Absicherung. Bei einem Forenbeitrag mit entsprechend eingefügtem Schadcode kann eine Ausführung bei jedem einzelnen User erfolgen, der sich den Forenbeitrag ansieht. Im Beispiel des Login Formulars könnte eine Login-Eingabe der Benutzerdaten abgefangen und an einen Server des Angreifers übermittelt werden. Leitet der Schadcode die Anfrage danach wieder korrekt an die Login-Funktion der Webseite weiter, bemerkt der Anwender den Angriff nicht, der Angreifer hat hingegen erfolgreich seine Logindaten erhalten.

Eine weitere Angriffsmöglichkeit ist die Übernahme der Session-ID des Anwenders, indem ein Schadcode eingeschleust wird, der die aktuelle Session-ID an den Webserver des Angreifers übermittelt.

Um Cross Site Scripting zu verhindern, müssen die übergebenen Werte der Website, ähnlich der Vorbeugung von Injektion Angriffen, überprüft werden. Zusätzlich müssen alle nicht vertrauenswürdigen Zeichen der Ausgabewerte vor dem Einfügen in den HTML Code durch ihre entsprechenden Metazeichen ersetzt werden. Für diesen Zweck gibt es in den meisten Skriptsprachen entsprechende Funktionen, welche valide und ungefährliche Ausgabedaten generieren.

Die Mozilla Foundation hat eine Content Security Policy [Mo15] veröffentlicht, mit deren Einhaltung möglichen Cross Site Scripting Attacken sicher vorgebeugt werden kann.

Wiederholungsaufgaben/Übungen

1 Nennen Sie fünf Sicherheitsprotokolle der transportorientierten Netzwerk-Schichten und der fünf Sicherheitsprotokolle der Anwendungsorientierten Netzwerk-Schichten.

2 Was sind Firewalls? Welche Kategorien von Firewalls gibt es?

3 Was ist der Unterschied zwischen einer Packet-Filter Firewall und einer Stateful Firewall?

4 Was sind Application-Level Firewalls?

5 Was bedeutet VPN und was ist seine Aufgabe? Nennen Sie fünf VPN Protokolle.

6 Was sind die OWASP Top 10? Nennen Sie die ersten drei Plätze.

7 Worauf ist bei der Speicherung von Daten in der Cloud besonders zu achten?

8 Was bedeutet DoS und was ist ein DoS Angriff?

9 Was ist der Unterschied zwischen Sniffing und einem Man-in-the-Middle Angriff?

10 Was ist ein Injection-Angriff?

11 Was ist Broken Authentication and Session Management?

12 Was ist Cross-Site-Scripting?