“Erstellen eines Oracle – Sicherheitsplans“

Werbung
Diplomarbeit
Thema:
“Erstellen eines Oracle –
Sicherheitsplans“
Christian Krämer
geboren am 23.12.1977
Matr.-Nr.: 7050968
An der Fachhochschule Dortmund im Fachbereich Informatik erstellte
Diplomarbeit
im Studiengang Wirtschaftsinformatik
zur Erlangung des Grades Diplom – Informatiker (FH) von
Erstprüferin: Prof. Dr. Heide Faeskorn - Woyke
Zweitprüferin: Prof. Dr. Birgit Bertelsmeier
Fachbereich Informatik
Dortmund, 05.10.2008
Erstellen eines Oracle-Sicherheitsplans
Kapitel 1: Einleitung
Inhaltsverzeichnis
Inhaltsverzeichnis ......................................................................... 2
Abbildungsverzeichnis ................................................................... 5
Tabellenverzeichnis ....................................................................... 6
1.
Einleitung ................................................................................ 7
1.1. Motivation und Hintergrund............................................................................. 8
1.2. Zielsetzung und Aufgabenstellung.................................................................... 8
1.3. Vorgehensweise und Gliederung ...................................................................... 9
2.
Datenbanksysteme................................................................ 10
2.1. Entstehung der Datenbanksysteme .................................................................10
2.1.1.
Das relationale Datenbanksystem MySQL ....................................................12
2.1.2.
Das relationale Datenbanksystem Oracle .....................................................13
3.
Sicherheit und deren Gegner................................................. 15
3.1. Bedrohungen ...............................................................................................15
3.1.1.
Interne Angriffe........................................................................................18
3.1.2.
Externe Angriffe .......................................................................................18
3.2. Sicherheit lt. BSI ..........................................................................................18
4.
Umsetzung von Sicherheit in Datenbanksystemen ................ 20
4.1. Acht Gebote der Datensicherheit ....................................................................20
4.2. Der Sicherheitskompromiss............................................................................21
4.3. Mitarbeiter sensibilisieren ..............................................................................22
5.
Erarbeitung eines Sicherheitsplans ....................................... 24
5.1. Verantwortlichkeiten zuweisen .......................................................................24
5.2. Die Systemlandschaft....................................................................................27
5.2.1.
Das Betriebssystem IBM – AIX ...................................................................27
5.2.2.
Errichtung einer DMZ ................................................................................28
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 2 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 1: Einleitung
5.3. Absicherung des Betriebssystems IBM – AIX ....................................................29
5.3.1.
Dateisicherheit .........................................................................................29
5.3.2.
Das administrative Konto Root ...................................................................30
5.3.3.
UNIX – Benutzer und deren Passwörter .......................................................32
5.3.4.
Auditing ..................................................................................................32
5.3.5.
Sonstige Sicherheitsaspekte.......................................................................33
5.4. Der Anfang zur Sicherung des Oracle – Datenbanksystems ................................34
5.4.1.
Oracle – Gruppen und Benutzer unter UNIX .................................................34
5.4.2.
Zusätzliche Oracle – Features.....................................................................35
5.4.3.
Standardbenutzer und deren Passwörter .....................................................38
5.5. Innere Absicherung des Oracle – Datenbanksystems.........................................40
5.5.1.
Benutzer – Authentifizierung ......................................................................41
5.5.2.
Benutzerberechtigungen ............................................................................42
5.5.3.
Rollen .....................................................................................................45
5.5.4.
Datenbankautorisierung durch das DEFAULT – Profil .....................................49
5.5.5.
Benutzerpasswörter ..................................................................................53
5.5.6.
Views ......................................................................................................55
5.5.7.
Die Datenbankbenutzer SYS und SYSTEM ....................................................56
5.6. Sicherung mittels zusätzlicher Komponenten....................................................59
5.6.1.
Oracle Virtual Private Database (VPD) .........................................................59
5.6.2.
Oracle Label Security ................................................................................61
5.6.3.
Oracle Data Vault .....................................................................................62
5.6.4.
Auditing ..................................................................................................64
5.7. Erweiterte Sicherheitsmaßnahmen ..................................................................66
5.7.1.
Netzwerksicherheit ...................................................................................67
5.7.2.
Datenbankbackup .....................................................................................69
5.7.3.
Abschließende Sicherungsmöglichkeiten ......................................................71
6.
Oracle 11g vs. MySQL 5.0.67 ................................................. 74
6.1. Neuerungen in Oracle 11g .............................................................................74
6.1.1.
Der Umgang mit Kennwörtern ....................................................................74
6.1.2.
Verbessertes Auditing ...............................................................................76
6.1.3.
Verschlüsselung des Tablespace .................................................................76
6.1.4.
Verschlüsselung von Betriebssystemdateien.................................................76
6.2. Sicherheitsmöglichkeiten in MySQL 5.0.67 .......................................................77
6.2.1.
Absicherung mit dem Shellskript mysql_secure_installation ...........................77
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 3 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 1: Einleitung
6.2.2.
Optionen zum Starten des MySQL – Server mysqld.......................................78
6.2.3.
Sichere Anlage von Datenbankbenutzern .....................................................80
6.2.4.
Anpassungen der Datei my.cnf ...................................................................81
6.2.5.
Eine abgesicherte Verbindung zur Datenbank ...............................................81
6.3. Fazit ...........................................................................................................81
7.
Penetrationstest.................................................................... 84
7.1. Port – Scan ..................................................................................................84
7.2. Angriff über Checkpwd ..................................................................................87
7.3. Untersuchung der ermittelten Datenbankbenutzer ............................................88
7.4. Die DBA – Rolle ............................................................................................91
7.5. Angriff über Oracle XML – DB .........................................................................92
7.6. Fazit ...........................................................................................................95
7.6.1.
8.
Möglichkeiten zur Absicherung ...................................................................96
Checkliste zum Inhalt eines Sicherheitsplans........................ 97
8.1. Die Systemlandschaft planen .........................................................................97
8.2. Sicherung des Betriebssystems ......................................................................97
8.3. Das Datenbanksystem absichern ....................................................................98
8.4. Backups durchführen ....................................................................................99
9.
Fazit .................................................................................... 100
10. Danksagung ........................................................................ 102
Literaturverzeichnis................................................................... 103
Abkürzungsverzeichnis .............................................................. 104
Eidesstattliche Erklärung ........................................................... 106
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 4 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 1: Einleitung
Abbildungsverzeichnis
Abbildung 3-1: Bedrohungen auf ein IT – System und dessen Komponenten (Quelle:
selbst erstellt) ..........................................................................................16
Abbildung 5-1: Multiuser – System (Quelle: selbst erstellt)..................................29
Abbildung 7-1: Port – Scan Ausgabe der Software NMap (Quelle: selbst erstellt) ....85
Abbildung 7-2: Port – Scan Ausgabe inkl. Zusatzinformationen der Software NMap
(Quelle: selbst erstellt) ..............................................................................86
Abbildung 7-3: Angriffsversuch mit Checkpwd (Quelle: selbst erstellt) ..................87
Abbildung 7-4: Inhalt der View v$pwfile_users (Quelle: selbst erstellt)..................89
Abbildung 7-5: Unkenntlich gemachte Studentendaten (Quelle: selbst erstellt) ......90
Abbildung 7-6: Unkenntlich gemachte Daten von Dozenten (Quelle: selbst erstellt) 90
Abbildung 7-7: Datenbankbenutzer mit der Rolle DBA (Quelle: selbst erstellt) .......91
Abbildung 7-8: Verbindungsversuch über Oracle XML – DB (Quelle: selbst erstellt).93
Abbildung 7-9: Auslesen der Datenbankbenutzer über Oracle XML – DB (Quelle:
selbst erstellt) ..........................................................................................94
Abbildung 7-10: Kennwort des Datenbankbenutzers SYS (Quelle: selbst erstellt) ...95
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 5 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 1: Einleitung
Tabellenverzeichnis
Tabelle 2-1: Bekannte DBS-Typen (Quelle: [Kersken 2003] Seite 131 ff.) .............12
Tabelle 3-1: 2006 getätigte Angriffsformen (Quelle: [kes 2007]) ..........................17
Tabelle 3-2 Schutzziele für Sicherheit im IT – System (Quelle:
http://www.bsi.bund.de, 15.03.2008) .........................................................19
Tabelle 4-1 Acht Gebote der Datensicherheit (Quelle: [Faeskorn-Woyke et al. 2007]
Seite 56 f.) ..............................................................................................21
Tabelle 5-1 Sicherheitsmitarbeiter (Quelle: Vgl. [Newman et al. 2004] Seite 86) ....26
Tabelle 5-2 Zusätzliche Oracle – Softwarekomponenten (Quelle: selbst erstellt) .....38
Tabelle 5-3 Standardbenutzer und deren Passwörter (Quelle:
http://www.petefinnigan.com/default/oracle_default_passwords.htm,
21.07.2008) .............................................................................................40
Tabelle 5-4 Typische Objekt- und Systemberechtigungen (Quelle: [Bryla et al. 2007]
Seite 324 ff.)............................................................................................45
Tabelle 5-5 Bekannte von Oracle vordefinierte Rollen (Quelle: [Bryla et al. 2007]
Seite 332 ff.)............................................................................................48
Tabelle 5-6 Ein Ausschnitt der View dba_profiles (Quelle: [Bryla et al. 2007] Seite
316)........................................................................................................50
Tabelle 5-7 Wichtige Profil – Ressourcenparameter (Quelle: Vgl. [Bryla et al. 2007]
Seite 317 ff.)............................................................................................52
Tabelle 5-8 Wichtige DATA DICTIONARY – Views (Quellen: [Bryla et al. 2007] und
[Newman et al. 2004]) ..............................................................................58
Tabelle 5-9 Parameter der Prozedur ADD_POLICY (Quelle: [Bryla et al. 2007] Seite
345 f.).....................................................................................................61
Tabelle 5-10 Parameter AUDIT_TRAIL der Datei init.ora (Quelle: [Bryla et al. 2007]
Seite 358 f.).............................................................................................65
Tabelle 6-1 Parameter zum sicheren Starten des MySQL – Servers (Quelle: MySQL
Online-Referenzhandbuch - http://dev.mysql.com/doc/refman/5.1/de/privilegesoptions.html, 08.09.2008) .........................................................................79
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 6 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 1: Einleitung
1.
Einleitung
Bereits der berühmte amerikanische Psychologe Prof. Abraham Harald Maslow1 hat
im Jahre 1943 das Thema Sicherheit in seiner Bedürfnispyramide als eines der
wichtigsten menschlichen Bedürfnisse benannt. Daran ist zu erkennen, wie wichtig
Sicherheit für den Menschen ist. Hierbei spielt es kaum eine Rolle in welchem
Zusammenhang dieses Thema verwendet wird.
Während damals an Sicherheit in der Informationstechnologie noch nicht zu denken
war, ist das Thema IT – Sicherheit2 nun in aller Munde. Gerade wenn es um
Informationen geht, die nur uns betreffen, ist Sicherheit ein heikles Thema. Ob es
die privaten Fotos, E-Mails oder aber die privaten Dokumente sind, Sicherheit ist
gewünscht und sollte größtmögliche Priorität haben um Daten jeglicher Art zu
schützen3.
Zu anfänglichen Zeiten der IT verstand man unter IT – Sicherheit lediglich die
Sicherstellung der korrekten Funktionsweise von Hard- und Software. Mittlerweile
geht es längst nicht nur um korrekte Funktionsweisen. Unmengen von Software und
Hardware existieren auf dem Markt. Das Internet, daraus resultierende Bedrohungen
und die weltweite Möglichkeit auf Informationen der genannten Komponenten
zuzugreifen, ließen Sicherheitslücken darin erkennen und machen ein System bzw.
deren Komponenten angreifbar. Viele, erst im Laufe der Jahre aufgetauchten
Bedrohungen (siehe Abschnitt 3-1) eines IT – Systems4, machen es notwendig,
präventive Maßnahmen zu ergreifen um ein System und dessen Komponenten zu
schützen.
Eine Komponente, die vielen Bedrohungen ausgesetzt ist, ist ein Datenbanksystem.
Nicht zuletzt aufgrund der Globalisierung und der rasenden Verbreitung und damit
auch Kommerzialisierung des Internets, benötigt fast jedes größere Unternehmen
bzw. jede größere Organisation zur Verwaltung der riesigen Datenmengen ein DBS5.
Ob private Kundeninformationen oder aber Informationen über Studenten und deren
Benotungen. Ein DBS sollte einen größtmöglichen Schutz genießen.
Um ein DBS richtig zu schützen ist es wichtig die Schwachstellen, die darauf
wirkenden Bedrohungen, die umgebende IT – Systemlandschaft und die von der
Hard- bzw. Software bereitgestellten Sicherheitstools zu kennen. All diese
Informationen können in einen Sicherheitsplan fließen, mit dem man ein
Datenbanksystem besser schützen kann.
1
2
3
4
5
Er lebte vom 01.04.1908 bis 08.06.1970 in Brooklyn, New York.
Unter IT – Sicherheit versteht man den Zustand eines IT – Systems, in dem die Risiken, die bei jedem
IT – Einsatz bestehen auf ein tragbares Maß reduziert werden.
Diesbezüglich sei zu erwähnen, dass es aktuell Politiker gibt, die diese Ansicht wohl nicht voll und
ganz teilen.
Ein System zur Beschaffung, Verarbeitung, Speicherung, Übertragung und Bereitstellung von
Informationen bzw. Daten (Wichtige Komponenten: Hardware, Software, Menschen, Datenbanken).
Vgl. [Siebdrat 2007]
DBS ist eine geläufige Abkürzung für Datenbanksystem.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 7 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 1: Einleitung
1.1.
Motivation und Hintergrund
Da die Bedeutung des Themas IT – Sicherheit in den letzten Jahren immer mehr
zugenommen hat, ist es ein grundlegendes Bedürfnis, Komponenten (in diesem Falle
ein Datenbanksystem) eines IT – Systems zu schützen.
Zur Durchsetzung von Sicherheitsmaßnahmen und –anforderungen ist es hilfreich
einen Sicherheitsplan einzuführen. In diesem Plan sollten alle möglichen
Schwachstellen, Bedrohungen, Hintergrundinformationen und natürlich auch
Gegenmaßnahmen verankert und erläutert sein. Somit wird es den auszuführenden
Personen erleichtert, die Maßnahmen zur Sicherung des Datenbanksystems
umzusetzen.
Die Fachhochschule Köln (Campus Gummersbach) setzt in ihrer aktuellen
Systemlandschaft ein Oracle- und ein MySQL – Datenbanksystem ein. Das Oraclesowie das MySQL – Datenbanksystem werden von der Verwaltung der
Fachhochschule z.B. für die Erfassung von Stundenplänen und Daten von Studenten
bzw. Lehrkräften eingesetzt. Von den Studenten und Lehrkräften werden die
Systeme ebenfalls zu Vorlesungs- und Übungszwecken benutzt.
Im Hinblick auf Oracle und MySQL bekommen Studenten einen Überblick darüber,
wie man die Datenbanksysteme auf verschiedenen Betriebssystemen richtig
installiert, konfiguriert und einsetzt. Die Datenbankverwaltung und der damit
verbundene Überblick über server- und clientseitige Programme, wie z.B. der Einsatz
des MySQL – Server und des MySQL – Clients werden ebenso betrachtet. Im Hinblick
auf Absicherung bekommen Studenten einen Überblick über allgemeine
Sicherheitsaspekte,
Benutzerkontenverwaltung
sowie
Datensicherung
und
Wiederherstellung.
In Bezug auf SQL wird den Studenten Wissen über Datentypen, Funktionen,
Operatoren
und
Systemvariablen
sowie
die
richtige
Anwendung
der
Datendefinitionssprache (Data Definition Language), der Datenmanipulationssprache
(Data Manipulation Language), der Datenabfragesprache (Data Query Language) und
der Datenadministrationssprache (Data Administration Language) vermittelt.
1.2.
Zielsetzung und Aufgabenstellung
Diese Diplomarbeit soll einerseits dazu dienen, einen Sicherheitsplan für ein Oracle –
Datenbanksystem zu erstellen. Zu diesem Sicherheitsplan werden Umwelteinflüsse,
wie der Begriff der Sicherheit oder aber Angriffe auf ein IT- und Datenbanksystem
ebenso kritisch begutachtet wie die Möglichkeiten, die Oracle bietet, um Sicherheit
innerhalb eines Datenbanksystems umzusetzen. Dieser Sicherheitsplan wird so
ausgelegt sein, dass der Schutz sicherungsbedürftiger Daten höchste Priorität hat.
Die Erkenntnisse zur Erarbeitung dieses Sicherheitsplans werden dazu genutzt eine
Datenbankinstallation am Campus Gummersbach auf Sicherheitslücken und
Schwachstellen in der Konfiguration hin zu untersuchen. Hierbei wird die Datenbank
oras1.gm.fh-koeln.de6 mit typischen Bedrohungen konfrontiert. Da die Datenbank
auch von Studenten während der vorlesungsfreien Zeit über das Internet genutzt
werden kann, werden hauptsächlich Angriffe von außen, mittels eines
6
Dies ist eine Installation die hauptsächlich zu Übungszwecken für Studenten dient.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 8 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 1: Einleitung
Penetrationstests7, simuliert.
Neben der Erstellung des Konzepts sowie dem Sicherheitstest der Datenbank wird es
weiterhin eine Unterscheidung der beiden Datenbanksysteme Oracle und MySQL im
Hinblick auf Sicherheit geben. Hierzu werden die Sicherheitstools der aktuellen
produktiven Systeme Oracle 11g und MySQL in der Version 5.0.678 miteinander
verglichen, kritisch begutachtet und objektiv bewertet.
1.3.
Vorgehensweise und Gliederung
Zu Beginn werden in dieser Diplomarbeit grundlegende Begriffe der Thematik
Datenbanksysteme und Sicherheit erläutert. Innerhalb der Datenbanksysteme
werden die für diese Arbeit relevanten Systeme Oracle und MySQL betrachtet.
Nach dieser Betrachtung wird der Sicherheitsaspekt aufgegriffen. Neben gesetzlichen
Richtlinien werden ebenfalls Angriffe beschrieben, die auf ein IT – System und ein
DBS einwirken können. Weiterhin wird auf den wichtigen Punkt der Umsetzbarkeit
von Sicherheit in einem DBS eingegangen. Hierin geht es um die Notwendigkeit eines
Sicherheitskompromisses, um die korrekte Zuweisung von Verantwortlichkeiten und
um die Sensibilisierung von Mitarbeitern im Umgang von Sicherheit in
Datenbanksystemen
In Abschnitt 5 wird die Sicherung eines Oracle – Datenbanksystems beschrieben. Da
nicht nur das DBS selbst, sondern auch die umgebende Systemlandschaft gesichert
werden muss, wird neben der Absicherung des DBS auch die Sicherung des
umgebenen Betriebssystems beschrieben.
Die derzeitigen Sicherheitsmöglichkeiten und –tools der Datenbanksysteme Oracle
und MySQL werden in den aktuellen produktiven Versionen 11g in einem separaten
Abschnitt gegeneinander gestellt. Die Möglichkeiten der beiden Systeme werden
betrachtet, zweckgebunden untersucht und objektiv bewertet.
Anhand der genannten Absicherungsmöglichkeiten wird das, an der Fachhochschule
Köln (Campus Gummersbach) eingesetzte Oracle – Datenbanksystem, unter der
Adresse oras1.gm.fh-koeln.de, auf typische Schwachstellen untersucht.
Als letzten Schritt, zur Sicherung einer Oracle – Datenbank, wird eine Checkliste
erstellt. Diese Liste soll dazu dienen Schritte zur Sicherung eines Datenbanksystems
nachzuvollziehen und ein evtl. bereits umgesetztes Sicherheitskonzept auf
Schwachstellen zu überprüfen.
7
8
Ein Penetrationstest ist in der Informatik eine Methode, um Sicherheitsschwachstellen festzustellen.
Versionsstand vom 10.09.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 9 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 2: Datenbanksysteme
2.
Datenbanksysteme
Die Wichtigkeit von Sicherheit in Datenbanksystemen hat erst die letzten Jahre
enorm zugenommen. Während man DBS zu Beginn hauptsächlich in großen
Unternehmen auf Großrechnern einsetzte9, findet man heute, innerhalb des
Internets, hinter sehr vielen, vor allem kommerziellen Homepages Datenbanken. Ob
man bei Amazon10 Bücher bestellt, bei seiner Bank eine Online – Überweisung tätigt,
bei Ebay11 an einer Auktion teilnimmt, sich bei einer Versicherung ein Online –
Angebot ausrechnen lässt oder ob man einen SQL – Test auf der Website einer
Professorin der Fachhochschule Köln ausführt. Hinter all den genannten Beispielen
stecken Datenbanksysteme mit Millionen von Daten. Unternehmen wie die BMW AG12
oder Oracle selbst, verwenden zur Verwaltung ihrer großen Datenmenge tausende
von Datenbanken. Viele der enthaltenen Daten sind nicht unbedingt schutzbedürftig.
Andere jedoch, wie die Daten der eigenen Kreditkarte, des Bankkontos oder aber der
eigenen Adresse, haben einen besonderen Schutzbedarf.
Datenbanksysteme haben nicht mehr nur die Aufgabe die enthaltenen Daten zu
speichern und anderen zugänglich zu machen. Nein, sie haben auch die Aufgabe, die
enthaltenen Daten zu schützen. Die vermehrt kommerzielle Ausrichtung des
Internets, die große Menge an Daten, die täglich über die Datenleitungen fließt und
die unüberschaubare Anzahl an Nutzern des Internets haben die Anforderungen an
Sicherheit von Datenbanksystemen grundlegend verändert. Datenbanksysteme
müssen daher ein gewisses Maß an Vertraulichkeit, Integrität und Verfügbarkeit
bieten (vgl. Abschnitt 3-2).
Die folgenden Abschnitte sollen daher einen grundlegenden Überblick über die
Datenbanksysteme, vor allem Oracle und MySQL bieten.
2.1.
Entstehung der Datenbanksysteme
Vorreiter der Datenbanken waren Dateien. So genannte Flatfiles13 sorgten für die
Speicherung der Daten. Diese Flatfiles hatten jedoch den Nachteil, dass die darin
enthaltenen Daten nur von dem Programm gelesen werden konnte, von dem das
Flatfile erzeugt wurde. Wollte nun ein anderes Programm auf die Daten zugreifen, so
war, aufgrund der fehlenden Integrität (siehe Abschnitt 3-2), meist ein schwieriges
Im- und Export – Verfahren über eine zuvor definierte Schnittstelle notwendig um die
Daten verwenden zu können. Ein weiterer, damit verbundener Nachteil war die
Redundanz14 der Daten. Die gleichen Daten standen mehrmals zur Verfügung, was
auf Dauer einen gewaltigen Speicherbedarf darstellte. Weiterhin konnte es dadurch
vorkommen, dass die Daten einen inkonsistenten15 Zustand erhielten. Änderte ein
Programm innerhalb eines Flatfiles, z.B. die Adresse von Kundendaten, so bekam das
andere Programm die Änderung erst dann mitgeteilt, wenn das erwähnte Im- und
Export – Verfahren wieder durchgeführt wurde.
9
10
11
12
13
14
15
z.B. Das IBM – Betriebssystem OS390 mit dem Datenbanksystem DB2.
http://www.amazon.de 20.05.2008
http://www.ebay.de 20.05.2008
http://www.bmwgroup.com 10.09.2008
Als Flatfiles werden einfache Textdateien bezeichnet.
Redundanz bedeutet, dass Daten mit gleichem Informationsgehalt mehrfach vorkommen.
Inkonsistenz besagt, dass Datenzusammenhänge widersprüchlich sind.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 10 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 2: Datenbanksysteme
Aufgrund immer komplexer gewordenen Datenstrukturen, der Notwendigkeit
Datenbestände immer aktuell zu halten und der Bedarf von Unabhängigkeit zwischen
Daten und Programm sorgten schließlich Ende der 60er Jahre für die Entstehung der
Datenbank16.
Die genaue Definition von Datenbanksystemen spiegelt folgendes Zitat wider: „Ein
Datenbanksystem ist eine Ansammlung von Daten, die allen Benutzern bzw.
Anwendungen zur Verfügung steht und in der die Daten nach einheitlichen Regeln
abgespeichert werden. Ein Datenbanksystem besteht aus einer Datenbasis17 und
einem Datenbankmanagementsystem18 “19.
Über viele Jahre hinweg sind sehr viele verschiedene Typen von Datenbanksystemen
aufgetaucht. Nachfolgende Tabelle zeigt Typen, die am meisten in Erscheinung
getreten sind:
Typ
Erläuterung
RDBMS20
Relationale
(RelationaleDatenbankManagementSysteme)
Einzeltabellen
Datenbanken
miteinander
bieten
zu
die
Möglichkeit,
verknüpfen
(Relationen).
Informationen, die an verschiedenen Stellen benötigt werden,
müssen nur einmal aufgeführt werden. Es handelt sich hier
um die am meisten benutzten Datenbanksysteme (z.B.
MySQL und Oracle).
OODBS
(Objekt- OrientierteDatenbanksysteme)
Diese Datenbanken arbeiten auf der Grundlage von Klassen
und Objekten. Im Gegensatz zu relationalen Datenbanken
besteht bei ihnen die Möglichkeit nicht lineare Beziehungen
zwischen den Informationen abzubilden (z.B. O2 – DBS). Eine
Mischform zwischen RDBMS und OODBS sind ORDBS (Objekt
– Relationale Datenbanksysteme).
XMLDBS
Diese Datenbanken speichern die Informationen in Form von
XML – Dokumenten ab. Da der Austausch von Informationen
XMLDatenbanksysteme21
mit Hilfe von XML – Dokumenten die letzten Jahre sehr
zugenommen hat (einheitliche Schnittstellen), bieten diese
die
Möglichkeit,
die
erhaltenen
Informationen
direkt
abzuspeichern ohne das Dokument noch parsen zu müssen
(z.B. das Datenbanksystem Tamino).
16
17
18
19
20
21
Siehe [Faeskorn-Woyke et al. 2007] Seite 21 ff.
In der Datenbasis sind die Daten der Datenbank enthalten.
Das DBMS managt und kontrolliert das Datenbanksystem.
Siehe [Faeskorn-Woyke et al. 2007] Seite 21
Es wird auch der Begriff RDBS benutzt, jedoch hat der Begriff RDBMS im Internet die größte
Verbreitung, weshalb dieser Begriff in dieser Arbeit verwendet wird.
Oracle bietet ebenfalls eine Methode zur Speicherung von XML – Dateien.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 11 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 2: Datenbanksysteme
Hierarchische
Die Verknüpfung der Datenobjekte erfolgt hier über eine
Datenbanksysteme
Baumstruktur. Der Nachteil dieses DBS besteht darin, dass
sich
nur
1:1 oder
1:N
Beziehungen
darstellen lassen.
XMLDBS sind eine Art hierarchischer DBS. Sie werden heute
nur noch selten verwandt.
Netzwerk
Die
Datenobjekte
sind
über
Netzwerke
miteinander
Datenbanksysteme
verbunden. Es existiert keine hierarchische Struktur zwischen
den Datenobjekten. Rein theoretisch kann jedes Datenobjekt
miteinander verbunden sein. Dieses DBS wird heute ebenfalls
so gut wie nicht mehr verwendet.
Tabelle 2-1: Bekannte DBS-Typen (Quelle: [Kersken 2003] Seite 131 ff.)
2.1.1.
Das relationale Datenbanksystem MySQL
Obwohl Datenbanksysteme wie Oracle22 oder Microsoft SQL – Server (MS SQL)23
führend im Datenbankgeschäft sind24, versucht in den letzten Jahren MySQL des
Unternehmens MySQL AB mit in die Spitze vorzudringen. Da es sich mit MySQL um
ein Open – Source – Produkt handelt und Branchenbeobachter die Lizenzumsätze
eines Unternehmens als Kenngröße für den Markt von Datenbanksystemen nutzen,
kann nur anhand der großen Verbreitung, hauptsächlich im Internet, vermutet
werden, dass das Unternehmen schon viele Teile des Datenbankmarktes für sich
beansprucht.
Es handelt sich dabei um ein relationales DBS, das in der Programmiersprache C
sowie C++ programmiert wird und dadurch auf fast alle Betriebssysteme portiert
werden kann. 1995 wurde es durch das Unternehmen TcX mit dem
hauptverantwortlichen Entwickler Michael Widenius in der Version 1.0 als Open –
Source – Produkt veröffentlicht.
Der Gedankengang, die Entwicklung von MySQL auf der Open – Source – Basis
voranzutreiben, hat das Datenbanksystem in der weiteren Entwicklung sehr
vorangetrieben. Zwar wurden erst im Laufe der Zeit Versionen von MySQL
veröffentlicht, die es als richtiges relationales Datenbanksystem erkennen ließen25,
jedoch ist diese Weiterentwicklung erst durch die daraus erwachsene Popularität und
dem unermüdlichen Eifer der Open – Source – Programmierer zu verdanken.
So existiert z.B. erst seit der Version 4.1 die Unterstützung von Subselects oder
unterschiedlicher Zeichensätze, was für den Einsatz auf dem weltweiten Markt sehr
22
23
24
25
Lt. Oracle Corporation ist Oracle das derzeit führende Datenbanksystem.
http://www.oracle.com, 20.03.2008
MS SQL ist ein von Microsoft und Sybase in Kooperation entwickeltes relationales Datenbanksystem.
http://de.wikipedia.org/wiki/Microsoft_SQL_Server, 15.09.2008
Vgl. hierzu die Geschichte der Datenbanksysteme unter:
http://de.wikipedia.org/wiki/Datenbanksystem#Geschichte, 20.04.2008
Einen tieferen Einblick in die Regeln einer relationalen Datenbank kann man über das im AddisonWesley Verlag erschiene Buch von E.F. Codd erhalten: "The Relational Model for Database
Management"
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 12 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 2: Datenbanksysteme
wichtig ist. Mit Version 5.0 kamen weitere wesentliche Änderungen26, die es MySQL
ermöglichen werden, im Markt der kommerziellen Datenbanksysteme zu bestehen
und früher oder später, in großen Unternehmen Fuß zu fassen. Neben wichtigen
Neuerungen im Bezug auf Sicherheit sei die Einführung von Views27, Stored –
Procedures oder auch Trigger, genannt28.
MySQL existiert mittlerweile in der Version 629. Diese Version ist derzeit nur im Alpha
– Release verfügbar. In Abschnitt 6-2 werden daher nur die zur Verfügung stehenden
Sicherheitstools der produktiven Version 5.0.67 betrachtet.
2.1.2.
Das relationale Datenbanksystem Oracle
Der Beginn von Oracle fand 1977 statt. In diesem Jahr gründeten die drei
Unternehmer Larry Ellison30, Ed Oates und Bob Miner das Unternehmen Software
Development Laboratories. Im darauf folgenden Jahr kam die erste Version des
Oracle – Datenbanksystems auf den freien Markt. Noch in Assembler – Code
programmiert, wurde 1979 die erste Oracle – Version veröffentlicht, die SQL
unterstützt.
1982 wurde der Name des Unternehmens in Oracle Systems umbenannt. Ende der
80er Jahre wurde in der Version 6 die Programmiersprache PL/SQL vorgestellt. Mit
dieser eigens entwickelten Programmiersprache war es möglich Schnittstellen zu den
Daten, innerhalb einer Datenbank, bereitzustellen. Novum war, dass eine
Programmiersprache der vierten Generation (SQL) mit einer Programmiersprache der
dritten Generation gepaart wurde.
Neben PL/SQL unterstützt Oracle mittlerweile eine Datenbankintegration für Java und
.NET. Darüber hinaus ist es in Oracle möglich über definierte Schnittstellen andere
Programme in anderen Programmiersprachen anzusprechen. Somit können die, in
der Datenbank enthaltenen Daten, auch Programmen zugänglich gemacht werden,
die z.B. in der Sprache C programmiert sind31.
Mittlerweile existiert das Datenbanksystem in der Version 11g und ist ein sehr
ausgereiftes System. Neben neuen Sicherheitsaspekten, die u.a. in Abschnitt 6-1
genauer erläutert werden, sind schon längere Zeit Features integriert, die in MySQL
erst seit kurzem verfügbar sind (z.B. Trigger, Views und Stored – Procedures),
ebenso implementiert, wie viele Development- und Administrationstools. Weiterhin
hat Oracle, aufgrund der großen Verbreitung, den Vorteil, dass sich viele
Softwareunternehmen darauf spezialisiert haben, Software zu entwickeln, die den
Umgang mit dem Datenbanksystem erleichtert32.
Oracle ist alleiniger Anführer im Markt der relationalen Datenbanksysteme. Die BMW
AG hat knapp 2.200 Oracle – Datenbanken im Einsatz, die Siemens AG33 sogar ca.
8.000. Seit 2005 hat Oracle die Marktführerschaft des gesamten Datenbankmarktes
26
27
28
29
30
31
32
33
Vgl. [Rüttger 2006] Seite 44 ff.
Eine View ist eine Select – Abfrage auf eine oder mehrere Tabellen, die logisch als eine eigene Tabelle
abgelegt wird.
Vgl. [Rüttger 2006] Seite 44 ff.
http://dev.mysql.com/downloads/mysql/6.0.html, 15.09.2008
Er entdeckte in einem Journal die Idee der relationalen Datenbank und sie wussten, dass noch kein
Unternehmen ein solches DBS auf den Markt gebracht hatte.
http://www.oracle.com/profit/features/p27anniv_timeline.pdf, 22.05.2008
Dieses Dokument wurde von Oracle aufgrund des 30 jährigen Jubiläums 2007 veröffentlicht.
Ein bekanntes Development – Tool ist z.B. der SQL – Navigator des Unternehmens Quest Software.
http://www.siemens.de, 15.09.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 13 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 2: Datenbanksysteme
übernommen, obwohl diese Platzierung wohl nicht zuletzt der vielen Übernahmen
anderer Software – Hersteller zur verdanken ist34.
Im Gegensatz zu MySQL kann man sagen, dass Oracle dank der 30 jährigen
Erfahrung schon viele Kinderkrankheiten ausgemerzt und wichtige Zusatzfeatures
implementiert hat. Im Laufe der Zeit wurde das Datenbanksystem aber auch immer
mehr mit zusätzlichen Tools und Features aufgebläht, die bestimmt nicht alle für den
reibungslosen Betrieb eines relationalen Datenbanksystems notwendig sind (vgl.
Abschnitt 5-4-2). Jedoch ist MySQL, als Open – Source – Produkt, kostenlos nutzbar
und mit den richtigen Programmierkenntnissen selbständig erweiterbar, was jedoch
eine nachfolgende Veröffentlichung des selbst programmierten Quellcodes
voraussetzt.
34
Vgl. [Faeskorn-Woyke et al. 2007] Seite 48
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 14 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 3: Sicherheit und deren Gegner
3.
Sicherheit und deren Gegner
Bevor auf die Sicherheitsbegriffe und die Umsetzbarkeit von Sicherheit innerhalb
eines Datenbanksystems eingegangen wird, möchte ich zunächst auf die
wesentlichen Gründe für einen Sicherheitsplan und deren Begrifflichkeiten eingehen.
Der Gesetzgeber hat die letzten Jahre viele Gesetze erlassen, die die Anforderungen
an Sicherheit in Unternehmen und damit auch deren Datenbanksystemen erhöhen
sollen. Von daher ist für Unternehmen die Einhaltung von Sicherheitsvorkehrungen
primär von rechtlicher Natur. Hier haben Unternehmen die Sorgfaltspflicht, den
Datenschutz und das Fernmeldegeheimnis zu beachten35. Beim Umgang mit
personenbezogenen Daten geht, wenn mind. 10 Personen mit diesen Daten ständig
arbeiten, die Nennung eines Datenschutzbeauftragten36 hervor, welcher die
Einhaltung der Datenschutzrichtlinien innerhalb des Unternehmens überprüft und
diese durchsetzt. Bei gravierenden Missständen kann die Aufsichtsbehörde die
Datenverarbeitung untersagen.
Weiterhin sind die informationstechnischen Bedrohungen zu beachten, welche die
letzten Jahre immer mehr zunahmen und auch noch weiter zunehmen werden. Zu
diesen Bedrohungen zählen z.B. Angriffe, also vorsätzliche Ereignisse sowie zufällige
Ereignisse und unabsichtliche Fehler.
3.1.
Bedrohungen
Unternehmen dürfen ihre Datenverarbeitung nur mittels Einhaltung der eben
genannten Gesetze überhaupt durchführen. Für jede andere Institution bzw. jeden
anderen Anwender eines Datenbanksystems sind die direkten Bedrohungen auf ein
IT – System bzw. ein Datenbanksystem jedoch der Anlass, einen Sicherheitsplan
einzusetzen. Obwohl man natürlich erwähnen muss, dass die primären Gründe, also
die Gesetze, erst durch die informationstechnischen Bedrohungen entstanden sind.
Einen Überblick über mögliche Bedrohungen und damit die Ursache allen Übels gibt
nachfolgende Abbildung:
35
36
Die entsprechenden Vorschriften und Möglichkeiten zur Einhaltung dieser Pflichten findet man auf der
Homepage des Bundesamtes für Sicherheit in der Informationstechnik unter:
http://www.bsi.bund.de, 07.06.2008
Vgl. http://www.ihk-muenchen.de/internet/mike/ihk_geschaeftsfelder/recht/Datenschutz/
Datenschutzbeauftragter.html, 17.06.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 15 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 3: Sicherheit und deren Gegner
Abbildung 3-1: Bedrohungen auf ein IT – System und dessen Komponenten (Quelle: selbst erstellt)
Die hier gezeigten Bedrohungen lassen sich in die drei Gruppen Technik, Mensch und
Naturkatastrophen einordnen. Gegen Naturkatastrophen und die Technik kann als
hauptsätzliche Schutzmaßnahme, die Durchführung regelmäßiger Backups sowie die
Einspielung aktueller Patches37 genannt werden. Da Menschen auch durch
menschliches Versagen zur Bedrohung werden können, kann mit regelmäßigen
Schulungen versucht werden, zur richtigen Handhabung mit den ihnen anvertrauten
Daten, der Bedrohung entgegenzuwirken.
Problematisch wird es jedoch bei Menschen die vorsätzlich durch Angriffe, zur
Bedrohung werden. Ihr Handeln muss man entweder Erahnen oder aber es gibt
bereits Erfahrungswerte durch getätigte Angriffe, die zur Sicherheitsvorkehrung
verwendet werden können. Durch Angriffe wurden z.B. 2005 den Unternehmen
CardSystems und Choiceline 40 Mio. bzw. 1 Mio. Kreditkartendaten entwendet38. Im
August 2008 wurde außerdem bekannt, dass dem deutschen Unternehmen SKL
(Süddeutsche Klassenlotterie), Bankdaten von ca. 17.000 Kunden gestohlen worden
sind39.
Nachfolgende Tabelle erläutert die 2006 am meisten in Erscheinung getretenen
Angriffsformen:
37
38
39
Ein Patch führt eine Fehlerbereinigung durch die Ersetzung einzelner Programmteile durch.
Dies geht aus einer Studie des Identity Theft Resource Center vom September 2005 hervor.
www.idtheftcenter.org/breaches.pdf, 26.05.2008
Vgl. http://www.heise.de/newsticker/Verbraucherzentrale-Massenhafter-Missbrauch-von-BankkontenDaten-2-Update--/meldung/114124, 21.09.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 16 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 3: Sicherheit und deren Gegner
Angriffsform
Erläuterung
Malware
Als Malware bezeichnet man meist getarnte Software, die eine
vom Benutzer unerwünschte ggf. schädliche Funktion ausführt.
Hierunter fallen z.B. Viren, Würmer und Trojaner. 2006 fielen
35% auf diese Angriffsform zurück.
Unbefugte
Hierunter fällt jeder Angriff, der darauf abzielt Daten auszulesen,
Kenntnisnahme
die nicht für die auslesende Person bestimmt sind (vgl. Tabelle 41). Hierunter zählt man z.B. Abhörversuche und Analysen des
Kommunikationsverhaltens. 12% aller Angriffe wurden hierüber
getätigt.
Cracker
Cracker hacken mit böser Absicht. Sie dringen in Netze / Rechner
ein, um dort Schaden anzurichten. Sie löschen, ändern oder
missbrauchen geschützte Datenbestände. Der Gegenpart hierzu
sind Hacker, deren Motivation gut ist. Sie arbeiten auch im
Auftrag von Unternehmen als Penetrationstester. Ebenfalls 12%
entfielen auf die Angriffsform des Cracking.
Manipulation zur
Diese Form des Angriffs ist dann gegeben, wenn Programme oder
Bereicherung
auch Berechtigungen eines DBS dahingehend manipuliert werden
um hauptsächlich Daten eines Systems auszuspähen (z.B. SQL –
Injection40). Diese, in Erfahrung gebrachten Daten, werden dann
z.B. weiterverkauft. 11% der Angriffe wurden durch diese
Angriffsform verursacht.
Sabotage
Unter Sabotage sind Angriffe zu verstehen, die darauf abzielen,
das IT – System oder deren Komponenten zu schädigen. Z.B.
zählen Denial of Service – Attacken (Gezielte Bombardierung
eines Servers, damit dieser den Dienst einstellt.) oder die
böswillige Abschaltung einer Homepage dazu. 10% aller Angriffe
entfielen auf diese Angriffsform.
Tabelle 3-1: 2006 getätigte Angriffsformen (Quelle: [kes 2007])
40
Bei einer SQL – Injection wird versucht, artfremde SQL – Statements abzusetzen um damit z.B. einen
Benutzer zu erstellen, der dazu berechtigt ist, gesicherte Daten auszulesen.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 17 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 3: Sicherheit und deren Gegner
Anhand dieser Tabelle ist zu erkennen, dass die meisten Schäden immer noch durch
Malware verursacht werden. Jedoch sind die anderen vier Angriffsformen mit knapp
10% stark vertreten und lt. [kes 2007] erst in den letzten Jahren vermehrt
aufgetaucht. Dies liegt nicht zuletzt daran, dass mittlerweile genaue Beschreibungen
von Sicherheitslücken fast jeder Software im Internet nachgeschlagen werden
können. Meist gibt es auf entsprechenden Homepages genaue Beschreibungen wie
man die Lücken ausnutzen kann. Da sich viele Angriffe gegen Sicherheitslücken
richten, die schon lange bekannt sind, würde meist schon das regelmäßige Einspielen
von sicherheitsrelevanten Patches genügen um vielen Angriffen den Wind aus den
Segeln zu nehmen.
3.1.1.
Interne Angriffe
Gegenüber der Angriffsform, wird weiterhin unterschieden ob ein Angriff innerhalb
oder außerhalb eines IT – Systems durchgeführt wird. Die einhellige Meinung, die
jeder hat, wenn er von Angriffen auf ein IT – System hört, ist, dass Eindringlinge die
meisten Verursacher von Einbrüchen auf ein IT – System sind. Entgegen dieser
Meinung hat eine Studie von 2004 ergeben, dass 70% der Angriffe, die auf eine
Komponente eines IT – Systems erfolgen, entweder durch Insider oder durch
unzufriedene Mitarbeiter geschehen41. Viele Institutionen geben große Mengen ihres
IT – Budgets für die Entwicklung einer sicheren Systemlandschaft, inkl. Firewall und
Betriebssystem aus, ohne von der größten Bedrohung zu ahnen, die innerhalb der
Institution droht. Gerade in diesem Fall ist, neben einer vertrauensvollen Auswahl
der Administratoren, auch eine sehr eng zugeschnittene Berechtigungsvergabe für
die Benutzer von Datenbanksystemen von Nöten42.
3.1.2.
Externe Angriffe
Hört man von Angriffen auf ein IT – System, so werden meist nur die externen
Angriffe vernommen, die zwar nur 30% der Angriffe ausmachen, aber trotzdem
genauso beachtet werden sollten. Zu den externen Angriffsformen zählen z.B., wie
unter Abschnitt 3-1 bereits erwähnt, Malware, Cracker, Hacker, Denial of Service –
Attacken als auch der Missbrauch von Rechnern als Bot – Netze. Bei diesen Bot –
Netzen handelt es sich um eine relativ neue Angriffsform. Dabei wird ein Programm
unerkannt auf dem Rechner eingeschleust. Mittels einer externen Fernsteuerung wird
das eingeschleuste Programm aktiviert und missbraucht den Rechner z.B. zur
Versendung von Denial of Service- oder Spam – Attacken.
3.2.
Sicherheit lt. BSI
Wie bereits erwähnt, wirken viele Bedrohungen auf ein IT – System und damit auch
auf deren Komponenten. In unserem Falle auf ein Datenbanksystem. Das Bundesamt
für Sicherheit in der Informationstechnologie (kurz: BSI) beschreibt hier drei
Schutzziele, die es, aufgrund der Bedrohungen, zu wahren gilt. Diese wichtigen Ziele
werden in nachfolgender Tabelle kurz erläutert:
41
42
Lt. einer Studie von Computer Security Institute and FBI Survey im Jahre 2004.
Vgl. Abschnitt 5-5-2
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 18 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 3: Sicherheit und deren Gegner
Schutzziel
Erläuterung
Verfügbarkeit
Die Verfügbarkeit soll gewährleistet werden. Die Funktionen bzw.
Services
eines
IT –
Systems
bzw.
einer
darin enthaltenen
Komponente sowie deren enthaltene Daten sollen dauerhaft zur
Verfügung stehen.
Integrität
Die Daten innerhalb einer Komponente sollten nur von Befugten in
beabsichtigter Weise vollständig, widerspruchsfrei und korrekt
verarbeitet werden, da ansonsten der Verlust der Integrität
gegeben ist.
Vertraulichkeit
Die in einer Komponente enthalten Daten dürfen nur befugten
Personen
zugänglich
sein.
D.h.
es
soll
kein
unbefugter
Informationsgewinn erfolgen.
Tabelle 3-2 Schutzziele für Sicherheit im IT – System (Quelle: http://www.bsi.bund.de, 15.03.2008)
Diese Schutzziele bilden die Grundlage zur Erstellung einer Risikobewertung, einer
Überprüfung des vorhandenen IT – Sicherheitsniveaus sowie einer Implementierung
und den Aufbau einer IT – Sicherheitsorganisation.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 19 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 4: Umsetzung von Sicherheit in Datenbanksystemen
4.
Umsetzung von Sicherheit in
Datenbanksystemen
Sicherheit in Datenbanksystemen ist ein sehr komplexes Thema. Datenbanksysteme
sind häufig „Out of the Box“ sehr unsicher, weshalb man zur Absicherung auch die
Systemlandschaft, in der das Datenbanksystem eingebettet ist, genau betrachten
und absichern muss43. Viele Sicherheitsprobleme werden häufig durch die Client –
Anwendungen der Datenbanksysteme verursacht, wobei z.B. die Wahl der
Passwörter von vielen Anwendern inkonsequent gehandhabt wird.
MySQL hat mit Erscheinen der Version 5.0.67 (siehe Abschnitt 6-2) schon wichtige
Sicherheitstools implementiert. Auch Oracle legt mittlerweile ein größeres
Augenmerk auf Sicherheit. So wurden z.B. bis Ende 2006 schon 28444
Sicherheitsfehler ausgemerzt. 87 dieser Sicherheitslücken betrafen hierbei
Schwachstellen der Datenbank selbst.
Die nachfolgenden Teilabschnitte beschäftigen sich mit der Umsetzung von Sicherheit
in Datenbanksystemen und den damit verbundenen IT – Systemen. Neben den „Acht
Geboten der Datensicherheit“ wird weiterhin auf einen hinzunehmenden
Sicherheitskompromiss und die Sensibilisierung aller Mitarbeiter, die direkt oder
indirekt mit dem Datenbanksystem zu tun haben, eingegangen.
4.1.
Acht Gebote der Datensicherheit
Besonders
in
Betrachtung
von
Datenbanksystemen
und
der
damit
zusammenhängenden Datensicherheit wurden vom Bundesamt für Sicherheit in der
Informationstechnik die „Acht Gebote der Datensicherheit“ entworfen. Sie sind in §9
des
BDSG45
verankert.
Sie
sollten
innerhalb
der
Verwendung
eines
Datenbanksystems ebenfalls Beachtung finden.
Gebot
Erläuterung
Zutrittskontrolle
Bei diesem Gebot sollten nur befugte Personen Zugriff auf die
Daten haben dürfen.
Zugangskontrolle
Bei den zugreifenden Personen soll eine Authentifizierung46
durchgeführt werden. D.h. dass die entsprechende Person nur
mit
eigenem
Usernamen
und
Kennwort
auf
das
System
zugreifen darf.
43
44
45
46
Vgl. Abschnitt 5-2
Vgl. http://www.red-database-security.com/wp/doag_best_of_oracle_security_2006.pdf, 26.05.2008
Red – Database – Security GmbH ist Spezialist für das Thema Sicherheit im Oracle – Umfeld.
BundesDatenSchutzGesetz
Als Authentifizierung wird die Überprüfung einer vorgegebenen Identität bezeichnet.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 20 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 4: Umsetzung von Sicherheit in Datenbanksystemen
Zugriffskontrolle
Mittels
Autorisierung47
Personen
das
Recht
wird
zuteil
geprüft,
wird
ob
eine
den
zugreifenden
bestimmte
Aktion
durchzuführen bzw. bestimmte Daten auszulesen.
Weitergabe-
Personen dürfen ihnen anvertraute Daten nicht an unberechtigte
kontrolle
Personen weitergeben.
Eingabekontrolle
Hier soll nachgeprüft werden, welche Person, wann, welche
Daten im System eingegeben hat.
Auftragskontrolle
Es soll z.B. mittels eines Berechtigungssystems innerhalb des
DBS überprüft werden, welche Personen bestimmte Prozesse
anstoßen, durchführen und beenden dürfen.
Verfügbarkeits-
Alle Daten innerhalb eines DBS sollten immer verfügbar sein.
kontrolle
Zur Erfüllung dieses Gebots besteht die Möglichkeit regelmäßig
Backups der Datenbasis durchzuführen.
Trennungsgebot
Nicht
zusammenhängende
Daten
sollten
auch
nicht
zusammenhängend gespeichert werden.
Tabelle 4-1 Acht Gebote der Datensicherheit (Quelle: [Faeskorn-Woyke et al. 2007] Seite 56 f.)
Diese acht Gebote können bereits während der Konzeption und der Einbettung des
DBS in die Systemarchitektur Beachtung finden. Indem man sich z.B. Gedanken über
Verfügbarkeits-, Zutritts-, Zugriffs- und Zugangskontrolle macht, kann schon von
Beginn an ein Fokus, auf die Benutzer der Datenbank, auf das System in dem das
DBS abgelegt wird und evtl. damit verbundene Backupmethoden, gelegt werden. Die
weiteren Gebote können innerhalb der Datenmodellierung und der Auswahl bzw. der
Rechte- und Rollenvergabe der Benutzer, Beachtung finden.
4.2.
Der Sicherheitskompromiss
Meist beginnt Sicherheit mit der Dokumentation von entsprechenden Richtlinien und
Durchführungsbestimmungen in einem Sicherheitsplan. Dieser Sicherheitsplan wird
bzw. sollte ein sehr komplexes Dokument sein, das sich durch alle Schichten eines IT
– Systems und die Organisation einer Institution schlängelt. Neben der Einhaltung
von Gesetzen und der Abwehr von allen nur erdenklichen Gefahren müssen natürlich
auch die verantwortlichen Mitarbeiter und deren Aufgaben benannt werden.
Weiterhin ist Sicherheit ein immer fortlaufender Prozess, was den Sicherheitsplan zu
einem lebendigen Dokument macht. Allein schon bei den eben genannten Punkten,
müssen früher oder später Kompromisse eingegangen werden. Die Pflege und
Kontrolle der Durchführung eines Sicherheitsplans nimmt viel Zeit in Anspruch, was
47
Die Autorisierung erfolgt nach der Authentifizierung und beinhaltet die Zuweisung von Rechten für den
angegebenen Benutzer.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 21 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 4: Umsetzung von Sicherheit in Datenbanksystemen
einen Arbeitstag durchaus füllen kann.
Ein weiterer Punkt ist immer noch die fehlende Unterstützung durch die
verantwortlichen Mitarbeiter einer Institution. Eine komplette Umsetzung von
Sicherheitsrichtlinien ist leider auch ein erhöhter Kostenfaktor. Neben laufenden
Schulungen von Mitarbeitern und Benutzern, werden i.d.R. auch zusätzliche Software
und Mitarbeiter, die die Sicherheit umsetzen, benötigt. Weiterhin sind oft
einschneidende Änderungen in der Systemarchitektur und deren Bearbeitung von
Nöten.
Da die Einführung zu strenger Sicherheitspläne, aufgrund von zusätzlich
entstehenden Kosten für weitere Sicherheitssoftware, das Trainieren der Benutzer
und die Durchführung komplexer Prozeduren oft nicht praktikabel ist, muss versucht
werden, das Sicherheitsrisiko und die Sicherheitskosten auf einem geringen Niveau
zu halten.
Um den Kompromiss zwischen Risiko und Effizienz besser beurteilen zu können,
sollte versucht werden die Gefahren bzw. Ereignisse für ein Datenbanksystem und
deren mögliche Kosten aufzulisten, um ihnen danach eine gewisse Priorität zuordnen
zu können. Ereignisse die auftreten können sind z.B. die Zerstörung des kompletten
Datenbanksystems und die dadurch entstandenen Kosten für einen Neuaufbau, die
Korruption und eine damit verbundene Neueinspielung von Programmen innerhalb
einer Datenbank oder aber das Eindringen in die Datenbank mit administrativen
Benutzerrechten. Hierdurch entstehen nicht nur direkte Kosten, wie z.B. den
Neuaufbau des Datenbanksystems. Es entstehen auch indirekte Kosten, wie z.B. der
Suche nach der Ursache oder aber zusätzliche Schulungsmaßnahmen für die
Administratoren. Daher sind die möglichen Risiken und deren mögliche Kosten genau
einzustufen, zu priorisieren und einander abzuwägen.
Die Umsetzung und Einführung eines Sicherheitsplans für Datenbanksysteme sollte
demnach ein Kompromiss zwischen reduziertem Risiko und Effizienz sein.
4.3.
Mitarbeiter sensibilisieren
Jeder noch so gute Sicherheitsplan hilft nicht, wenn Mitarbeiter die Forderungen
eines solchen Plans nicht verwirklichen. Entweder weil sie es nicht wissen oder aber
weil sie es nicht wollen.
Da erhöhte Sicherheit auch meistens erhöhten Aufwand bedeutet, wird das auch
einige Mitarbeiter abschrecken, hier erfolgreich mitzuwirken. Ungewohnte
Arbeitsabläufe und ungewohnte Barrieren fördern eine gewisse Diskrepanz
gegenüber dem Thema Sicherheit. Typische Fragen wie „Ich durfte doch die ganze
Zeit auf der Produktion Daten ändern, warum jetzt nicht mehr?“ sind an der
Tagesordnung. Hauptsächlich diese Mitarbeiter werden auch versuchen die
Anforderungen, die an sie gestellt wurden, zu umgehen.
Andere
Mitarbeiter
hingegen
haben
einfach
keine
Vorstellung
von
Datenbanksystemen und dem Thema IT – Sicherheit. Allein durch Unwissen werden
sie die Umsetzung von Sicherheitsanforderungen nicht verstehen und unterstützen
können.
Es kann festgehalten werden, dass Sicherheit nur umgesetzt werden kann, wenn die
betroffenen Personen ihre an sie gestellten Anforderungen gewissenhaft umsetzen.
Darum ist es unumgänglich, Mitarbeiter für die Sicherheitsanforderungen, die aus
einem Sicherheitsplan hervorgehen, zu sensibilisieren.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 22 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 4: Umsetzung von Sicherheit in Datenbanksystemen
Ein über ein Intranet48 oder E-Mail gesteuerter Informationsdienst, mit Informationen
über aktuelle Bedrohungen, wie z.B. Viren oder Hinweisen über aufgetretene
Sicherheitslücken, kann die Mitarbeiter informieren und nicht zuletzt sensibilisieren.
Als weitere Maßnahme sollten regelmäßig Schulungen durchgeführt werden, die z.B.
über den richtigen und sicheren Umgang der zu verwaltenden Daten eines
Datenbanksystems oder aber über die richtige Auswahl von Passwörtern (vgl.
Abschnitt 5-5-5) informieren.
48
Ein Intranet ist ein internes Netzwerk aus Rechnern / Servern, innerhalb eines Unternehmens bzw.
einer Organisation.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 23 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
5.
Erarbeitung eines Sicherheitsplans
Nachdem nun grundlegende Sicherheitsbegriffe, Datenbanksysteme und mögliche
Angriffe erläutert wurden, soll nun die Erarbeitung eines Oracle – Sicherheitsplans
erfolgen. Die Erarbeitung eines Oracle – Sicherheitsplans umfasst die Nennung von
verantwortlichen Mitarbeitern, grundlegenden Sicherheitshinweisen in Bezug auf die
umgebende Systemlandschaft und natürlich die Sicherung des Datenbanksystems
selbst.
5.1.
Verantwortlichkeiten zuweisen
Bevor Sicherheit im Datenbanksystem richtig umgesetzt werden kann, sollte
zunächst überlegt werden, wer letztlich für eine Umsetzung und Verteilung der zu
bewältigenden Anforderungen verantwortlich ist. Mit der Nennung von
Administratoren ist es allein nicht getan. Es sollte vielmehr ein ganzes Netz aus
Personen gesponnen werden, die einen Teil zur Sicherheit beitragen. Dieses Netz
sollte aus allen Personen, die direkt oder indirekt mit dem Datenbanksystem zutun
haben, bestehen. Denn nur wenn jeder seinen Teil zum Ganzen beiträgt, kann das
Datenbanksystem und damit auch die Sicherheit der Daten gewährleistet werden.
Sicherheit und Datenbanksysteme sind meist zwei verschiedene Welten. Während
eine Datenbankgruppe oft wenig Hintergrundwissen zum Thema Sicherheit besitzt,
hat eine Security – Gruppe meist wenig Wissen über Datenbanken und der
Notwendigkeit, deren enthaltene Daten zu sichern. Dies liegt auch daran, dass
Security im Datenbankumfeld i.d.R. eine andere Rolle spielt. Hier geht es meist um
Fragen, wie Benutzerrollen oder Privilegien der Benutzer. Weiterhin sind
Datenbanksysteme meist sehr komplex, was es den Anwendern schwierig macht ein
weiteres Verständnis für Sicherheitsprobleme außerhalb der Datenbanken zu
entwickeln. Außerhalb der Datenbanken haben Systemadministratoren i.d.R. kein
oder zumindest relativ wenig Datenbankwissen. Sie kennen sich zwar bestens mit
Betriebssystemen aus, jedoch ist die darauf installierte Software meist nur
oberflächlich bekannt und existiert für sie nur als Blackbox49.
In Bezug auf diese Problematik wäre es wünschenswert Sicherheitsmitarbeiter zu
beschäftigen die einen grundlegenden Überblick über die gesamte Systemlandschaft
besitzen und Sicherheitslücken aller Komponenten innerhalb eines IT – Systems
kennen und diese zum Schutz des Datenbanksystems einsetzen.
Hat eine Organisation eine gewisse Größe erreicht, haben auch viele weitere
Abteilungen, außerhalb der IT – Abteilung, indirekt mit Datensicherheit zutun. Hier
wäre
eine
Zusammenarbeit
mit
anderen
Abteilungen
wünschenswert.
Sicherheitsanforderungen und –pläne könnten zusammen erarbeitet und mit Hilfe
der jeweiligen Abteilungen (Datenbankadministratoren, Datenbankprogrammierer,
Fachabteilung usw.) besser durchgesetzt werden.
Nachfolgende
Tabelle
Sicherheitsmitarbeitern:
49
zeigt
eine
mögliche
Zusammensetzung
von
Die Software ist nur über die nach außen gelegenen Schnittstellen bekannt. Dadurch fehlt
Hintergrundwissen in Bezug auf das interne Arbeiten der Software.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 24 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Mitarbeiter
Erläuterung
Datenbank-
Datenbankadministratoren sind für das Datenbanksystem und
administrator
dessen Komponenten verantwortlich. Ihr Aufgabengebiet kann in
verschiedene Gruppen eingeteilt werden. In der Praxis wird meist,
auf horizontaler Ebene, zwischen Applikationsadministratoren und
Administratoren für den restlichen Bereich unterschieden.
Die Applikationsadministratoren sind für die Applikationen rund
um die Datenbank verantwortlich. Sie sind u.a. für die Anbindung
der Forms – Masken, der PL/SQL – Packages, der Stored –
Procedures usw. zuständig.
Die andere Gruppe der Administratoren ist für den reibungslosen
und sicheren Betrieb des Datenbanksystems verantwortlich. Sie
können z.B. Konfigurationsdateien einspielen und ändern, neue
Schemas anlegen, die Performance und Speicherintensität der
Datenbank kontrollieren und verbessern, Sicherheitstools des
Datenbanksystems einspielen, die Berechtigungen sowie Rollen
vergeben und das DBS auf dem Betriebssystem warten.
Möchten
Entwickler
ihre
Programme
auf
höher
gelegenen
Datenbankinstanzen einspielen (z.B. von der Testdatenbank auf
die
Produktionsdatenbank)
Unterscheidung
Entwicklungs-
der
und
gibt
es
noch
eine
vertikale
Administratoren.
Hier
wird
zwischen
Produktionsadministratoren
Programmierer
können
durchführen,
müssen
somit
Änderungen
diese
Produktionsadministratoren
in
aber
die
unterschieden.
an
Programmen
erst
über
produktive
die
Datenbank
einspielen lassen.
Betriebssystem-
Für das reibungslose Funktionieren des Betriebssystems sind
administrator
diese
Mitarbeiter
Antivirensoftware
verantwortlich.
ein,
Sie
kontrollieren
spielen
Patches
eingespielte
und
Software,
vergeben Berechtigungen für Verzeichnisse (z.B. könnte eine
erstellte Gruppe50 Datenbankadministratoren, die Berechtigung
erhalten, die Verzeichnisse des Datenbanksystems selbst zu
50
Gruppen werden im Zusammenhang mit IBM – AIX im Abschnitt 5-3-1 und Abschnitt 5-3-3
beschrieben.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 25 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
verwalten), verbessern die Performance und Speicherverwaltung,
sichern das Betriebsystem und sorgen letztlich für das perfekte
Zusammenspiel zwischen Datenbank- und Betriebssystem.
Netzwerk-
Netzwerkadministratoren sollten die sichere Vernetzung im Auge
administrator
haben. Sie ermöglichen z.B. eine sichere Netzwerkverbindung
über Virtual Private Network (VPN) und über Secure Socket Layer
(SSL). Weiterhin kümmern sie sich um die richtige Konfiguration
von Firewalls, Routern, Switches und sorgen dafür, dass die
Datenübertragung zwischen verschiedenen Systemlandschaften
und den darin enthaltenen Datenbanksystemen nur über zuvor
definierte Schnittstellen erfolgt. Somit wird dafür gesorgt, dass
nur valide Daten im Datenbanksystem ankommen.
Internet-
Im Falle einer Internetanbindung liegt hier die Verantwortlichkeit,
administrator
den Webauftritt so in der Systemlandschaft zu platzieren und zu
warten, dass das Zusammenspiel mit den übrigen Komponenten
eines Netzwerkes perfekt funktioniert. Der richtige Einsatz einer
Demilitarisierten Zone (DMZ)51 ist hier ebenfalls gefragt. In
Zusammenarbeit mit Penetrationstestern sorgen sie auch dafür,
dass der Webauftritt gegen Angriffe abgeschottet ist.
Security-
Bei größeren Unternehmen existiert weiterhin eine Security –
Abteilung
Abteilung. Diese ist u.a. für die Kontrolle des Auditing zuständig.
Das Betriebssystem- bzw. Datenbank – Auditing (vgl. Abschnitt
5-3-4 und Abschnitt 5-6-4) wird von ihnen auf besondere
Vorkommnisse kontrolliert. Neben Berechtigungsvergaben an
verschiedene Benutzergruppen wird auch die Umsetzung der
Sicherheitsvorgaben,
sowie
die
Arbeit
der
Administratoren
überprüft.
Penetrations-
Penetrationstester existieren i.d.R. ebenfalls nur bei größeren
tester
Unternehmen. Sie spüren Sicherheitslücken bzw. fehlerhafte
Konfigurationen auf und fixen diese. Bei kleineren Unternehmen
oder Organisationen werden auch externe Penetrationstester
engagiert um Sicherheitsprobleme aufzuspüren und zu beseitigen.
Tabelle 5-1 Sicherheitsmitarbeiter (Quelle: Vgl. [Newman et al. 2004] Seite 86)
51
Vgl. Abschnitt 5-2-2
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 26 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Diese Tabelle zeigt auf, dass Verantwortlichkeiten und Sicherheitswissen des IT –
Systems auf viele Personen verteilen werden muss um einen umfassenden
Sicherheitsplan für ein Datenbanksystem zu verwirklichen.
Die Personen müssen während der Durchführung eines Prozesses (z.B. die
Einspielung neuer Daten in die Datenbank) einerseits miteinander kommunizieren
um den Prozess zu vervollständigen. Andererseits ist das komplette Wissen von
Sicherheitstools und eventuellen Sicherheitslücken auf viele Personen verteilt. Dies
macht es einem internen Angreifer schwer, sein Vorhaben zu verwirklichen.
Weiterhin erhöht sich, da jede Person ein exakteres Wissen über seinen Teilbereich
von Aufgaben hat, die Qualität und Sicherheit des gesamten IT- und
Datenbanksystems.
5.2.
Die Systemlandschaft
Wie schon in Abschnitt 4 erwähnt sind Sicherheitslücken sowie fehlerhafte
Konfigurationen und somit Angriffspunkte auf ein Datenbanksystem häufig außerhalb
zu finden. Von daher reicht die Absicherung des Datenbanksystems allein nicht aus,
um dafür zu sorgen, dass die enthaltenen Daten sicher sind. Es muss zunächst
geklärt werden, mit welchen Komponenten das Datenbanksystem interagiert.
In diesem Fall wird davon ausgegangen, dass das Datenbanksystem in dem
Betriebssystem IBM – AIX eingebunden ist. Weiterhin ist dieses Betriebssystem Teil
eines Netzwerkes, das vom Internet ansprechbar und damit auch angreifbar ist.
Demnach wird neben dem Betriebssystem, der Einsatz einer Demilitarisierten Zone
kurz betrachtet.
5.2.1.
Das Betriebssystem IBM – AIX
Die erste Version von UNIX wurde 1969 von Ken Thompson und Dennis Ritchie, in
den Bell – Laboratories52, entwickelt. Diese Urversion von UNIX wurde in Assembler
geschrieben. Nachdem beide Entwickler 1970 die Programmiersprache C (was heute
übrigens eine der weit verbreiteten Programmiersprachen ist) erfanden, wurde UNIX
in diese Sprache umgeschrieben. 1973 wurde UNIX zu Ausbildungszwecken erstmals
an Universitäten eingesetzt.
Seither wurden viele neue Varianten entwickelt. Da UNIX von vielen Unternehmen
weiterentwickelt wurde, existieren mittlerweile viele verschiedene UNIX - Versionen.
Diese Weiterentwicklung sorgte dafür, dass jeweils sehr stabile und sichere Systeme
entstanden sind. Das derzeit führende UNIX – Betriebssystem heißt Solaris und wird
von dem Unternehmen Sun – Microsystems entwickelt und vertrieben.
IBM – AIX wird, wie der Name schon sagt, von IBM entwickelt. Dieses System
zeichnet sich durch eine sehr gute Skalierbarkeit53 und Zuverlässigkeit aus, was
Hauptkriterien für den sicheren und stabilen Einsatz eines Datenbanksystems sind.
Die Interoperabilität54 und die Benutzerfreundlichkeit sind mit "gut" zu bewerten. Der
52
53
54
Heute als Unternehmen mit dem Namen AT&T bekannt.
Über die Skalierbarkeit wird angegeben, wie ein System mit großen Mengen an Prozessen bzw.
Transaktionen und dem daraus resultierenden Datenstrom umgeht.
Die Interoperabilität beschreibt die Zusammenarbeit mit anderen Produkten (auch die anderer
Unternehmen) und Industriestandards.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 27 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Preis sowie die Kosten für den Support und Schulungen sind jedoch sehr teuer. Ein
Sicherheitsexperte des Unternehmens Google aus der Niederlassung in Dublin,
berichtete aus eigener Erfahrung, dass die von IBM zu erhaltende Hardware ebenfalls
überteuert und einige, damit verbundene Komponenten, veraltet wären und nicht
den neuesten Sicherheitsrichtlinien entsprechen.
UNIX – Betriebssysteme werden hauptsächlich von großen Unternehmen und
Hochschulen eingesetzt. Das IBM eigene Datenbanksystem DB2 sowie das extra für
UNIX entwickelte Datenbanksystem Oracle bilden den Großteil der vertretenden
Datenbanksysteme auf AIX.
5.2.2.
Errichtung einer DMZ
Wie schon in den vorigen Abschnitten erwähnt, ist es in größeren Institutionen
weiterhin wichtig eine Demilitarisierte Zone55 einzusetzen. Es handelt sich hierbei um
eine Technik, interne vor öffentlichen Netzwerken, wie z.B. dem Internet zu
schützen. Eine DMZ sollte also immer dann zum Tragen kommen, wenn mehrere
Rechner in einem Netzwerk miteinander verbunden sind und einer dieser Rechner
über das Internet angebunden ist.
Der oder die Rechner die ans Internet angebunden sind, z.B. Webserver oder FTP –
Server, liegen in dieser DMZ. Die DMZ kann vom Internet, als auch von den internen
Rechnern, dem Intranet des Unternehmens, angesprochen werden. In
Organisationen und Unternehmen in denen eine direkte Weiterleitung von Daten aus
dem Internet zum Intranet keine ökonomische Relevanz hat, sollten die im Intranet
enthaltenen Rechner selbst dafür verantwortlich sein, Daten, die zuvor über das
Internet zur Verfügung gestellt wurden, abzuholen.
Gerade in Bezug auf ein Datenbanksystem und der Notwendigkeit, dieses mit dem
Internet zu verbinden, ist die Einführung einer DMZ bzw. mehrerer DMZ sehr
sinnvoll. Daten die über das Internet in die Datenbank eingespielt werden sollen,
können z.B. in einem täglichen Lauf abgerufen und in die interne, im Intranet
liegende, richtige Datenbank, eingespielt werden. Das Datenbanksystem, das in der
DMZ liegt, sollte nur ganz wenige Berechtigungen, Benutzer und keine
sicherungsbedürftigen Daten beinhalten. Das Internet sollte zur DMZ und dem darin
enthaltenen Webserver bzw. Datenbanksystem über eine erste Firewall geschützt
sein. Das Intranet selbst sollte dann ebenfalls wieder über eine Firewall zur DMZ
verbunden und gesichert sein.
Weiterhin muss beachtet werden, dass nur die notwendigste Software auf den, in der
DMZ liegenden, Rechnern eingespielt wird. Jede Software ist ein zusätzlicher
Angriffspunkt und birgt Gefahrenpotenziale. Da wohl keine Software perfekt ist,
enthält jede Software Bugs, die im Extremfall als Sicherheitslücke ausgenutzt werden
kann56.
55
56
Vgl. http://www.itwissen.info/definition/lexikon/demilitarized-zone-DMZ-Demilitarisierte-Zone.html,
23.06.2008
Eine zusätzliche Beschreibung zur richtigen Absicherung eines gesamten Netzwerkes, würde den
Inhalt dieser Arbeit sprengen. Von daher sei hier auf weiterführende Literatur verwiesen.
http://www.amazon.de/s/ref=nb_ss_w?__mk_de_DE=%C5M%C5Z%D5%D1&url=searchalias%3Daps&field-keywords=netzwerksicherheit, 07.08.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 28 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
5.3.
Absicherung des Betriebssystems IBM – AIX
Die Absicherung eines IBM – AIX – Systems ist sehr vielseitig und könnte ganze
Bücher füllen. Allein deshalb sei darauf hingewiesen, dass es sich hier nur um
grundlegende Sicherheitsanforderungen bzw. Umsetzungen handeln kann. Um
ausführliche Sicherheitstools nutzen zu können, sei auf das Administrationsbuch
[Michael 2002] verwiesen.
IBM – AIX ist, wie jedes andere UNIX, ein Multiuser – System. Wie in nachfolgender
Grafik dargestellt, bedeutet dies, dass sich mehrere Benutzer gleichzeitig an dem
Betriebssystem anmelden und auch damit arbeiten können.
Abbildung 5-1: Multiuser – System (Quelle: selbst erstellt)
Anhand dieser Betrachtung wird sehr schnell deutlich, dass aufgrund der vielen
Benutzer ein erhöhtes Sicherheitsrisiko besteht. Selbst wenn das Betriebssystem an
kein öffentliches Netzwerk angeschlossen ist, treten allein durch die Anzahl der
möglichen Benutzer viele Sicherheitsrisiken auf, die entsprechend ausgeschaltet
werden müssen.
Die in den folgenden Teilabschnitten erwähnten Sicherheitstools und -möglichkeiten
gelten sowohl für IBM – AIX als auch für sonstige UNIX – Betriebssysteme. Daher
werden beide Begriffe, IBM – AIX als auch UNIX, gleichbedeutend verwendet.
5.3.1.
Dateisicherheit
Um mit Berechtigungen innerhalb eines UNIX – Betriebssystems richtig umgehen zu
können, wird zu Beginn auf das von UNIX verwendete Berechtigungssystem
eingegangen.
Dieses stellt drei Berechtigungsebenen zum Schützen von Dateien und
Verzeichnissen zur Verfügung: den Dateibesitzer, die Dateigruppe und alle anderen
Benutzer. Zu erwähnen ist, dass die Dateiberechtigungen nicht einem Einzelnen, bis
auf den Dateibesitzer, erteilt oder entzogen werden können sondern nur Gruppen
und den restlichen Usern.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 29 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Weiterhin gibt es drei verschiedene Berechtigungstypen: Lesen, Schreiben und
Ausführen. Über den Befehl „ls –l“ werden die Dateien, Verzeichnisse und
symbolischen Links57 in einem Verzeichnis angezeigt. Vor jeder Datei steht eine 10
Zeichen lange Zeichenkette, die anhand des nachfolgenden Beispiels kurz erläutert
wird:
-rwxrwxr-x
1 vtadm
vt
515
27 Mai 2004 umgebung_Q60.sh
Der erste Buchstabe, in unserem Fall ein -, gibt an, ob es sich um eine Datei (-), ein
Verzeichnis (d) oder aber um einen symbolischen Link (l) handelt. Nach diesem
Zeichen gibt es drei Gruppen mit jeweils drei Zeichen. Die ersten drei Zeichen, hier
rwx, geben die Berechtigungen des Dateibesitzers (hier: vtadm) an. Die nächsten
drei Zeichen (ebenfalls rwx) die der Dateigruppe (hier: vt) und die letzten drei
Zeichen (r-x), die der restlichen Benutzer.
Die erste Position jeder Gruppe ist die Leseberechtigung und wird durch ein r (read)
dargestellt. Die zweite Position ist die Position mit den Schreibrechten, welches durch
ein w (write) dargestellt wird. An der dritten Position stehen die ausführbaren
Rechte. Diese werden durch ein x (execute) dargestellt. Steht an einer der
erwähnten Positionen ein -, so bedeutet dies, dass für die jeweilige Gruppe, das
jeweilige Recht entzogen ist.
Am obigen Beispiel darf die Gruppe der restlichen Benutzer (r-x) das Shellskript
umgebung_Q60.sh lesen (r) und ausführen (x), jedoch nicht schreiben (-).
Um Berechtigungen an einer Datei zu ändern, kann der Befehl chmod mit den
Aufrufparametern Zugriffsrechte und Pfad- bzw. Dateiname58 benutzt werden. Jedoch
ist dabei zu beachten, dass nicht nur den Dateien selbst, sondern auch den
Verzeichnissen, in denen die Dateien liegen, entsprechende Berechtigungen erteilt
werden müssen. Denn, wenn der entsprechende Benutzer keine Zugriffsberechtigung
auf das Verzeichnis hat, in dem die Dateien sich befinden, kann er trotz erteilter
Berechtigung auf Dateiebene, nicht auf die Datei zugreifen.
Anhand des Befehls chmod ist es also möglich für jede Datei bzw. jedes Verzeichnis
und Benutzergruppe die Berechtigungen genau einzustellen um einem Missbrauch an
Dateien frühzeitig einen Riegel vorzuschieben.
5.3.2.
Das administrative Konto Root
Die Autorisierung als Root – Benutzer ist weiterhin ein wichtiger Aspekt in der
Absicherung. Es handelt sich dabei um das administrative Konto von UNIX –
Systemen. Dieses Konto erlaubt es dem Benutzer, jeglichen möglichen Befehl auf
dem Betriebssystem auszuführen. Um es einer evtl. Brute – Force – Attacke59
möglichst schwer zu machen, sollte das Passwort für dieses Konto in keinem
Wörterbuch zu finden sein. Weiterhin sollten Zahlen und Sonderzeichen, ebenfalls
wie Groß- und Kleinbuchstaben verwendet werden. Da bei einem sechs Zeichen
langen Kennwort ca. eine Milliarde Vergleiche notwendig sind um das Passwort zu
knacken, sollte die Verwendung eines zwölf Zeichen langen Kennworts halbwegs
57
58
59
Als symbolischen Link bezeichnet man eine Referenz auf eine Datei oder ein Verzeichnis.
Für das oben genannte Beispiel hätte der Befehl folgendermaßen ausgeführt werden können:
„chmod 775 umgebung_Q60.sh“
Vgl. [Michael 2002]
Mittels dieser Attacke, wird versucht, mit allen möglichen Kombinationen aus Wörtern (meist
entstammt die Grundlage einem Wörterbuch) das Passwort oder aber den Namen des Benutzers
herauszufinden.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 30 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
sicher sein. Dieses könnte z.B. folgendermaßen aussehen: tJ8mPü48ß{tz.
Zugegeben, dieses Kennwort ist nicht leicht zu merken, es erfordert jedoch sehr viel
Aufwand es zu knacken. Da die Gültigkeit des UNIX – Passworts keine gewisse
Gültigkeitsdauer hat, sollte das Passwort nach einer festgelegten Zeit geändert
werden. Dieser Zeitraum kann jedoch nicht verallgemeinert werden. In großen
Unternehmen ist es, im Gegensatz zu kleinen, nicht möglich, dass ein Administrator
z.B. alle drei Monate sein Kennwort ändert, da er hier nicht selten tagelang damit
beschäftigt wäre, sein Passwort zu ändern. Hier sollten größere Zeiträume (z.B. alle
sechs Monate) gewählt werden. Der Prozess zur Änderung eines Kennworts kann so
durchdacht werden, dass Administratoren z.B. jeden Monat nur einen gewissen Teil
ihrer Passwörter ändern müssen, womit sich der Gesamtaufwand besser verteilt.
Ein Problem, dass bei großen Unternehmen und somit in der Praxis leider nur sehr
schwer zu korrigieren ist, ist die Tatsache, dass Benutzer für unterschiedliche
Systeme oft das gleiche Passwort verwenden. Ist also ein Passwort bekannt, so sind
gleich mehrere Passwörter bekannt. Bei bspw. 800 wartbaren Servern, würde ein
Administrator jedoch 800 verschiedene Kennwörter benötigen und somit kennen
müssen. Hier sollte zumindest durch Vorgaben versucht werden, bestimmte
Passwortkonventionen, wie z.B. ein zwölf Zeichen langes Passwort, zu erzwingen. Als
Kompromiss könnten auch Konventionen eingesetzt werden, die auf verschiedenen
Systemen, z.B. Passwörter erlauben, die bis auf eine Stelle gleich sind. Die jeweils
erste Stelle eines Kennworts könnte z.B. eine feste und bekannte Nummer einer IP –
Adresse eines jeweiligen Servers beinhalten. Bei kleineren Unternehmen und
Organisationen sollte jedoch darauf geachtet werden, dass bei verschiedenen
Systemen auch immer verschiedene Passwörter eingesetzt werden.
Für das Betriebssystem, wie auch später das Datenbanksystem, sollten mehrere
Administratoren eingetragen werden. Sollte ein Administrator aus irgendeinem Grund
ausfallen oder aber aufgrund eines neuen, für ihn unangenehmen, Abteilungsleiters
zur Gefahrenquelle werden, gibt es weitere Administratoren, die die Arbeit
übernehmen können. Es versteht sich von selbst, dass die Datenbankadministratoren
und die Betriebssystemadministratoren unterschiedliche Personen sein sollen.
Je nach Größe des Unternehmens und Möglichkeit der Umsetzung, sollte folgende
Umgebung geschaffen werden um Administratoren eine unrechte Arbeitsweise zu
erschweren:
•
Überwachung der Aufgaben eines Administrators.
•
Kontrolle von Skripten bevor sie eingespielt und ausgeführt werden.
•
Prozesse so gestalten, dass sie nur zu zweit ausgeführt werden
können.
•
Unterschiedliche
verteilen.
•
Nur die für die Aufgaben unbedingt notwendigen Berechtigungen
vergeben.
Aufgaben
an
unterschiedliche
Administratoren
Benötigt ein Benutzer, z.B. zur Einspielung eines Patches des Datenbanksystems,
kurzzeitig Administrationsrechte am Betriebssystem, so empfiehlt sich hierfür die
Verwendung des von UNIX zur Verfügung gestellten und in der Praxis etablierten
Befehls sudo. Mit diesem Befehl kann bestimmten Usern, z.B. zum Aufruf eines
Programms, das der Berechtigung eines Root – Benutzers bedarf, Berechtigungen für
explizit genannte Programme vergeben werden. Hierfür müssen die jeweiligen
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 31 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Informationen in der Datei /etc/sudoers hinterlegt werden60.
Bei größeren Unternehmen ist es, aufgrund von erheblichen, zusätzlichen Kosten und
einer zunehmenden Reaktionszeit, leider oft nicht möglich alle der genannten
Überwachungsinstanzen einzuführen. Hier sollte, nach eingehender Analyse der
Arbeitsprozesse, ein wirtschaftlicher Kompromiss zwischen Sicherheit und Kosten
bzw. Reaktionszeit erreicht werden.
5.3.3.
UNIX – Benutzer und deren Passwörter
Da UNIX ein Multiuser – System ist, erlaubt dieses System mehrere Benutzer
anzulegen um diese bei der Anmeldung zu authentifizieren. Während der Erstellung
muss dem Benutzer weiterhin ein Passwort zugewiesen werden. Zusätzlich können
Gruppen61 erstellt werden, um den Benutzern gemeinsame Berechtigungen
zuzuweisen. Benutzer können mehreren Gruppen zugeordnet sein, jedoch kann eine
Gruppe selbst kein Mitglied einer anderen Gruppe sein.
Standardmäßig werden unter UNIX erstellte Benutzer und deren Kennwörter in einer
Benutzerliste, in der Datei /etc/passwd, gespeichert. Diese Datei ist von allen
Benutzern des UNIX – Systems lesbar, jedoch nur vom Root – Benutzer editierbar.
Die Kennwörter sind in dieser Datei als Kennwort – Hashes abgelegt, die durch
Einwegfunktionen, wie dem MD5 Message Digest – Algorithmus62 generiert wurden.
Gruppen werden ebenfalls in einer solchen Datei abgelegt. Die Liste der Gruppen,
inkl. Kennwort – Hashes, wird in einem ähnlichen Format in der Datei /etc/groups
gespeichert.
Jemand, der sich nun auf seinem Rechner anhand einer Wortliste und des gleichen
Algorithmus, ebenfalls Kennwort – Hashes genieren lässt, kann diese vergleichen und
somit ein unsicheres Passwort innerhalb von Minuten knacken.
Dies wurde bei den meisten Systemen behoben, indem die Hashes in die Datei
/etc/shadow verschoben wurden. Für Gruppen wurde dies durch eine Verschiebung
in /etc/gshadow gelöst. Das besondere daran ist, dass nur noch das administrative
Konto Lesezugriff auf die Dateien hat.
Um die Kennwörter zu schützen, sollte die Aktivierung dieser Option kontrolliert
werden. Indem der Administrator den Befehl pwconv ausführt werden alle Kennwort
– Hashes, aus der Datei /etc/passwd entfernt und in /etc/shadow geschrieben. Für
Gruppen erfolgt die Verschiebung in /etc/gshadow anhand des Befehls grpconv.
5.3.4.
Auditing
Als letzten separaten Punkt soll das Auditing erwähnt werden. Es dient dazu die
Aktivitäten auf dem Betriebssystem detailliert zu protokollieren. Auf IBM – AIX
erfolgt die Speicherung der Protokollierungen in den Verzeichnissen /var/log und
/var/adm. Standardmäßig hat jeder Benutzer Leserechte auf die darin enthaltenen
60
61
62
Vgl. [Michael 2002]
Unter UNIX ist eine Gruppe eine Liste von Benutzern.
Es handelt sich hierbei um eine kryptographische Hash – Funktion, die einen Hash – Wert von 128 Bit
erzeugt. Dieser Wert wird in der Datei passwd als 32 stelliger Hexadezimal – Wert abgespeichert.
Unter den meisten UNIX – Systemen kann man den Befehl „md5sum <zu hashender Wert>“ zur
Erstellung eines Hash – Wertes verwenden.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 32 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Dateien. Auch wenn die Dateien für einen Laien nur schwer zu analysieren sind,
sollte die Leseberechtigung entzogen werden.
Die Protokolldateien sollten häufig nach unbekannten oder nicht autorisierten IP –
Adressen sowie nach ungewöhnlichen Aktivitäten, wie Port – Scans63 durchsucht
werden.
Um die Protokollierungen vor unberechtigten Lesezugriffen zu schützen, können die
Dateien auch an einem anderen Ort gespeichert werden. Die Änderung bzw. Angabe
dieses Ortes erfolgt in der Datei /etc/syslog.conf.
Das Auditing ist zwar wichtig, benötigt aber auch einen zusätzlichen Overhead. Je
mehr mitprotokolliert wird, desto mehr Performance geht verloren. Es sollte also
auch hier nicht alles und jeder nur erdenkliche Befehl protokolliert werden.
5.3.5.
Sonstige Sicherheitsaspekte
Erwähnenswert ist die simpelste Absicherung. Der entsprechende Server sollte in
einem sicheren Serverraum untergebracht sein. Ziel ist es, dass der Server gegen
menschliche und höhere Gewalt geschützt ist. In der Praxis gibt es sogar Fälle, in
denen der Serverraum gegen schwere Waffen, wie z.B. Raketenwerfer geschützt ist.
Weiterhin sollte gründlich überlegt werden, ob ein Remote – Zugriff für Benutzer des
Betriebssystems notwendig ist. Um eine Fernwartung zu ermöglichen, sollte maximal
den Administratoren ein solcher Zugriff gewährt werden. Denn, wenn dies keinem
Benutzer gestattet ist, kann auch niemand sonst versuchen, sich über Remote –
Zugriff auf dem System einzuloggen.
Ebenfalls sollten alle Netzwerkdienste, die nicht benötigt werden, deaktiviert werden.
Läuft auf dem Betriebssystem nur das Oracle – Datenbanksystem, so sollten lediglich
die Dienste, die im Zusammenhang mit Oracle benötigt werden, genutzt werden. Die
Dienste werden i.d.R. beim Starten des Betriebssystems gestartet. Die dafür
verantwortlichen Skripte liegen in den Verzeichnissen /etc/rc2.d und /etc/rc3.d.
Ein weiterer wichtiger Teil in der Absicherung des Betriebssystems besteht, wie
schon in vorigen Abschnitten erwähnt, in der Einspielung von Patches. Es sollten
regelmäßig Newsgroups64 und in Bezug zu IBM – AIX die Homepage von IBM65
durchforstet werden, um das System mit entsprechenden Patches sicher zu halten.
Als letzter Punkt soll darauf hingewiesen werden, dass auf dem Betriebssystem nur
die Software eingespielt werden sollte, die auch wirklich auf dem System benötigt
wird. Jegliche Software, die mit IBM ausgeliefert, aber nicht benötigt wird, sollte
entfernt werden, denn jede zusätzliche Software bietet mögliche Bugs sowie einen
weiteren neuen Einstiegspunkt in das System und somit ein weiteres
Sicherheitsrisiko.
63
64
65
Bei einem Port – Scan untersucht ein Programm die Ports des Betriebssystems und protokolliert,
welche Ports offen und welche geschlossen sind.
Einer der bekanntesten Newsgroups zu sicherheitsrelevanten Themen von UNIX und anderen
Systemen, ist die folgende Homepage:
http://www.securityfocus.com, 12.07.2008
Patches zur Einspielung von IBM – AIX erhält man über den Link:
http://www-933.ibm.com/eserver/support/fixes/fixcentral/pseriesfixpackdetails/5300-07-00-0747,
12.07.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 33 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
5.4.
Der Anfang zur Sicherung des Oracle –
Datenbanksystems
Da Oracle das am verbreiteten, relationale Datenbanksystem weltweit ist, ist es nicht
schwer zu erahnen, dass der Fokus, gerade was Sicherheitslücken angeht, genau auf
diesem DBS liegen. Einerseits entsteht hierdurch ein positiver Nebeneffekt. Oracle
selbst ist sehr darum bemüht so viele Sicherheitslücken wie möglich auszumerzen.
Andererseits werden durch die Fokussierung auch immer neue Sicherheitslücken
aufgedeckt.
Die Sicherheitslücken sind im Umfang eines Datenbanksystems enthalten und
werden kostenlos mitgeliefert. Auch wenn Oracle in den letzten Jahren bereits viele
dieser Sicherheitslücken ausgemerzt hat, bleiben diese Lücken oft, gerade bei älteren
Installationen, bestehen. Oracle ist im Ausmerzen von diesen Problemen nicht
gerade schnell. Nachdem eine Sicherheitslücke bekannt wurde, dauert es
durchschnittlich 1,5 Jahre bis zur Veröffentlichung eines Patches66. Leider führen oft
fehlerhafte Konfigurationen des Datenbanksystems dazu, dass Sicherheitslücken als
Angriffspunkt benutzt werden können.
Deshalb soll dieser Abschnitt dazu dienen entstandene Lücken vor, während und
nach der Installation zu schließen, um das Betriebssystem sowie das
Datenbanksystem von Beginn an zu schützen.
5.4.1.
Oracle – Gruppen und Benutzer unter UNIX
Bevor Oracle auf dem Betriebssystem installiert wird, sind einige Regeln zu beachten
um die Datenbank sowie das Betriebssystem ein Stück sicherer zu machen.
Oracle selbst rät aus Sicherheitsgründen dazu verschiedene Gruppen bzw. Benutzer
anzulegen um das Datenbanksystem auf dem Betriebssystem zu installieren bzw. zu
administrieren. So empfiehlt Oracle auf UNIX – Betriebssystemebene z.B. die
Erstellung einer Gruppe namens oinstall, welche dazu dient die Datenbank auf dem
System zu installieren. Weiterhin wird dazu geraten eine Benutzergruppe namens
dba zu erstellen. Diese gilt als Synonym für Datenbankadministratoren und dient
dazu, das DBS später zu administrieren. Zum Schluss sei erwähnt, dass ein User mit
dem Benutzernamen oracle angelegt werden sollte, der als Eigentümer bzw.
Installateur der Software fungiert.
Da die Erstellung der Benutzer bzw. Gruppen von Oracle empfohlen wird, lässt sich
daraus folgern, dass diese Informationen noch weiteren Menschen bekannt sind. Hat
nun einer dieser Menschen schlechte Absichten und möchte sich zudem noch Zugang
zum Betriebssystem verschaffen, so versucht dieser sich auf dem UNIX –
Betriebssystem mit solchen Benutzern anzumelden. Aus Sicherheitsgründen sollten
die angelegten Benutzer mit sehr starken Kennwörtern geschützt werden. Auch hier
sollte die Verwendung eines zwölf Zeichen langen Passworts genügen.
66
Siehe http://www.red-database-security.com/wp/oracle_sicherheit_dt.pdf, 10.07.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 34 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
5.4.2.
Zusätzliche Oracle – Features
Je größer ein System wird, desto mehr zusätzliche Softwarepakete werden mit jeder
neuen Version ausgeliefert. Dies ist von dem größten Hersteller für Client –
Betriebssysteme, von dem Betriebssystem IBM – AIX und natürlich auch vom
Datenbanksystem Oracle bekannt.
Die Installation des Oracle – Datenbanksystems kann auf verschiedenen Wegen
erfolgen. Der Nutzer hat die Möglichkeit mit Binary – Files oder den GUI – Tools
Oracle Universal Installer (OUI) bzw. Database Creation Assistent (DBCA) das
Datenbanksystem zu erstellen. Mit dem OUI ist es neben der Konfiguration des
Betriebssystems weiterhin möglich unerwünschte Softwarepakete aus dem
Installationsprozess auszuschließen67.
Die in der Praxis gängige Methode das Datenbanksystem sowie die Datenbanken
anzulegen erfolgt mit Hilfe der Binary – Files. Datenbankadministratoren wählen
diese Methode u.a. deshalb, weil mit Verwendung des DBCA unsichere Datenbanken
entstehen können. Wird z.B. die Version 10.2.0.1 und danach der Patch zur Version
10.2.0.4 installiert, so entsteht eine unsichere Datenbankinstallation, da der DBCA
nicht die Version 10.2.0.4 komplett über die erste Version installiert sondern beide
Versionen miteinander vermischt.
Oracle bietet, mit Auslieferung der Version 11g, drei verschiedene Versionen an. Von
der Standard – Edition One, die für kleine Unternehmen und Organisationen gedacht
ist, bis hin zur Enterprise – Edition, die für große Unternehmen geeignet ist. Je nach
Version liefert Oracle verschiedene Softwarekomponenten und Optionen mit aus68.
Weiterhin bietet Oracle, in der Version 10g, die Express – Edition, welche eine
kostenlose Einsteiger – Version ist, an. Was hier jedoch ein sehr unschöner Aspekt
ist, ist die Tatsache, dass Oracle hierfür keinerlei Sicherheits – Patches anbietet.
Anhand der Sicherheitslücken, die in dieser Arbeit noch erwähnt werden, kann die
Speicherung von wichtigen bzw. sensiblen Daten, hierfür nicht empfohlen werden.
Nachfolgende Tabelle gibt einen Überblick über bekannte, zusätzlich ausgelieferte
Komponenten bzw. Optionen der Enterprise – Edition sowie deren Nützlichkeit:
Softwarepaket
Erläuterung
Oracle Locator
Hierbei handelt es sich um insgesamt vier Komponenten die
mitinstalliert
und
Oracle Spatial
werden.
Sinn
dieser
Komponenten
ist
die
Verarbeitung und Handhabung räumlicher Daten, die z.B. für
Geographische
Informationssysteme
(GIS)
oder
CAD
–
69
Anwendungen genutzt werden .
Wird die Verarbeitung dieser Daten nicht zwingend benötigt,
sollte vorerst auf deren Installation verzichtet werden.
67
68
69
Nähere Informationen zu dem Oracle Universal Installer und dem Database Creation Assistent findet
man unter: [Bryla et al. 2007] Seite 689 ff.
Eine Auflistung über die von Oracle derzeit zur Verfügung gestellten Versionen findet man unter:
http://www.oracle.com/database/product_editions.html, 20.09.2008.
Vgl. http://www.oracle.com/lang/de/database/spatial.html, 19.07.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 35 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Oracle Real
Bei dieser Option wird die Datenbank von mehreren Rechnern
Application
angesteuert. Mindestens zwei Rechner greifen dabei auf dieselben
Clusters (RAC)
Datenbankdateien (parallel) zu. D.h. beide Rechner arbeiten
immer mit. Fällt nun ein Rechner aus oder ist überlastet, so kann
der zweite Rechner die Ansteuerung der Datenbank übernehmen.
Ziel ist eine höhere Skalierbarkeit und Ausfallsicherheit70.
Es handelt sich hierbei um eine sehr gute Option, die Datenbank
immer lauffähig zu halten. Dies kann gerade bei der Betreibung
von Online – Shops sehr hilfreich sein.
Oracle Online
Mittels
dieser
Optionen
besteht
die
Möglichkeit
die
Daten
Analytical
innerhalb der Datenbank, nicht nur für den Datenbankentwickler,
Processing
aufbereitet und strukturiert darzustellen. Ziel ist z.B. eine
Auswertung der enthaltenen Daten in eine verständliche Form.
und
Oracle Data
Mining
Hier spielt die schnelle Umwandlung von Daten in Informationen,
z.B. für die Geschäftsleitung, eine große Rolle. Somit kann z.B.
der Datenbankentwickler oder aber, früher oder später, die
Geschäftsleitung
selbst,
auf
die
Datenbank
zugreifen
und
71
Auswertungen erstellen .
Da
hieraus
die
Möglichkeit
erwächst,
dass
z.B.
die
Geschäftsleitung direkt auf den Datenbestand zugreifen kann,
liegt es auf der Hand, dass daraus früher oder später ein
Sicherheitsrisiko entstehen kann. Insofern sollte man auch die
Nutzung bzw. Installation dieser
Komponenten überdenken.
Solange die Nutzung nicht zwingend erforderlich wird, kann der
Datenbankentwickler in klassischer Weise SQL – Statements
absetzen und die Ergebnisse für die Geschäftsleitung aufbereiten.
Oracle
Oracle Multimedia war vor Version 11g unter dem Namen Oracle
Multimedia
interMedia bekannt. Es handelt sich hierbei um eine Komponente,
die dazu dient, alle gängigen Formate von Multimediadaten zu
speichern und zu verwalten. Die Daten werden in Binary Large
70
71
Vgl. http://www.oracle.com/database/rac_home.html, 19.07.2008
Vgl. http://www.oracle.com/lang/de/collateral/downloads/ORACLE_OLAP10g.pdf, 20.07.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 36 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Objects (BLOB) und Binary File Large Objects (BFILE) innerhalb
bzw. außerhalb der Datenbank gespeichert72.
Diese Komponente ist dann geeignet, wenn z.B. für einen Online
– Shop multimediale Dateien innerhalb der
Datenbank zu
speichern sind oder aber auf diese referenziert wird. Wird diese
Art der Datenverarbeitung nicht benötigt, so sollte auf diese
Komponente
gänzlich
verzichtet
werden.
Allein
durch
die
Verwendung von BFILE’s besteht ein Risiko dadurch, dass die
Datenbank auf eine Datei außerhalb des Datenbanksystems
referenziert.
Oracle Text
Diese Komponente ermöglicht das Suchen und Analysieren von
Texten innerhalb der Datenbank. Diese Suche wird mittels
Realisierung einer Volltextsuche ermöglicht. Um bestimmte Texte
zu finden, besteht u.a. die Möglichkeit, die Texte in mehreren
Tabellen gleichzeitig zu suchen73.
Dies ist natürlich nur ein kleiner Ausschnitt der Aufgabenvielfalt
dieser Komponente. Jedoch geht daraus hervor, dass diese
Komponente nur dann benötigt wird, wenn viele textlastige
Dateninhalte in der Datenbank verwendet werden. Falls dies nicht
zutrifft sollte das Datenbanksystem erstmal ohne Oracle Text
installiert werden.
Oracle
Mit Hilfe des
Oracle
Enterprise Managers
lassen sich alle
Enterprise
Anwendungen innerhalb des Datenbanksystems mittels einer
Manager
einheitlichen Konsole überwachen und auch in Bezug auf das
eingesetzte Betriebssystem managen74.
und
Oracle Grid
Control
Dieses
sehr
mächtige
Tool
ermöglicht
gerade
den
Datenbankadministratoren eine überschaubare Möglichkeit, die
Datenbank
zu
administrieren.
Bei
großen
Mengen
von
Datenbanken (über 500) besteht hierin oft die einzige Möglichkeit
diese ordentlich zu verwalten. Jedoch liegt der Schwachpunkt
darin, dass es viele Schnittstellen beinhaltet, die den Weg zu
72
73
74
Vgl. http://www.oracle.com/technology/products/intermedia/index.html, 20.07.2008
Vgl. http://www.oracle.com/technology/products/text/index.html, 20.07.2008
Vgl. http://www.oracle.com/lang/de/enterprise_manager/index.html, 20.07.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 37 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
anderen, externen Anbietern erleichtern soll. Da zusätzliche
Schnittstellen Schwachpunkte in der Sicherheit darstellen, sollte
man dies beim Einsatz bedenken.
Oracle Grid Control ist der Nachfolger des Oracle Enterprise
Manager, als eigenständige Webanwendung. Aus Gründen der
Abwärtskompatibilität
bietet
Oracle
jedoch
beide
Tools
zur
Administration der Datenbank an.
Tabelle 5-2 Zusätzliche Oracle – Softwarekomponenten (Quelle: selbst erstellt)
Generell kann gesagt werden, dass jede zusätzliche Komponente, die von Oracle
ausgeliefert wird, ihre Nützlichkeit besitzt. Jedoch sollte immer bedacht werden, dass
jede zusätzliche Software das Datenbanksystem angreifbarer macht. Daher sollte vor
der Installation der Datenbank genau überlegt werden, welche zusätzlichen Pakete
zu installieren sind und welche nicht. Generell sollte eher weniger installiert werden.
Zusätzlich benötigte Komponenten können später immer noch dazu installiert
werden. Dies kann jedoch, bei gepatchten Datenbanksystemen, zu Inkonsistenzen
und Problemen führen.
Nicht alle der eben erwähnten Komponenten und Optionen lassen sich während der
Installation ausschließen bzw. hinzufügen. D.h. dass sie in den Installationsprozess
bereits fest integriert sind. Das Vorhandensein dieser Komponenten sollte daher
überprüft werden. Sie sind ggf. wieder zu deinstallieren.
Die genannten Komponenten sind längst nicht alle, die mit dem Oracle
Datenbanksystem 11g ausgeliefert werden. Jedoch sollte es sich hierbei auch nur um
eine Ansammlung von wichtigen Optionen und den daraus resultierenden
Softwarekomponenten handeln75.
5.4.3.
Standardbenutzer und deren Passwörter
Je nachdem, welche Datenbank – Version, welche Softwarekomponenten oder aber
welche Skripte im Anschluss bzw. während der Installation des Datenbanksystems
ausgeführt werden, entstehen innerhalb der Datenbank eine Menge an
Datenbankbenutzern76 und damit zusammenhängende Schemas, von dessen
Existenz während des Installationsprozesses gar nichts bekannt wird.
Die Existenz dieser Benutzer wird während dem Installationsprozess erst seit
Erscheinen der Version 10g ersichtlich. Denn hier wird während der Installation nach
den Initialpasswörtern gefragt, die diesen Benutzern zugewiesen werden sollen.
Verfügt man jedoch noch über eine ältere Oracle – Version, so kann mancher
Datenbankadministrator schon mal ins Staunen geraten, wenn er entdeckt welche
Benutzer sich auf dem Datenbanksystem angesammelt haben, ohne dass einer von
diesen Benutzern selbst angelegt wurde.
75
76
Eine Auflistung aller Optionen und Softwarekomponenten, die mit Oracle 11g ausgeliefert werden
erhält man auf nachfolgender Webseite:
http://www.aspicon.de/oracle_datenbank/docs/Oracle_11g_Datenbank_Produkteditionen_und_Featur
es_v1-1.pdf, 18.07.2008
Auch Datenbankaccounts genannt.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 38 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Zu vielen zusätzlich ausgelieferten Komponenten legt Oracle einen User in dem
Datenbanksystem an, der für die Administration und Verwaltung dieser Komponente
verantwortlich ist. Im Oracle – Umfeld werden diese Benutzer auch Standardbenutzer
genannt. Nachfolgende Tabelle zeigt typische Standardbenutzer und deren
Passwörter:
Benutzer
Initialpasswort
Erläuterung
SCOTT
TIGER
Wohl einer der berühmtesten Benutzer
unter Oracle. Er wird, seit Oracle 9i,
immer erst dann erstellt, wenn die
Oracle – Beispiel – Datenbank
mitinstalliert wird. Bis zur Version Oracle
8i wurde dieser User standardmäßig auf
dem Datenbanksystem installiert.
SYS
CHANGE_ON_INSTALL
Neben SYSTEM gehört dieses
Benutzerkonto zu denen der
Datenbankadministratoren.
SYSTEM
MANAGER
Ebenfalls ein Konto, das zur
Administration der Datenbank benutzt
wird.
SYSMAN
CHANGE_ON_INSTALL
Der Administrationsbenutzer für den
Oracle Enterprise Manager.
DBSNMP
DBSNMP
Mit diesem Benutzerkonto steuert das
Datenbanksystem Zugriffe aus dem
Oracle Enterprise Manager.
MDSYS
MDSYS
Dieser User dient zur Administration der
Komponenten Oracle Spatial und Oracle
Locator.
OLAPSYS
MANAGER
Er wird standardmäßig zur Verwaltung
der Komponente Oracle Online Analytical
Processing installiert.
LBACSYS
LBACSYS
Sicherheitsoptionen der
Sicherheitskomponente Oracle Label
Security (siehe Abschnitt 5-6-2) lassen
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 39 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
sich mit diesem Benutzer verwalten und
erstellen.
CTXSYS
CTXSYS
Die Komponenten Oracle Text und Oracle
Multimedia werden mit diesem Konto
administriert.
Tabelle 5-3 Standardbenutzer und deren Passwörter (Quelle:
http://www.petefinnigan.com/default/oracle_default_passwords.htm, 21.07.2008)
Die Tabelle 5-3 zeigt nur einen kleinen Ausschnitt von standardmäßig erstellten
Benutzern. Je nach Version und Komponente können die Benutzervielfalt und die
damit verwendeten Initialpasswörter abweichen. Hier hilft ein Blick auf die Homepage
von Pete Finnigan (http://www.petefinnigan.com, 21.07.2008). Dieser besitzt eine
sehr gute Übersicht zu den von Oracle verwendeten Benutzern und deren
Passwörter.
Das Problem dieser Benutzer liegt nicht nur in deren Existenz, sondern auch an der
Tatsache, dass viele dieser Benutzer Rechte im Datenbanksystem besitzen, die
einem Datenbankadministrator ähnlich sind. Weiterhin kennt jeder Cracker, der sich
in eine Datenbank einhacken will, die von Oracle standardmäßig verwendeten
Benutzernamen und deren Initialpasswörter. Somit wird ein erster Angriffsversuch
auf eine Oracle – Datenbank damit beginnen, sich mit einem dieser Benutzer und
deren bekannten Kennwörtern einzuloggen.
Falls also solch ein bekanntes Benutzerkonto in der Datenbank existiert, so sollten
diese Benutzer neue Benutzernamen bzw. neue Schemas mit neuen, sicheren
Passwörtern erhalten. Jedoch ist zu beachten, dass die Benutzer SYS und SYSTEM
nicht gelöscht werden dürfen. Würde z.B. der Benutzer SYS gelöscht werden, so
könnte der Datenbankserver nicht mehr gestartet werden.
Eine Liste der Benutzer, die Standardpasswörter verwenden, wird seit Erscheinen der
Version 11g durch Ausführung des nachfolgenden SQL – Befehls ausgegeben:
SELECT * FROM dba_users_with_defpwd; 77
Diese von Oracle verwendete View zum Auslesen dieser Benutzer hat nun aber
wieder den Nachteil, dass ein Benutzer, der das Recht hat, diese View zu lesen,
direkt weiß, welche Standardbenutzer auf der Datenbank existent sind.
5.5.
Innere Absicherung des Oracle – Datenbanksystems
Die innere Absicherung in einem Oracle – Datenbanksystem ist das Fundament für
einen sicheren und organisatorisch kontrollierten Ablauf in einer Oracle – Datenbank.
Je nach Größe der Institution, in der die Datenbank eingesetzt wird, kann sich eine
Vielzahl von Benutzern auf der Datenbank tummeln, die es zu verwalten gilt.
Die Typen aller Datenbankbenutzer kann grob in drei Kategorien eingeteilt werden.
Die erste Kategorie sind die Applikationsbenutzer. Sie arbeiten letztlich mit den in
einer Datenbank enthaltenen Daten. Sie bilden i.d.R. die größte Gruppe der
77
Vgl. http://www.oracle.com/technology/pub/articles/oracle-database-11g-top-features/11gsecurity.html, 20.07.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 40 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Datenbankuser. Zu ihnen kann man auch Web – User zählen, die über das Internet
auf die Datenbank zugreifen. Weiterhin gibt es die Datenbank- bzw.
Anwendungsentwickler, Programmierer oder auch Schema – Owner. Ihre Aufgaben
beinhaltet z.B. das Modellieren der Datenmodelle, das Schreiben von PL/SQL –
Programmen oder Datenbanktriggern sowie das Absetzen von Abfragen über SQL.
Letztlich
existieren
natürlich
noch
die
bereits
mehrfach
erwähnten
Datenbankadministratoren, die man horizontal in Applikationsadministratoren und
übrigen
Administratoren
sowie
vertikal
in
Entwicklungsbzw.
Produktionsadministratoren unterteilen kann. Sie bilden die kleinste Gruppe des
Datenbanksystems und verwalten bzw. sichern das gesamte Datenbanksystem (vgl.
Tabelle 5-1).
Die drei beschriebenen Kategorien und deren Häufigkeit des Auftretens sind stark
von der Verwendung der Datenbank und der Größe des Unternehmens bzw. der
Organisation abhängig, weshalb man keine allgemeine Aussage über deren jeweilige
Größe treffen kann. Benutzt man z.B. die Datenbank hauptsächlich fürs Internet und
zur Schulung von Studenten sind andere Applikationsbenutzer bzw. mehr Web – User
notwendig, als wenn die Datenbank zur Verwaltung von Versicherungsdaten in einem
großen Versicherungsunternehmen verwendet wird.
5.5.1.
Benutzer – Authentifizierung
Der Zugriff auf das Oracle – Datenbanksystem erfolgt über zuvor eingerichtete
Benutzerkonten. Mit der Kombination aus Benutzername und Benutzerpasswort
identifiziert sich der jeweilige Benutzer an der Datenbank. Der Benutzer zur
Administration der Datenbank ist das Benutzerkonto SYSTEM. Mit Hilfe dieses Kontos
lassen
sich
weitere
Datenbankadministratoren
sowie
Entwickler
und
Applikationsbenutzer anlegen.
Die Entscheidung ob der Benutzer der Datenbank ein Entwickler oder
Applikationsbenutzer wird, fällt letztlich der DBA indem er dem anzulegenden
Benutzer z.B. Tablespace78 in der Datenbank zuweist mit dem dieser arbeiten kann.
Die Applikationsuser verfügen über kein eigenes Schema, in denen Objekte
existieren. Die Entwickler hingegen verfügen auch über Schemas und somit über
eigene Objekte verschiedener Objekttypen, wie z.B. Tabellen, PL/SQL – Packages,
Procedures, Views usw.
Der Datenbankadministrator legt einen Datenbankbenutzer mit nachfolgendem SQL
– Statement an, der entweder mit Hilfe eines SQL – Editors oder des Oracle
Enterprise Managers erfolgen kann:
CREATE USER v_username
IDENTIFIED BY v_password
DEFAULT TABLESPACE v_tablespace
TEMPORARY TABLESPACE v_tmp_tablespace
QUOTA v_size ON v_tablespace
PROFILE DEFAULT
PASSWORD EXPIRE
78
Unter Tablespace versteht man den Plattenplatz, der einem Benutzer zugewiesen werden.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 41 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
ACCOUNT UNLOCK; 79
In diesem Fall wird ein Account mit dem in der Variablen v_username angegebenen
Passwort angelegt. Der Benutzername kann eine maximale Länge von 30 Zeichen
enthalten. Hier sollte man die maximale Länge möglichst ausnutzen und Namen
verwenden, die durch keine Brute – Force – Attacke bedroht werden können. In
einem zweiten Schritt wird das Initialpasswort vergeben80. Dieses sollte, auch wenn
es nur einmalig Verwendung findet, von Benutzer zu Benutzer verschieden sein. Mit
den Parametern PASSWORD EXPIRE gibt der DBA an, dass das Passwort nach
erstmaliger Verbindung zur Datenbank vom Benutzer geändert werden muss.
Anhand der Tablespace – Parameter entscheidet der DBA, ob es sich um einen
Programmierer oder Applikationsuser handelt. Denn ohne diese Parameter hätte der
Benutzer keine Berechtigung, Objekte innerhalb der Datenbank zu speichern und
würde somit auch nicht über ein eigenes Datenbankschema verfügen. ACCOUNT
UNLOCK bedeutet hierbei, dass das Benutzerkonto nicht gesperrt ist und somit
verwendet werden kann. Diese Einstellung ist in Oracle 11g standardmäßig gesetzt,
so dass dies nicht gesondert angegeben werden muss. Auf die Parameter PROFILE
DEFAULT wird in Abschnitt 5-5-4 näher eingegangen.
Anhand des beispielhaften SQL – Statements ist erkennbar, dass die Erstellung der
verschiedenen Datenbankbenutzer in SQL – Skripten hinterlegt werden sollte. Somit
haben die Datenbankadministratoren immer einheitliche Skripte zur Erstellung von
Benutzern zur Verfügung und können die einzelnen Übergabevariablen der Skripte,
wie z.B. v_username oder v_password entsprechend setzen. Weiterhin haben sie
während der Datenbankkontrolle die Möglichkeit besser einzusehen, ob die Benutzer,
durch die von ihnen verwendeten Skripte erstellt wurden.
5.5.2.
Benutzerberechtigungen
Nachdem ein Benutzer erstellt wurde und er die Möglichkeit hat, sich an dem
Datenbanksystem zu authentifizieren, geht es bei den Benutzerberechtigungen
darum zu prüfen, ob der Benutzer autorisiert ist, bestimmte Aktionen innerhalb der
Datenbank durchzuführen. Dies bezeichnet man auch als Autorisierungsprüfung der
Datenbank. Hierbei wird u.a. überprüft, ob der angemeldete Benutzer das Recht hat,
bestimmte Objekte, wie z.B. Tabellen, zu lesen.
Je nach Benutzertyp benötigt der jeweilige Benutzer verschiedene Berechtigungen.
Oracle
unterscheidet
hier
zwischen
Objektund
Systemberechtigungen.
Objektberechtigungen81 dienen dazu, auf bereits bestehende Objekte, wie Tabellen,
Views oder Sequences zuzugreifen. Die meisten Systemberechtigungen82 hingegen
sind dazu gedacht, Objekte in einer Datenbank verwalten zu können. Dazu zählt z.B.
das Anlegen oder Löschen von Tabellen. Ebenso gibt es Systemberechtigungen, die
zur Verwaltung des Datenbanksystems dienen. Hierzu zählt z.B. die Möglichkeit eine
Datenbank starten und beenden zu können.
Solche Berechtigungen können für einen Benutzer erstellt und auch wieder entzogen
werden. Nachdem ein Benutzer angelegt wurde, benötigt er zunächst die
79
80
81
82
Vgl. [Bryla et al. 2007] Seite 310 ff.
Seit Oracle 11g ist es möglich, bei der Wahl von Kennwörtern, entweder eine maximale Länge von 30
oder optional 50 Zeichen zu wählen.
Objektberechtigungen gehören zur Data Manipulation Language und Data Query Language.
Systemberechtigungen gehören zur Data Definition Language und Data Administration Language.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 42 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Systemberechtigung sich mit der Datenbank verbinden zu dürfen, wie nachfolgender
SQL – Befehl zeigt:
GRANT CREATE SESSION
TO v_username;
Ein Applikationsbenutzer benötigt i.d.R. nur Objektberechtigungen. Diese dienen ihm
dazu bestimmte Views oder Zeilen bzw. Spalten einer bestimmten Tabelle lesen,
einzufügen oder auch löschen zu können. Möchte man diesem Benutzer das Recht
erteilen auf eine bestimmte Tabelle lesend und aktualisierend zuzugreifen, so setzt
der Datenbankadministrator nachfolgenden Befehl ab:
GRANT INSERT, SELECT
ON v_table
TO v_username;
Die Tabelle v_table ist hierbei das Objekt und die Parameter INSERT und SELECT
sind die zu vergebenden Objektberechtigungen.
Der Entwickler benötigt nicht nur das Recht, Tabellen selektieren zu können, sondern
auch Applikationen, d.h. Prozeduren, Funktionen oder PL/SQL – Packages schreiben
zu können. Er benötigt auch Systemberechtigungen. Die Rechtevergabe hierfür
könnte folgendermaßen aussehen:
GRANT CREATE PROCEDURE
TO v_username;
In dem angegeben Beispiel hat der Benutzer v_username das Recht in seinem
eigenen Schema Prozeduren zu erstellen. In größeren Organisationen ist es oft
erforderlich, dass Datenbankentwickler Prozeduren in anderen Schemas erstellen
müssen. Hierfür könnte die Berechtigung CREATE ANY PROCEDURE vergeben
werden. Dies führt jedoch zu einer unsicheren Arbeitsweise, weil der Entwickler somit
in allen anderen Schemas Prozeduren schreiben kann. Nun sollte der Programmierer
entweder nur für das benötigte Schema die Berechtigung zum Schreiben von
Prozeduren erhalten oder aber das Einspielen einer Prozedur in einem anderen
Schema sollte durch die Administratoren erfolgen.
Weiterhin ist es möglich, Berechtigungen zu erteilen, die der jeweilige Benutzer dann
an andere Benutzer weitergeben kann. Zu diesem Zweck stellt Oracle die
Schlüsselwörter
WITH_GRANT_OPTION83
und
WITH_ADMIN_OPTION84
zur
Verfügung. Während das Statement
GRANT INSERT
ON v_table
TO v_username
WITH_GRANT_OPTION;
dem Benutzer v_username erlaubt, das INSERT – Recht an der Tabelle v_table auch
an andere Benutzer weiterzugeben, so erlaubt der Befehl
GRANT CREATE TABLE
83
84
WITH_GRANT_OPTION dient dazu, dass der Benutzer bestimmte Objektberechtigungen, wie INSERT
und DELETE an andere Benutzer weitergeben darf.
WITH_ADMIN_OPTION dient dazu, dass der Benutzer bestimmte Systemberechtigungen wie CREATE
TABLE oder CREATE SESSION weitergeben darf.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 43 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
TO v_username
WITH_ADMIN_OPTION;
dass der Benutzer v_username das CREATE TABLE – Recht ebenfalls an andere
Benutzer weitergeben darf. Wie unschwer zu erkennen ist, sollten diese
Berechtigungen Benutzern erst gar nicht erteilt werden, denn bei näherer
Betrachtung kann hiermit viel Unfug angerichtet werden. Anhand der
WITH_GRANT_OPTION können u.U. viele Benutzer Berechtigungen erteilt
bekommen, die sie nicht benötigen bzw. nicht haben sollen. Mit der
WITH_ADMIN_OPTION sind die erteilten Berechtigungen evtl. nicht mehr so schnell
rückgängig zu machen. Erhält z.B. der Benutzer v_username_1 die CREATE TABLE –
Berechtigung als WITH_ADMIN_OPTION und gibt diese Berechtigung an
v_username_2 weiter, so behält der Benutzer v_username_2 die Berechtigung auch
dann, wenn dem Benutzer v_username_1 die CREATE TABLE – Berechtigung wieder
entzogen wird. In diesem Zusammenhang wird ersichtlich, dass dies nicht gerade
förderlich für eine sichere, leicht verwaltbare und überschaubare Datenbank ist.
Ebenfalls ist es in Oracle möglich, Berechtigungen an alle Datenbankbenutzer zu
vergeben. Hierzu erfolgt die Vergabe von Rechten nicht an einen einzigen Benutzer,
sondern an PUBLIC. Der Befehl für eine solche Objektberechtigung könnte
folgendermaßen aussehen:
GRANT SELECT
ON v_table
TO PUBLIC;
Hierbei sollte beachtet werden, dass die SELECT – Berechtigung an der Tabelle
v_table nicht nur an alle bestehenden Benutzer, sondern auch an Benutzer, die
zukünftig an der Datenbank erstellt werden, weitergegeben wird. Da es i.d.R. keine
Tabelle im Datenbanksystem gibt, die wirklich für jeden lesbar sein muss, sollten
Berechtigungsvergaben, die an PUBLIC erteilt werden, unbedingt vermieden werden.
In Versionen vor Oracle 8i besitzt der Datenbankbenutzer PUBLIC sogar die CREATE
EXTERNAL JOB – Berechtigung, womit es möglich ist, externe Jobs zu erstellen.
Selbst Oracle empfiehlt, dieses Recht dem Benutzer PUBLIC zu entziehen und nur
den Datenbankadministratoren zuzuweisen85.
Nachfolgende Tabelle zeigt eine kleine Auswahl
Systemberechtigungen:
von typischen Objekt- und
Berechtigungstyp
Berechtigung
Erläuterung
SYSTEM
CREATE
Ermöglicht einem Benutzer sich mit der
SESSION
Datenbank zu verbinden.
CREATE TABLE
Erlaubt dem Benutzer eigene Tabellen zu
SYSTEM
erstellen.
SYSTEM
85
CREATE USER
Dient zur Erstellung eines Benutzerkontos.
Siehe http://download.oracle.com/docs/cd/B28359_01/server.111/b28337.pdf, 20.07.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 44 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
SYSTEM
SYSDBA und
Bieten z.B. die Möglichkeit eine Datenbank
SYSOPER
anzulegen und zu verwalten86.
…
…
…
OBJEKT
SELECT
Erlaubt das Lesen von Zeilen einer View
oder einer Tabelle.
OBJEKT
UPDATE
Ermöglicht die Aktualisierung einer Tabelle
oder updatebaren View.
OBJEKT
EXECUTE
Wird dazu genutzt, um PL/SQL – Packages,
Prozeduren oder Funktionen aufzurufen.
Tabelle 5-4 Typische Objekt- und Systemberechtigungen (Quelle: [Bryla et al. 2007] Seite 324 ff.)
Es handelt sich hier nur um eine kleine Auswahl der möglichen Berechtigungen in
einer Oracle – Datenbank, welche lediglich dazu dienen, ein besseres Verständnis für
die Objekt- bzw. Systemberechtigungen zu entwickeln.
Gerade Systemberechtigungen dürfen nur mit allergrößter Sorgfalt an
Datenbankbenutzer vergeben werden. Datenbankadministratoren sollten alle
Systemberechtigungen, die an Benutzer vergeben werden, sehr genau kennen und
somit auch die möglichen Ausmaße einer solchen Vergabe immer bedenken. Eine
Berechtigung, wie SYSDBA oder SYSOPER, kann weitreichende Folgen für das
Datenbanksystem haben. Mit SYSDBA z.B. kann ein vollständiges Backup der
Datenbank durchgeführt werden. Diese Berechtigungen sollten also nur
Datenbankadministratoren vorbehalten sein.
5.5.3.
Rollen
Möchte man jedem neu angelegten Benutzer bestimmte Berechtigungen erteilen,
haben die Administratoren, je nach Menge der Datenbankbenutzer, viel
Schreibaufwand. Die Benutzererstellung und deren Berechtigungsvergabe sollten
zwar in Skripten verpackt sein, jedoch kann es hier leicht zu einer unüberschaubaren
Länge von SQL – Befehlen kommen. Im Zusammenhang mit Berechtigungen stellt
Oracle jedoch eine Möglichkeit bereit, bestimmten Benutzergruppen immer die
gleichen Berechtigungen zu erteilen, ohne dass dieses Recht jedem Benutzer einzeln
erteilt werden muss. Dies erhöht die Sicherheit der Datenbank aufgrund von immer
gleichen Berechtigungsvergaben und geschieht anhand von Rollen. Indem einem
Benutzer eine bestimmte Rolle zugewiesen wird, erhält dieser, je nach Definition der
Rolle, mit Ausführung nur eines SQL – Statements die Berechtigung, z.B. 10 Tabellen
lesen zu dürfen.
Angenommen, in einer Organisation gibt es zwei Gruppen. Die erste Gruppe sind
Applikationsbenutzer, die nur auf Tabellen, die Buchhaltungsdaten enthalten, lesend
und aktualisierend zugreifen müssen. Die zweite Gruppe sind Applikationsuser, die
nur Tabellen, die Personaldaten enthalten, bearbeiten müssen. Nun müsste jedem
86
Vgl. [Bryla et al. 2007] Seite 325
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 45 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
neuen Datenbankbenutzer die entsprechenden Berechtigungen für jede einzelne
Tabelle der Personaldaten bzw. der Buchhaltungsdaten erteilt werden. Kommt
zusätzlich eine Tabelle hinzu, müsste jeder User der jeweiligen Gruppe die
Berechtigung erteilt bekommen, auf die neue Tabelle zugreifen zu dürfen. Bei Rollen
hingegen werden die Berechtigungen auf die entsprechenden Tabellen nur der
jeweiligen Rolle zugewiesen und diese Rolle dem jeweiligen Datenbankbenutzer
vergeben. Kommt nun eine Tabelle hinzu, so erhält die Rolle die Berechtigung, auf
die Tabelle zugreifen zu dürfen und somit erhält auch jeder Datenbankbenutzer, dem
diese Rolle zugewiesen wurde, das Recht auf die Tabelle zuzugreifen.
Neben dem minimierten Aufwand für Datenbankadministratoren ist die Sicherheit
natürlich ein weiterer Aspekt zur Verwendung von Rollen. In unserem Falle, würde,
nach Auswahl einer entsprechenden Nomenklatur, immer eine direkte Übersicht
welche Datenbankuser auf welche Objekte zugreifen dürfen, ersichtlich. Käme es z.B.
zu einem Sicherheitsvorfall, in dem Personaldaten manipuliert worden wären, so
könnte auf einen Schlag den Datenbankbenutzern der Personaldaten die UPDATE –
Berechtigung entzogen werden, in dem dieses Recht einfach der Rolle entzogen wird.
Bei Einrichtung einer Rolle für Buchhaltungs- und Personaldaten, könnten die SQL –
Befehle hierzu folgendermaßen aussehen:
CREATE ROLE eu_sel_tbl_personal;
CREATE ROLE eu_sel_tbl_bookkeeping;
Die Definition der ersten Rolle soll dazu dienen, Applikationsbenutzern das SELECT –
Recht an den Tabellen der Personaldaten zu geben. Die zweite Rolle ist analog zur
ersten Rolle zu verstehen, jedoch sollen hierin die SELECT – Berechtigungen an den
Buchhaltungstabellen verankert werden.
Die Zuweisung der einzelnen SELECT – Berechtigungen erfolgt nun nicht mehr an
den Applikationsuser sondern direkt an die Rolle.
GRANT SELECT
ON personal_table_1
TO eu_sel_tbl_personal;
GRANT SELECT
ON personal_table_2
TO eu_sel_tbl_personal;
Eine Zuweisung der erwähnten Rolle an den einzelnen Datenbankbenutzer erfolgt
nun mit folgendem SQL – Statement:
GRANT eu_sel_tbl_personal
TO personal_user;
Weiterhin ist es möglich, Rollen ineinander zu verschachteln. Beispielsweise kann
eine weitere Rolle eu_ins_tbl_personal, die für INSERT – Berechtigungen zuständig
ist, angelegt werden. Diese Rolle und die Rolle eu_sel_tbl_personal könnte, nach
vorheriger Definition der Rolle eu_sel_ins_tbl_personal, dieser zugewiesen werden.
GRANT eu_sel_tbl_personal, eu_ins_tbl_personal
TO eu_sel_ins_tbl_personal;
Neben der Rollenzuweisung bietet Oracle ebenfalls die Möglichkeit, Rollen mit
Passwörtern zu versehen. Somit kann eine Rolle einem Benutzer zugewiesen werden,
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 46 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
dieser kann aber erst dann über das Recht verfügen, wenn er sich die Rolle mit dem
versehenen Passwort selbst setzt. Eine Rolle mit Passwort wird folgendermaßen
definiert:
CREATE ROLE eu_del_tbl_personal
IDENTIFIED BY password;
Möchte der Datenbankbenutzer nun die Rolle eu_del_tbl_personal nutzen, so gibt er
folgenden Befehl ein:
SET ROLE eu_del_tbl_personal
IDENTIFIED BY password;
Im angegebenen Beispiel wäre es möglich, dass den Applikationsbenutzern, die auf
die Personaldaten zugreifen, z.B. eine gesamte Personalabteilung, die Rollen
eu_sel_tbl_personal, eu_ins_tbl_personal und eu_del_tbl_personal zugewiesen
wurden, jedoch nur der Abteilungsleiter der Personalabteilung die Rolle
eu_del_tbl_personal setzen darf. Das vergebene Passwort könnte dabei z.B. in einer
Forms – Maske hinterlegt sein. Versucht der Benutzer personal_leader nun einen
Datensatz zu löschen, so könnte die Forms – Maske explizit für diesen User das
Kennwort setzen. Diese Vergabe von Rollen kann eine Datenbank durch die
Einsparung von Rollen übersichtlicher und somit auch sicherer machen, da weniger
Rollen vergeben werden müssen.
Rollen können nicht nur selbst definiert werden. Auch Oracle liefert bereits einige
vordefinierte Rollen mit aus. Einige, bekannte Rollen sind in nachfolgender Tabelle
erläutert:
Rolle
Erläuterung
CONNECT
Diese Rolle sollte lt. Oracle an allgemeine Datenbankbenutzer vergeben
werden.
Hat ein Benutzer, seit Oracle 10g (Release 2), diese Rolle, so besitzt er
die CREATE SESSION – Berechtigung. Bis zu Oracle 10g (Release 1)
jedoch, wurden diesem Benutzer weiterhin Berechtigungen, wie ALTER
SESSION, CREATE VIEW und CREATE DATABASE LINK 87 zugewiesen.
RESOURCE
Hier handelt es sich, lt. Oracle, um eine Rolle für übliche Entwickler.
Systemberechtigungen wie CREATE TABLE und CREATE PROCEDURE
sind hierin verankert.
DBA
Dies ist eine verschachtelte Rolle. In diesem Fall sind in ihr sieben
weitere Rollen enthalten, die auch den Datenbankadministratoren SYS
87
Mit CREATE DATABASE LINK ist es möglich, auf ein entferntes Datenbanksystem zuzugreifen und von
dort Daten auszulesen. Dabei muss es sich nicht um ein Oracle – Datenbanksystem handeln. Jedoch
ist hierfür die Installation von heterougenous Services Voraussetzung, die im Rahmen von Oracle
Gateway kostenintensiv erworben werden kann.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 47 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
und SYSTEM zugewiesen sind.
Beispielrollen die zu der Rolle DBA gehören sind IMP_FULL_DATABASE,
EXP_FULL_DATABASE, SELECT_CATALOG_ROLE und
EXECUTE_CATALOG_ROLE.
Insgesamt enthält dies Rolle 114 Systemberechtigungen88.
SELECT_
CATALOG_
ROLE
Mit dieser Rolle wird die Berechtigung gewährt, auf jede Tabelle bzw.
jede View der DATA DICTIONARY89 zuzugreifen.
Bekannte Views der DATA DICTIONARY sind dba_users, all_users,
all_roles oder dba_sys_privs90.
EXECUTE_
Diese Rolle beinhaltet Systemberechtigungen auf die DATA
CATALOG_
DICTIONARY und somit auch das Datenbankschema SYS.
ROLE
Enthaltene Berechtigungen ermöglichen z.B. ausführbare Rechte an
PL/SQL – Packages und Prozeduren der DATA DICTIONARY.
Tabelle 5-5 Bekannte von Oracle vordefinierte Rollen (Quelle: [Bryla et al. 2007] Seite 332 ff.)
Nun, dass die Vergabe der Rolle DBA ein Sicherheitsrisiko ist, muss man nicht mal
erwähnen. Da den Datenbankadministrationskonten SYS und SYSTEM die Rolle DBA
zugewiesen ist, ist es ein leichtes, sich vorzustellen welche weitreichenden Folgen es
haben kann, wenn ein Datenbankbenutzer diese Rolle sein eigen nennt. Neben den
bereits
vorgestellten
Rollen,
wie
EXECUTE_CATALOG_ROLE
und
SELECT_CATALOG_ROLE
bedeuten
die
Rollen
IMP_FULL_DATABASE
und
91
EXP_FULL_DATABASE , dass der Benutzer eine Datenbank komplett importieren
bzw. extrahieren kann.
Ebenfalls besitzt die Rolle CONNECT für allgemeine Datenbankbenutzer, die sich auf
einem Datenbanksystem vor Oracle 10g (Release 1) anmelden, zu viele
Berechtigungen, die solch ein Benutzer nicht benötigt.
Wie schon im Abschnitt zuvor erwähnt, dürfen jedem Benutzer nur die minimal
notwendigen Rollen und damit verbundene Berechtigungen erteilt werden. Gerade in
Bezug auf Sicherheit sollte, aufgrund des eingesparten Arbeitsaufwandes, eine
bestimmte Rolle nicht jedem nur erdenklichen Benutzer zugewiesen werden. Auch
wenn vielleicht 90%, der in der Rolle angegebenen Berechtigungen, auf den
Benutzer zutreffen, ist es eher sinnvoll, einige Rollen mehr zu definieren, dafür aber
auch eine genaue, 100%ige Abstufung und Einteilung der vergebenen
Berechtigungen an die jeweiligen Benutzer zu erreichen.
88
89
90
91
Vgl. [Newman et al. 2004] Seite 274
Die DATA DICTIONARY enthält alle Informationen über den Inhalt der Datenbank. Es enthält
Metadaten, also Informationen über die enthaltenen Daten. Z.B. welche Objekte existieren, wer hat
sie angelegt, welche Rollen existieren in der Datenbank, wem sind sie zugewiesen usw. Die DATA
DICTIONARY befindet sich im Schema des Datenbankbenutzers SYS.
Weitere Informationen zu bekannten Views des DATA DICTIONARY finden sich im Abschnitt 5-5-7.
EXP_FULL_DATABASE enthält weiterhin die Rollen SELECT_CATALOG_ROLE und
EXECUTE_CATALOG_ROLE sowie weitreichende Systemberechtigungen.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 48 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Weiterhin sollten, aufgrund der Vermeidung von Fehleranfälligkeit und
Verwaltungsaufwand, die Berechtigungs- und Rollenvergaben pro Benutzer in SQL –
Skripten verpackt werden, die wiederum mit entsprechenden Übergabeparametern
angesteuert werden.
Ebenfalls ist, wie in diesem Abschnitt bereits erwähnt, die Nomenklatur zur Vergabe
von Rollennamen, richtig zu wählen. Datenbankadministratoren sollten auch Wochen
später direkt erkennen können, welche Rolle für welche Datenbankbenutzer, welche
Objekte und welche Berechtigung gedacht ist.
5.5.4.
Datenbankautorisierung durch das DEFAULT – Profil
Nach der Anmeldung eines Benutzers an der Datenbank, erfolgen neben den eben
erwähnten Autorisierungsprüfungen, weitere Sicherheits- und Systemprüfungen. In
diesem Zusammenhang wird auf den in Abschnitt 5-5-1, während der Benutzer –
Authentifizierung, erwähnten Parameter PROFILE DEFAULT eingegangen.
Ein Profil dient in Bezug auf Sicherheit dazu, bestimmte Autorisierungsmaßnamen für
den Benutzer festzulegen. Mit dem DEFAULT – Profil werden eine Menge von
Parametern gesetzt bzw. Funktionen ausgeführt. Mit Hilfe des nachfolgenden SQL –
Befehls, der die View dba_profiles ausliest, kann man sich die Parameter bzw.
Funktionen anzeigen lassen, die im DEFAULT – Profil aktiviert sind:
SELECT * FROM dba_profiles WHERE profile = ‘DEFAULT’;
Nachfolgend angegebene Tabelle gibt einen Einblick in die Ausgabe des vorigen SQL
– Befehls:
PROFILE
RESOURCE_NAME
RESOURCE
LIMIT
DEFAULT
SESSIONS_PER_USER
KERNEL
UNLIMITED
DEFAULT
CPU_PER_SESSION
KERNEL
UNLIMITED
DEFAULT
CONNECT_TIME
KERNEL
UNLIMITED
DEFAULT
PRIVATE_SGA
KERNEL
UNLIMITED
DEFAULT
IDLE_TIME
KERNEL
UNLIMITED
…
…
…
…
DEFAULT
FAILED_LOGIN_ATTEMPS
PASSWORD
10
DEFAULT
PASSWORD_LIFE_TIME
PASSWORD
180
DEFAULT
PASSWORD_REUSE_TIME
PASSWORD
UNLIMITED
DEFAULT
PASSWORD_REUSE_MAX
PASSWORD
UNLIMITED
DEFAULT
PASSWORD_VERIFY_FUNCTION
PASSWORD
NULL
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 49 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
DEFAULT
PASSWORD_LOCK_TIME
PASSWORD
1
DEFAULT
PASSWORD_GRACE_TIME
PASSWORD
7
Tabelle 5-6 Ein Ausschnitt der View dba_profiles (Quelle: [Bryla et al. 2007] Seite 316)
In der Spalte PROFILE ist der selektierte Profilname zu erkennen. Unter
RESOURCE_NAME sind die Ressourcenparameter zu finden, also die gültigen
Ressourcenbeschränkungen.
Die
Spalte
RESOURCE
gibt
an,
welche
Ressourceneinstellungen zum Tragen kommen. Im Falle DEFAULT für das System
KERNEL und die Passwortverwaltung PASSWORD. In der Spalte LIMIT ist die
jeweilige Beschränkung zu erkennen.
Wie unschwer zu erkennen ist, sind viele Werte auf UNLIMITED, NULL oder auf zu
hohe Werte gesetzt. Dies sollte umgehend geändert werden. Um nun Profil –
Änderungen durchführen zu können, erfolgt nachstehend eine Erläuterung der
einzelnen, wichtigsten Ressourcenparameter:
Ressourcenparameter
Erläuterung
SESSIONS_PER_USER
Hier ist die Maximalanzahl von Sitzungen angegeben,
die ein Benutzer an der Datenbank gleichzeitig halten
kann.
Um einen Missbrauch auszuschließen sollte dieser Wert
von UNLIMITED auf eins gesetzt werden.
CONNECT_TIME
Der Benutzer darf nur bis zu dieser Zeitangabe in
Minuten am System angemeldet bleiben. Danach muss
er sich erneut verbinden.
Je nach Benutzertyp kann es hier erforderlich sein eine
große Zahl anzugeben. Ein Programmierer könnte u.U.
ein Skript laufen lassen, das auch über Nacht läuft.
Somit wären hier evtl. 1440 (Minutenanzahl / Tag)
angemessen. Ein reiner Applikationsbenutzer hingegen
benötigt z.B. nur 480 (Minutenanzahl / 8 Stunden), da
sein Arbeitstag maximal acht Stunden fasst und er nur
diese Zeit an der Datenbank angemeldet sein muss.
IDLE_TIME
Nach einer Inaktivität des Datenbankbenutzers von
IDLE_TIME – Minuten muss sich dieser User erneut mit
der Datenbank verbinden.
Es reicht i.d.R. eine Maximalanzahl von 15 (Minuten)
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 50 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
aus. Wobei es hier natürlich auch Unterschiede geben
kann.
FAILED_LOGIN_ATTEMPS
Die Anzahl der Anmeldeversuche, die fehlschlagen
kann, bevor das Benutzerkonto gesperrt wird und
danach wieder von einem DBA entsperrt werden muss.
Diese ist mit 10 viel zu schwach angegeben und sollte
auf eine angemessene Zahl herabgesenkt werden.
PASSWORD_LIFE_TIME
In Tagen wird angegeben, wie lange das Kennwort
seine Gültigkeit behält.
Je nach Verwendungszweck der Datenbank und Menge
der eingesetzten Datenbanken sind 180 Tage zu lang.
Zwischen
30
und
60
Tage
reichen
bei
kleineren
Unternehmen oder Organisationen vollkommen aus. Bei
größeren Unternehmen kann die Zahl, wie schon in
Abschnitt 5-3-3 erwähnt, entsprechend erhöht werden.
PASSWORD_REUSE_TIME
Anzahl der Tage, die ein Benutzer warten muss, bis
dieser
ein
bereits
verwendetes
Passwort
wieder
verwenden darf.
PASSWORD_REUSE_MAX
Passwort
–
Änderungen,
nach
denen
ein
bereits
verwendetes Kennwort wieder genutzt werden darf.
PASSWORD_LOCK_TIME
Wurde
ein
Benutzerkonto
aufgrund
von
FAILED_LOGIN_ATTEMPS gesperrt, so besteht hier die
Möglichkeit, dieses Konto, nach einer angegebenen
Anzahl von Tagen, automatisch wieder zu entsperren.
Da der Benutzer bei drei fehlgeschlagenen Versuchen
sein
Passwort
Parameter
i.d.R.
auf
gewährleistet
vergessen
UNLIMITED
eine
bessere
hat,
gesetzt
sollte
werden.
Kontrolle
über
dieser
Dies
evtl.
Angriffsversuche und die Administratoren müssen das
Datenbankkonto
vor
der
nächsten
Verwendung
zurücksetzen.
PASSWORD_GRACE_TIME
Eine Art Galgenfrist, die dem Benutzer, nach Ablauf von
PASSWORD_LIFE_TIME,
gewährt
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
wird
um
sein
Seite 51 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Kennwort zurückzusetzen.
Hier sollte eine eher kurze Frist von drei bis sieben
Tagen gelten. Innerhalb dieser Frist könnte der User via
E-Mail aufgefordert werden, sein Passwort zu ändern.
Somit würde nur der eigentliche Benutzer von der
anstehenden
Änderung
des
Kennworts
informiert
werden und es bliebe ihm noch etwas Zeit, diese
Änderung durchzuführen.
PASSWORD_VERIFY_FUNC
Dieser Parameter steht für einen Funktionsaufruf, um
TION
eine
bestimmte
Sicherheitspolitik
durchzusetzen.
Standardmäßig ist dieser Wert auf NULL gesetzt, was
bedeutet, dass keine Funktion ausgeführt wird.
Tabelle 5-7 Wichtige Profil – Ressourcenparameter (Quelle: Vgl. [Bryla et al. 2007] Seite 317 ff.)
Werden
die
Ressourcenparameter
PASSWORD_REUSE_TIME
und
PASSWORD_REUSE_MAX auf UNLIMITED gesetzt, können bereits benutzte
Kennwörter sofort nach Ablauf wieder verwendet werden. Um eine direkte
Wiederverwendung des Passworts auszuschließen, sollte der Ressourcenparameter
PASSWORD_REUSE_TIME gesetzt werden. Dieser Wert sollte, angegeben in Tagen,
über zwei oder gar drei Perioden, in denen ein Passwort geändert werden muss,
anhalten. In diesem Fall bezieht man sich auf PASSWORD_LIFE_TIME und setzt den
Wert des Parameters auf eine dreimal höhere Zahl. Dies ermöglicht dem
Datenbankbenutzer, sein altes Passwort, nach dreimaliger Verwendung eines
anderen Kennworts, wieder zu verwenden. Würde PASSWORD_REUSE_MAX gesetzt,
so könnte ein hartnäckiger User sein Kennwort auf einmal so lange ändern, bis er
wieder die Möglichkeit hat, sein altes Passwort zu setzen.
Der wichtigste Ressourcenparameter ist PASSWORD_VERIFY_FUNCTION. Dieser Wert
ist zwar standardmäßig auf NULL gesetzt, jedoch liefert Oracle 11g ein SQL –
Skript92, das diesen Wert auf verify_function_11g setzt. Es handelt sich hierbei um
eine Funktion, die bei Ausführung des Skripts utlpwdmg.sql, welches sich im
Betriebssystemverzeichnis $ORACLE_HOME/rdbms/admin befindet, angelegt wird
und danach bei jeder Erstellung eines Benutzers mit dem DEFAULT – Profil
ausgeführt wird. Mit Hilfe dieses Skripts werden, neben der Erstellung der Funktion,
die auf die Ressource PASSWORD bezogenen Ressourcenparameter neu gesetzt. Da
diese Parametereinstellungen normalerweise nicht ausreichen, kann das Skript
utlpwdmg.sql, den eigenen Wünschen entsprechend, angepasst werden. Ebenfalls
kann auch die Funktion verify_function_11g den eigenen, sicherheitspolitischen
Regeln, angepasst werden. Dies ist auch notwendig, denn hierin wird z.B. nur eine
maximale Passwortlänge von vier Zeichen erzwungen, was für heutige Ansprüche viel
zu wenig ist. Weitere Maßnahmen dieser Funktion sind u.a., dass sich das alte und
das neue Kennwort durch mind. drei Zeichen unterscheiden muss und das Passwort
sowie der Benutzername nicht gleich sein dürfen. Die in der Datenbank abgelegte
Funktion sollte des Öfteren auf Anomalien überprüft werden. Falls sich ein Angreifer
92
Dieses SQL – Skript wurde bereits seit Oracle 9i, entsprechend angepasst, ausgeliefert.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 52 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Zugang zu der Funktion verschaffen kann, so könnte es sein, dass dieser die
Funktion so anpasst, dass z.B. das vergebene Passwort eines Benutzers irgendwo
abgelegt wird und der Angreifer somit Benutzername und Passwort des neuen
Benutzers kennt.
Es ist auch möglich, eigene Funktionen und auch eigene Profile zu erstellen. Ein
Punkt, der dafür sprechen würde, wäre z.B., dass das DEFAULT – Profil möglichen
Angreifern bekannt ist und diese Angriffe entwickeln, die sich an gesetzte
Parameterwerte des Standardprofils anlehnen.
In Bezug auf die vorher gemachten Angaben kann mit nachfolgend angegebenem
SQL – Statement auch ein eigenes Profil erstellt werden:
CREATE PROFILE v_profilname LIMIT
SESSIONS_PER_USER
1
CONNECT_TIME
480
IDLE_TIME
15
FAILED_LOGIN_ATTEMPS
3
PASSWORD_LIFE_TIME
30
PASSWORD_LOCK_TIME
UNLIMITED
PASSWORD_REUSE_TIME
90
PASSWORD_REUSE_MAX
UNLIMITED
PASSWORD_GRACE_TIME
3
PASSWORD_VERIFY_FUNCTION
v_verify_function_11g;
Werden im eigenen Profil Angaben, die im DEFAULT – Profil enthalten sind,
weggelassen, so übernimmt Oracle bei der Anlage von Benutzern die Werte der
Ressourcenparameter, die im DEFAULT – Profil angegeben sind. Wird bei der
Benutzeranlage weiterhin das Standardprofil benutzt, so können, mit nachfolgendem
SQL – Befehl, die entsprechenden Werte des Profils geändert werden:
ALTER PROFILE DEFAULT LIMIT
PASSWORD_VERIFY_FUNCTION
v_my_verify_function;
Es ist jedoch nicht möglich, das Standardprofil DEFAULT zu löschen.
5.5.5.
Benutzerpasswörter
Wie schon in den Abschnitten 5-3-2 und 5-4-3 angedeutet, sind Passwörter sehr
starke
und
bewährte
Schutzmechanismen.
Auch
in
Betrachtung
der
Datenbankbenutzer sind diese die wichtigsten Authentifizierungsmethoden. Da
jedoch viele Hacker bzw. Cracker versuchen, mittels den bekannten Brute – Force –
Attacken in Systeme einzudringen, sollte noch mal auf die richtige Verwendung der
Kennwörter eingegangen werden.
Vor allem den Datenbankbenutzern sollte plausibel erläutert werden, wie wichtig die
richtige Wahl eines starken Kennworts ist. Wenn nur einer von 1000 möglichen
Datenbankbenutzern ein schwaches Passwort gewählt hat, ist es bei einer
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 53 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
hartnäckigen Attacke ein leichtes, sich auf der Datenbank anzumelden.
Mit dem Freewaretool Checkpwd93 des Unternehmens Red – Database – Security
GmbH, ist es möglich, die Passwörter seines Oracle – Datenbanksystems prüfen zu
lassen. Weiterhin bietet das Unternehmen die Software Repscan94 an. Diese
ermöglicht neben der Passwortprüfung einen kompletten Sicherheitscheck des Oracle
– Datenbanksystems. Lt. des Unternehmens prüft das Programm Repscan ca.
600.000 Kennwörter pro Sekunde95 und benötigt 10 Sekunden zur Berechnung von
5 Zeichen96 langen Passwörtern und bis zu 4 Jahre zur Berechnung eines 10 Zeichen
langen Passwortes. An diesem Beispiel ist zu erkennen, wie wichtig es ist, im
Datenbanksystem nur die Verwendung von Kennwörtern mit einer gewissen
Mindestlänge zuzulassen. Die Verwendung von zwölf Zeichen langen Passwörtern
sollte die Datenbank vor möglichen Attacken halbwegs sicher machen. Wie schon im
vorigen Abschnitt erwähnt, kann mittels der PASSWORD_VERIFY_FUNCTION die
Komplexität der Kennwortwahl vorgeben und die Mindestlänge für einen
Datenbankbenutzer hierin verankert werden.
Weitere wichtige Hinweise zur Verwendung von Passwörtern sind:
•
Keine Verwendung von trivialen Passwörtern. Eine Kombination aus
Groß- und Kleinbuchstaben (erst seit Version 11g möglich) sowie
Zahlen und Sonderzeichen sollten Verwendung finden.
•
Kennwörter, die aus einem einfachen Algorithmus zu bilden sind, wie
z.B. eine Kombination aus Benutzername und Jahreszahl oder eine
Kombination aus Zeichen, die auf einer Tastatur nebeneinander liegen,
sind zu vermeiden.
•
Keine Verwendung von Wörtern, die in Wörterbuchern zu finden sind.
•
In Bezug auf innere Angriffe, sollten Passwörter keinen erkennbaren
Bezug zum Benutzer oder dessen Umgebung haben (Z.B. Geburtstag
oder Automarke).
Diese Vorgaben können nicht alle in einer vorgegebenen Funktion verankert werden.
Diejenigen,
die
aufgrund
fehlender
Rechenleistung
und
eines
kaum
implementierbaren Algorithmus nicht vorgegeben werden können, sollten jedoch
mittels Schulung der Datenbankbenutzer, an diese weitergegeben werden.
Oracle benutzt in der Version 11g zur Verschlüsselung des Kennworts den SHA-197 –
Algorithmus. Der Algorithmus zur Erstellung dieses Hash – Wertes wurde bereits
200598 allgemein und die Implementierung in Oracle 11g im Jahre 200799 geknackt.
Dieser Umstand ist jedoch keine direkte Sicherheitslücke, da der bekannte
Algorithmus erstmal durchlaufen werden muss, um den Hash – Wert eines
Passwortes herauszufinden. D.h. bei richtig gewählten Kennwörtern benötigt die
93
94
95
96
97
98
99
Siehe http://www.red-database-security.com/software/checkpwd.html, 01.08.2008
Siehe http://www.red-database-security.com/software/repscan.html, 01.08.2008
Vorausgesetzt wird ein Intel Pentium Dual – Xeon Prozessor mit einer 3 GHZ – Taktung.
Vgl. http://www.red-database-security.com/whitepaper/oracle_passwords.html, 01.08.2008
Voraussetzung ist die Verwendung des ASCII – Zeichensatzes.
SHA-1 oder Secure Hash Algorithm in der Version 1 ist eine kryptographische Hash – Funktion zur
Erstellung eines Hash – Wertes.
Siehe http://www.heise.de/security/Kryptoverfahren-SHA-1-geknackt--/news/meldung/56428,
31.07.2008
Siehe http://blog.red-database-security.de/2007/09/21/oracle-password-algorithmus-poc-code/,
02.08.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 54 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Ermittlung, wie bereits erwähnt, eine gewisse Zeit um einen möglichen Hash – Wert
zu ermitteln. Ebenfalls ist es, seit der neuen Datenbankversion, erstmals möglich
Kennwörter in Groß- und Kleinbuchstaben als Passwörter zu speichern. Vor dieser
Version wurden die Passwörter, vor der Speicherung in der Datenbank, in
Großbuchstaben umgewandelt und dann abgespeichert.
In Versionen vor Oracle 11g werden der Benutzername und das Passwort über die
DATA DICTIONARY – View dba_users, des Schemas SYS, ausgelesen. Diese View
greift auf die Tabelle user$ des gleichen Schemas zu. Seit 11g wird das Kennwort
jedoch nicht mehr in der angegebenen View angezeigt. Wird die Datenbank komplett
exportiert, so befinden sich die Passwörter aber noch in den entsprechenden Export
– Files. Sie sind ebenfalls in den entsprechenden Tablespaces auf dem
Betriebssystem zu finden.
Wenn sich ein Datenbankadministrator über das Betriebssystem mit der Datenbank
verbindet, verwendet er i.d.R., zur Authentifizierung mit der Datenbank, das von
ORAPWD100 erstellte Passwort – File. Diese Datei wird auf Betriebssystemebene
standardmäßig im Verzeichnis $ORACLE_HOME/dbs abgelegt. Es ist jedoch möglich,
während der Erstellung dieser Datei, einen eigenen Pfad anzugeben. Hier sollte
jedoch ein anderer, als der benannte Pfad gewählt werden, da dieser auch Hackern
bzw. Crackern bekannt ist. Auf die erwähnten Orte innerhalb des Betriebs- bzw.
Datenbanksystems ist, aufgrund der Wichtigkeit ihrer enthaltenen Daten,
entsprechend zu achten.
5.5.6.
Views
Um dem Sicherheitsaspekt einer View gerecht zu werden, wird in diesem Abschnitt
auf die Verwendung dieser Sichten eingegangen. Sie dienen vor allem dazu,
sicherungsbedürftige Daten, wie z.B. personenbezogene Daten zu schützen und
damit den Datenschutz, dem Organisationen unterliegen, zu unterstützen. Views
existieren im Oracle – Datenbanksystem seit der ersten Version und sind bewährte
Methoden zur Sicherung von Tabellen. Weiterhin ermöglichen sie Benutzergruppen
eine eigene Sichtweise auf Tabellenebene.
Eine View ist eine Select – Abfrage auf eine oder mehrere Tabellen, die logisch als
eine eigene Tabelle abgelegt ist. Da bei Abfragen auf die eigentlichen Tabellen der
Zugriff durch die Views so eingeschränkt werden kann, dass wichtige Spalten bzw.
Zeilen einer Tabelle nicht angezeigt werden, stellt die Verwendung einer View eine
verbesserte Sicherheit gegenüber den Datenbeständen dar.
Um eine View erstellen zu können, benötigt ein Entwickler die CREATE VIEW –
Berechtigung. Das SQL – Statement zur Erstellung einer View könnte folgendes
Aussehen haben:
CREATE VIEW v_bokkeeping_view
AS
SELECT name, surname, employee_id
FROM personal_table_1
WHERE department = ‘Buchhaltung’;
100
Mit Hilfe des von Oracle mitgelieferten Programms ORAPWD wird eine Datei erzeugt, die die
Passwörter der Datenbankadministratoren in verschlüsselter Form abspeichert und ihnen zur
Authentifizierung mit der Datenbank dient.
Vgl. [Newman et al. 2004] Seite 247
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 55 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Diese View könnte den Applikationsbenutzern der Personalabteilung, die für die
Angestellten in der Buchhaltung zuständig sind, dazu dienen, immer nur die
entsprechenden Angestellten anzuzeigen.
Dem Benutzer kann weiterhin die CREATE ANY VIEW – Berechtigung zugewiesen
werden, damit dieser die Möglichkeit hat, Views in anderen Schemas anzulegen.
Doch aus den bekannten Gründen der Sicherheit, sollte diese Einspielung einer View
den Datenbankadministratoren vorbehalten sein.
Seit der Version 7 des Oracle – Datenbanksystems, ist es auch möglich, dass
Datenbankbenutzer mit entsprechend ausreichenden Berechtigungen (INSERT,
UPDATE oder DELETE), Daten über eine View in die Tabelle einspielen können. Eine
Berechtigungsvergabe hierfür könnte folgendermaßen aussehen:
GRANT INSERT
ON v_view
TO v_username;
Vorraussetzung hierfür ist natürlich, dass derjenige auch die INSERT – Berechtigung
auf der zugrunde liegenden Tabelle besitzt. Da auch diese Arbeitsweise schnell
unübersichtlich wird und evtl. nicht mehr nachvollzogen werden kann, welcher User
welche Aktualisierungen auf der Tabelle durchgeführt hat, sollte diese
Berechtigungsvergabe außen vor bleiben.
5.5.7.
Die Datenbankbenutzer SYS und SYSTEM
Die
Datenbankadministratoren
sind
die
wichtigste
Personengruppe
im
Datenbanksystem. Ihre Aufgaben sind sehr umfangreich und vertrauensvoll, was
eine sehr genaue Auswahl von diesen Mitarbeitern voraussetzt.
Die Datenbankadministratoren arbeiten grundsätzlich mit den Konten SYS und
SYSTEM. Mit beiden können sie die Datenbank komplett verwalten. Diese werden
auch automatisch während der Installation des Datenbanksystems angelegt. Der
Benutzer SYS ist hierbei der Datenbankbenutzer, der die meisten Rechte im
Datenbanksystem hat. Er kann alle internen Objekte einer Datenbank betrachten.
Weiterhin ist er Eigentümer der DATA DICTIONARY. Beide besitzen die
Berechtigungen SYSDBA und SYSOPER101, mit denen man sich, aus dem
Betriebssystem heraus, an der Datenbank anmelden kann102, bevor der
Datenbankserver gestartet ist. Ebenfalls ist ihnen die Rolle DBA zugewiesen. Wem
die Berechtigungen SYSDBA und SYSOPER zugewiesen sind, kann mit nachfolgendem
SQL – Befehl herausgefunden werden:
SELECT * FROM v$pwfile_users;
Zur Administration der Datenbank sollten jedoch eigens erstellte Datenbankkonten
bzw. Datenbankbenutzer eingerichtet und diesen nur die, für die Administration
notwendigen Berechtigungen zugewiesen werden. Da SYS und SYSTEM jedem
Angreifer weitreichend bekannt sind, sollte sich darauf beschränkt werden,
101
102
Seit Oracle 10g besitzen diese, bei einer zuvor eingerichteten ASM – Instanz, ebenfalls die
Berechtigung SYSASM, die dazu dient diese ASM – Instanzen zu verwalten.
Vgl. [Bryla et al. 2007] Seite 302
Dies geschieht u.a. mittels des von ORAPWD erstellten Passwort – Files (Vgl. Abschnitt 5-5-5).
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 56 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Angriffsversuche über diese Benutzerkonten, im Auditing103 der Datenbank bzw. des
Betriebssystems, zu beobachten. Weiterhin kann mit eigens zugewiesenen
Berechtigungen, die i.d.R. weniger weitreichend sind, als die der benannten
Benutzer, in der Datenbank weniger Schaden angerichtet werden.
Eine der elementaren Aufgaben eines Datenbankadministrators ist die Überwachung
des Datenbanksystems. Dazu gehört der tägliche Blick in das DATA DICTIONARY.
Oracle stellt hier, wie schon erwähnt, alle Informationen, die eine einzelne
Datenbank betreffen, mittels Views zur Verfügung. Hierbei wird unterschieden
zwischen DBA – Views, die nur für die Nutzung durch den Datenbankadministrator
gedacht sind, da sie auch sicherheitsrelevante Informationen enthalten, ALL – Views,
die die gleichen Informationen wie DBA – Views enthalten, dabei aber
sicherheitsrelevante Informationen auslassen und USER – Views, die Information zu
dem Datenbankbenutzer enthalten, der gerade angemeldet ist. Einige wichtige, auf
Sicherheit bezogene Views sind in nachstehender Tabelle erläutert:
View
Erläuterung
dba_users
Diese View enthält Informationen über alle Datenbankkonten.
Enthaltene Spalten sind z.B. Benutzername, verschlüsselte
Passwörter, das Erstellungsdatum des Benutzers, den ihm
zugewiesenen Tablespace und das ihm zugewiesene Profil.
Seit Oracle 11g ist das verschlüsselte Passwort jedoch nur noch
in der Tabelle user$ zu finden.
user_history$
Passworthistorie einzelner Benutzer, falls eine der DEFAULT –
Profil – Parameter PASSWORD_REUSE_TIME bzw.
PASSWORD_REUSE_MAX, aktiviert wurde. Sie enthält Daten wie
Passwort, Benutzername und das Datum zu dem das Passwort
seine Gültigkeit hatte.
dba_sys_privs
Sie zeigt die Systemberechtigungen an, die Rollen und
Benutzerkonten zugewiesen wurden. Spalten dieser View sind
der Benutzer- bzw. Rollenname des Benutzers, dem die
Berechtigung zugewiesen wurde, die Systemberechtigung und
eine Spalte die angibt sowie ein Kennzeichen, das angibt ob die
Berechtigung mit der WITH_ADMIN_OPTION – Berechtigung
weitergegeben wurde.
dba_tab_privs
Tabellenberechtigungen, die an Rollen und Benutzer vergeben
wurden. Die Spalten umfassen den Datenbankbenutzer für den
103
Das Auditing der Datenbank wird im Abschnitt 5-6-4 näher betrachtet.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 57 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
die Berechtigung erteilt wurde, den Eigentümer der Tabelle, den
Tabellennamen, den Benutzer, der die Berechtigung ausgeführt
hat, die Berechtigung selbst sowie eine Information, die angibt,
ob die Berechtigung mit der WITH_GRANT_OPTION –
Berechtigung versehen ist und weitergegeben werden kann.
dba_roles
Diese View enthält alle Namen der Rollen einer Datenbank sowie
ein Kennzeichen, ob diese Rollen, zur Aktivierung durch den
User, ein Kennwort benötigen.
role_sys_privs
Hierin sind alle Rollen verankert, die Systemberechtigungen
enthalten. Inhalte dieser View sind der Rollenname, die
Systemberechtigung und ein Kennzeichen, das angibt, ob die
Rolle mit der WITH_ADMIN_OPTION – Berechtigung versehen
ist.
role_tab_privs
Sie enthält alle Rollen, die sich auf Tabellen- und
Spaltenberechtigungen beziehen. Enthaltene Informationen sind
der Rollenname, der Tabellenname, der Spaltenname (wenn
explizit nur für die Spalte vergeben), die Objektberechtigung
und ein Kennzeichen, welches anzeigt, ob die Rolle mit der
WITH_GRANT_OPTION – Berechtigung gekennzeichnet ist.
dba_role_privs
Enthalten sind die Namen der Rollen, die Benutzern oder
anderen Rollen zugewiesen wurden, der Name des
Datenbankbenutzers bzw. der Rolle und ein Kennzeichen, ob die
Rolle mit der WITH_ADMIN_OPTION – Berechtigung versehen
ist.
Tabelle 5-8 Wichtige DATA DICTIONARY – Views (Quellen: [Bryla et al. 2007] und [Newman et al. 2004])
Als Mindestanforderung sollten die angegebenen Views einer täglichen Kontrolle
unterzogen und auf besondere Vorkommnisse überprüft werden. Um einen gesamten
Überblick über die DATA DICTIONARY zu erhalten, sind die im Schema SYS
enthaltenen Views genau zu kennen104.
Wie schon in Abschnitt 5-1 erwähnt, sollte, damit Datenbankentwickler ihre Skripte
nicht in jedem Schema einspielen können, nur die Gruppe, der für den jeweiligen
Bereich zuständigen Administratoren, entsprechende Berechtigungen an den global
nutzbaren Objekten einer Datenbank, wie z.B. Tabellen oder PL/SQL – Packages,
erhalten.
104
Einen Überblick über alle in Oracle 11g existierenden DATA DICTIONARY – Views erhält man auf
folgender Homepage:
http://download-uk.oracle.com/docs/cd/B28359_01/server.111/b28320/toc.htm, 04.08.08
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 58 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Die übrigen Datenbankadministratoren wiederum, müssten mit den eigentlichen
Daten und Objekten innerhalb der Datenbank nicht mehr viel zu tun haben. Ihnen
obliegen
dann
mögliche
Berechtigungsvergaben
von
Systemund
Objektberechtigungen sowie die gesamte Sicherung und Überwachung des
Datenbanksystems, sowohl intern als auch extern.
Generell kann natürlich keine Aussage darüber gemacht werden, welche Gruppen in
einer Organisation zum Tragen kommen, da Anforderungen und evtl. fehlende
Mitarbeiter eine weitere Rolle spielen. Jedoch sollten die Aufgaben, der
verschiedenen, eingesetzten Administratoren miteinander verzahnt sein, um somit
eine gegenseitige und unbewusste Kontrolle zu ermöglichen.
5.6.
Sicherung mittels zusätzlicher Komponenten
Nachdem nun vieles erläutert wurde, um das Datenbanksystem von innen heraus,
mit den von Oracle standardmäßig mitgelieferten Möglichkeiten zu schützen, geht es
in diesem Abschnitt darum, das Datenbanksystem mit zusätzlichen Komponenten zu
sichern.
Der Einsatz dieser zusätzlichen Software hängt nicht minder vom Umfang des
Datenbanksystems und der darin enthaltenen Daten einer Datenbank zusammen. Je
nach Schutzbedürftigkeit der Daten, sind viele Komponenten sehr sinnvoll und
können den Zugriff auf die Daten um einiges sicherer machen. Es ist ebenfalls zu
beachten, dass jede zusätzliche Komponente einen gewissen Overhead verursacht,
der die Datenbank und Zugriffe auf die enthaltenen Daten immens verlangsamen
kann. Weiterhin sind zwei der nachstehend genannten Komponenten kostenpflichtig
und meist sehr teuer, was eine eingehende Kosten / Nutzen – Analyse voraussetzt.
Auch wenn durch deren Einsatz weitere Sicherheitslücken im Datenbanksystem
entstehen können, sollten die wichtigsten Anwendungen, die Oracle zusätzlich bietet,
um das Datenbanksystem zu schützen, bekannt sein.
5.6.1.
Oracle Virtual Private Database (VPD)
In Version 8i hat Oracle die Virtual Private Database eingeführt. Es handelt sich um
keine Option bzw. Komponente die während der Installation ausgewählt und
hinzugefügt werden kann. Sie ist in den Installationsprozess integriert und dient
dazu, eine Sicherheitspolitik direkt auf Datenebene durchzuführen.
Mit dieser Komponente ist es möglich eine Art View zu erstellen, die direkt über dem
jeweiligen Objekt, d.h. der Tabelle oder einer anderen View liegt. Während bei der
Verwendung von bekannten Views, zumindest die Datenbankentwickler den wahren
Inhalt der Tabelle, des zugrunde liegenden Objekts, sehen können, ist dies bei der
Verwendung einer VPD, nicht möglich. Die Sicherheitsmaßnahmen greifen, aus dem
Blickwinkel der Datenbankbenutzer, direkt auf View- bzw. Tabellenebene. D.h., dass
selbst die Entwickler eine eingeschränkte Sicht auf die Inhalte von Tabellen und
Views haben. Dies ist z.B. dann nützlich wenn sensible Daten, wie Gehälter etc., in
einer Tabelle abgelegt sind.
Durch Einsatz der VPD wird, bei einer Abfrage auf das jeweilige Objekt, durch
Anhängen einer WHERE – Klausel, einfach der Blick auf bestimmte Zeilen des
zugrunde liegenden Objekts verwährt. Dies wird im Oracle – Umfeld auch Row Level
Security (RLS) bzw. Fine Grained Access Control (FGAC) genannt. Die Entwickler
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 59 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
bzw. Applikationsbenutzer bekommen, bei Abfragen auf das jeweilige Objekt,
bestimmte Zeilen einfach nicht angezeigt. Mit Erscheinen von Oracle 10g, wurde die
VPD auf Spaltenebene erweitert. Nach einer abgesetzten Abfrage bekommen die
Benutzer, bei den selektierten Spalten, dabei standardmäßig nur einen NULL – Wert,
anstatt der gesicherten Information, angezeigt.
Dieser Mechanismus wird in der Datenbank mittels so genannter Policy – Funktionen
und der darin enthaltenen Schutzmaßnahmen integriert. Als Ergebnis liefern sie ein
Prädikat, die benannte WHERE – Klausel, zurück.
Sie werden meist durch die Datenbankadministratoren an- und in einem bestimmten
Schema für Sicherheitsrichtlinien abgelegt. Mit Hilfe des im Schema SYS enthaltenen
PL/SQL – Package DBMS_RLS, können von Oracle vordefinierte Funktionen bzw.
Prozeduren genutzt werden, um Sicherheitsrichtlinien einzuführen. Zur Anlage einer
zuvor erstellten Policy – Funktion wird die in DBMS_RLS enthaltene Prozedur
ADD_POLICY verwendet. Ihr werden zur Aktivierung, die in der Tabelle 5-9
enthaltenen Parameter übergeben.
Parameter
Erläuterung
OBJECT_SCHEMA
Der Datenbankbenutzer bzw. das Datenbankschema für den
die Sicherheitsrichtlinie greifen soll und welches das zu
sichernde Objekt enthält.
OBJECT_NAME
Enthält den Namen des Objekts für das die Richtlinie greifen
soll. Also den View- oder Tabellennamen.
FUNCTION_SCHEMA
Name des Schemas, das die Policy – Funktion enthält.
POLICY_FUNCTION
Name der zuvor erstellten und zu verwendeten Policy –
Funktion.
STATEMENT_TYPES
Der Geltungsbereich für den die Funktion zutrifft. Erlaubt
sind die Werte INSERT, UPDATE, DELETE und SELECT.
UPDATE_CHECK
Gibt an, ob die Policy auch bei Aktualisierungen (INSERT
und UPDATE) des Objekts ausgeführt wird.
ENABLE
Standardmäßig auf TRUE gesetzt, gibt dieser Parameter an,
ob die Policy nach Anlage über ADD_POLICY, direkt aktiviert
werden soll.
STATIC_POLICY
Ist dieser Parameter auf TRUE gesetzt, gilt die Policy –
Funktion für jeden User, der auf das Objekt zugreift.
POLICY_TYPE
Standardmäßig ist dieser Wert NULL und bedeutet, dass die
Policy immer angewendet wird und statisch ist. Eine
dynamische Policy kann mit bestimmten
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 60 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Datenbankbenutzern verknüpft und der dazugehörige
Kontext mit CREATE CONTEXT105 angelegt werden.
LONG_PREDICATE
Der enthaltene Wert ist standardmäßig FALSE und
bedeutet, dass das von der Policy – Funktion zurück
gelieferte Prädikat max. 4.000 Zeichen haben darf.
SEC_RELEVANT_COLS
Erst seit Version 10g enthalten, definiert dieser Parameter
die Spalten, für die die Policy – Funktion benutzt werden.
SEC_RELEVANT_COLS
Gibt den Wert an, der in den gesicherten Spalten, für den
_OPT
Datenbankbenutzer angezeigt wird. Dieser ist
standardmäßig mit NULL belegt.
Tabelle 5-9 Parameter der Prozedur ADD_POLICY (Quelle: [Bryla et al. 2007] Seite 345 f.)
Das Package DBMS_RLS bietet, neben der ADD_POLICY, auch Prozeduren zur
Löschung, Aktivierung und Deaktivierung sowie weitere nützliche Prozeduren zur
Verwaltung von Policies an106.
Dieser Schutz könnte u.a. für den Applikationskontext Internet von großer
Bedeutung sein. Greifen Anwender über das Internet auf eine Datenbank zu, so
könnte es u.U. mittels SQL – Injection, dazu kommen, dass die Datenbank
angegriffen wird um Daten auszulesen. Würde nun eine Sicherheitsmaßnahme der
Applikationen über der Datensicht, wie z.B. die Internetanbindung oder die PL/SQL –
Prozedur, die auf die Tabelle oder die View zugreift, ausgehebelt, so könnte der
Angreifer die gewünschten Daten trotzdem nicht auslesen, da die Sicherung direkt
mit dem Objekt, also der Tabelle bzw. View verknüpft ist. Dies würde natürlich nur
dann
helfen,
wenn
der
Angreifer
über
keine
Berechtigungen
eines
Datenbankadministrators verfügt und die VPD wieder entfernen kann. In der Praxis
ist dies jedoch eine Wunschvorstellung, da die VPD nur bei Benutzern greift, die
eindeutig zu identifizieren sind. Erfolgt eine Internetanbindung an die Datenbank, so
erfolgt der Zugriff auf die Datenbank, aufgrund mangelnder Oracle – Kenntnis der
Web – Entwickler, meist mit einem standardisierten User, der sich nicht eindeutig
identifizieren lässt, was eine solche Sicherung in diesem Kontext ausschließt.
5.6.2.
Oracle Label Security
Die Oracle Label Security ist eine zusätzliche Komponente, die ebenfalls seit Version
8i des Oracle – Datenbanksystems verfügbar ist und Zugriffe auf Zeilenebene
beschränkt. Sie basiert auf der Technologie der Virtual Private Database. Der
Unterschied zur VPD liegt hauptsächlich darin, dass keine Policy – Funktionen
programmiert und implementiert werden müssen.
105
106
Hilfreiche Beispiele zur Anlage von kontextbezogenen, dynamischen Policies sind auf folgender
Homepage enthalten:
http://www.ordix.de/ORDIXNews/2_2007/Datenbanken/fine_grained_access_control.html, 10.08.08
Weitere Informationen zur Verwendung von Policies und einer VPD findet man in:
[Bryla et al. 2007] ab Seite 339.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 61 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Die Wartung erfolgt i.d.R. über den Oracle Policy Manager, der in den Oracle
Enterprise Manager integriert ist. Hierin kann man z.B. Richtlinien erstellen, Label –
Komponenten definieren, Richtlinien an Tabellen und Schemas zuweisen, Audit –
Optionen einstellen und vieles mehr.
Als Grundlage dienen so genannte Labels. Datenbankbenutzer erhalten Labels,
ihre minimalen und maximalen Zugriffsrechte auf bestimmte Tabellen definieren.
zu sichernden Tabellen erhalten, nach Anlage im Oracle Policy Manager,
zusätzliche Spalte, ebenfalls ein Label, dass das benötigte Zugriffsrecht auf
jeweilige Zeile definiert.
die
Die
als
die
Die Vergabe der Labels basiert auf einem hierarchischen Prinzip und besteht aus drei
Teilen. Jeder dieser Teile kann bis zu 9.999 Ausprägungen beinhalten. Im ersten Teil,
den Levels, werden die Datenbankbenutzer bzw. Benutzergruppen definiert. Der
einfache Angestellte erhält z.B. das Label 1. Der Gruppenleiter erhält das Label mit
dem numerischen Wert 2 usw. Wird einem Gruppenleiter das Label 2 zugeordnet, so
hat dieser auch automatisch die Berechtigungen des Labels 1, also die des einfachen
Angestellten. Im zweiten Teil erfolgt die Definition der Compartments. Gibt es z.B.
eine Personalabteilung, die in unterschiedliche Gruppen aufgeteilt ist, so kann eine
Unterteilung der Gruppen vorgenommen und sichergestellt werden, dass jede
Gruppe nur die Angestellten anzeigen darf, die auch für sie bestimmt sind. Im dritten
Teil werden die Groups festgelegt. Groups ermöglichen die Unterteilung in
verschiedene Organisationsstrukturen. Als Unterscheidung kann hier z.B. festgelegt
werden, dass eine Gruppe in einer Personalabteilung mehr Berechtigungen hat, als
die gesamte Personalabteilung und diese wieder mehr Berechtigungen als die Gruppe
der Auszubildenden, die in dieser Personalabteilung tätig sind.
Es besteht eine Menge von Möglichkeiten bei der Verwendung von Labels. Die
Definition bedarf jedoch einer vorherigen genauen Planung um bei einer späteren
Umstrukturierung, nicht alles neu definieren zu müssen. Weiterhin benötigt dies
einen gewissen Pflegeaufwand, der schnell unübersichtlich werdenden Labels, des
Datenbestandes
und
der
Datenbankbenutzer.
Die
pflegenden
Datenbankadministratoren müssen weiterhin die Organisation und die darin
enthaltenen Geschäftsprozesse beherrschen, was natürlich nicht der Fall sein sollte,
da Administratoren für die Technik verantwortlich sind und keine fachlichen Abläufe
kennen sollten. Aufgrund dieser eher negativen Eigenschaften ist die Verwendung
einer VPD, der einer Label Security, vorzuziehen107. In Deutschland wird diese
Komponente, aufgrund der Komplexität und hohen Kosten von rund 20.000 US –
Dollar pro verwendetem Prozessor, nur von wenigen Unternehmen und nur auf
einzelnen Datenbanken eingesetzt.
5.6.3.
Oracle Data Vault
Ein Novum in der Welt der Oracle – Datenbanksysteme ist die Oracle Data Vault.
Diese mit Version 10g (Release 2) erschiene, später auf Oracle 9.2 zurückportierte
Komponente und dort unter dem Namen Oracle Database Vault bekannt, ist zwar
kostenpflichtig, d.h. nicht direkt in der Enterprise – Edition enthalten, vom ersten
Eindruck her aber sehr nützlich. Im Gegensatz zur Oracle Label Security und Oracle
Virtual Private Database schränkt diese Komponente nicht den Zugriff auf
Zeilenebene sondern direkt auf Objekt- und Befehlsebene ein, bietet jedoch die
Möglichkeit, die beiden Komponenten, inkl. ihrer Funktionalität, miteinander zu
107
Weitere Informationen zur Verwendung der Oracle Label Security findet man unter:
http://www.oracle.com/lang/de/database/label-security.html, 10.08.2008.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 62 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
verknüpfen. Um diese Komponente verwenden zu können ist jedoch der Kauf der
Oracle Label Security Voraussetzung.
Wie schon zu Beginn dieser Arbeit erwähnt, erfolgen viele Angriffe auf ein IT- bzw.
Datenbanksystem von innen heraus. Der Gruppe der Datenbankadministratoren ist
es, da diese i.d.R. die entsprechenden Berechtigungen besitzen, ein leichtes auf alle
Daten innerhalb der Datenbank zuzugreifen und diese auszulesen. Nun, da es
womöglich
auch
schwarze
Schafe
unter dieser
Gruppe
und
anderen
Datenbankanwendern mit vergleichsweise hohen Berechtigungen gibt und es nicht
unbedingt gewünscht ist, dass jeder, dieser hoch privilegierten User, alle Daten lesen
soll, hat Oracle diese Komponente entwickelt.
Es können nun Datenbankobjekte, die auch gegen Zugriffe hoch privilegierter
Benutzer geschützt werden sollen, in dem Data Vault abgelegt werden. Innerhalb
dieses Tresors können nun Regeln festgelegt werden, die autorisierten Usern die
Zugriffe auf die darin enthaltenen Informationen gewähren bzw. verweigern.
Jeglicher Datenbankbenutzer, der nicht für die jeweiligen Bereiche autorisiert ist,
kann auf die Datenbankobjekte dieser Bereiche nicht mehr zugreifen bzw. diese nicht
mehr verwalten.
Eine Menge von System- und Objektberechtigungen kann dabei mit Regeln verknüpft
und dadurch, dessen Ausführung von hoch privilegierten Benutzern, verhindert
werden. Derzeit bietet Oracle 45 dieser Datenbankbefehle zur Verknüpfung an. Hierin
sind u.a. gebräuchliche ALTER, CREATE und GRANT – Befehle enthalten. Die
Einhaltung dieser Regeln wird bei jedem Zugriff über das im Datenbanksystem
enthaltene DBMS überprüft und ggf. abgewährt. Nach der Einspielung der Data Vault
schützt die Komponente direkt verschiedene Objekte. Hierzu zählt auch der Schutz,
dass die vordefinierte Rolle DBA nicht mehr mit Ausführung des GRANT – Befehls
weitergegeben werden darf.
Weiterhin werden so genannte Realms definiert, denen jeweils eigenständige
Datenbankadministratoren zugewiesen sind. Standardmäßig werden drei Realms
angelegt bzw. verwaltet. Einer für das Benutzermanagement, ein weiterer für die
DATA DICTIONARY und einer zur Verwaltung der Data Vault.
Die Daten innerhalb der Datenbank können nun so verwaltet werden, dass z.B. ein
Schema, welches alle Personaldaten beinhaltet, einen eigenständigen DBA und ein
Schema, dass die Priorität über die Buchhaltungsdaten inne hat, einen eigens
zugewiesenen DBA erhält. Jedem dieser Administratoren können nun, innerhalb
seines Schemas, Berechtigungen zur Anlage und Verwaltung von Objekten
zugewiesen werden. Sie können jedoch keine Datenbankbenutzer anlegen. Dieses
Recht obliegt nun einzig demjenigen, der auch für den Realm des
Benutzermanagements zuständig ist.
Der Gedanke liegt nahe, dass zumindest die Datenbankadministratoren des Schemas
SYS bzw. SYSTEM, die Möglichkeit haben, die in den anderen Schemas enthaltenen
Objekte anzusehen bzw. zu verändern. Nun, obwohl jeder dieser Benutzer
weitreichende Systemberechtigungen sein Eigen nennt, gelangen sie, innerhalb der
Datenbank,
nicht
an
die
gewünschten
Informationen.
Denn
das
Datenbankmanagementsystem prüft bei jeder Abfrage auf ein Objekt, ob dieses sich
im geschützten Bereich befindet. Wird versucht auf geschützte Bereiche zuzugreifen,
fängt das DBMS diesen Versuch ab, gibt eine Fehlermeldung aus und schreibt, wenn
gewünscht, einen Eintrag in das zuschaltbare Data Vault – Auditing. Der typische
Datenbankadministrator, der alle Datenbankbenutzer und enthaltene Objekte
verwaltet, gibt es in dieser Form also nicht mehr. Zumindest nicht für die Bereiche,
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 63 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
die im Datentresor abgelegt oder über eigenständige Realms geschützt sind, denn
diese benötigen nun einen eigenen Datenbankadministrator108.
Was Oracle jedoch nicht vermarktet, sind die negativen Eigenschaften dieser
Komponente, die dazu führen, dass sie derzeit in keinem Unternehmen produktiv
eingesetzt wird. Sogar bei Oracle selbst nicht.
Allein die Tatsache, dass nun, anstatt einem Administrator, drei Administratoren
benötigt werden, erhöht die Kosten, gerade bei einer großen Menge von
Datenbanken immens. Rein theoretisch verdreifacht sich also der Personalbedarf an
Datenbankadministratoren. Kommen dann noch Urlaube und Krankheiten der
Mitarbeiter hinzu, wird noch mal eine entsprechende Anzahl an zusätzlichen
Mitarbeitern benötigt. Dies führt dazu, dass die Data Vault letztlich in Personalunion
betrieben werden muss, womit man wieder bei der eigentlichen Ursache zur
Schaffung dieser Komponente angelangt ist.
Weiterhin ist die Komponente, anhand ihres Aufbaus, kaum teamfähig. Müssen,
innerhalb der Datenbank, Fehler behoben werden, so muss nach dem Administrator
gesucht werden, der den Fehler beheben kann. Wurde dieser gefunden, so kann
hinzukommen, dass derjenige Administrator wieder auf der Suche nach anderen
Administratoren ist, die für einen anderen Teil der Fehlerbehebung zuständig sind.
Dies verursacht wieder zusätzliche Kosten, da dadurch Reaktionszeit und reine
Arbeitszeit verloren geht.
Als letzten Schwachpunkt der Data Vault, sollte erwähnt werden, dass sie nicht
gegen Angriffe aus Betriebssystemebene heraus schützt. Bei nicht verschlüsselten
Tablespaces existieren die Daten der Datenbank weiterhin gut leserlich auf dem
Betriebssystem. Ebenfalls kann ein Datenbankadministrator, der für die Interaktion
mit dem Betriebssystem verantwortlich ist, die Data Vault einfach abschalten109.
5.6.4.
Auditing
Auch wenn es sich hierbei um keine Komponente handelt, die direkt mit Sicherheit
der Daten in Zusammenhang gebracht wird, sollte das allgemeine Auditing der
Datenbank in diesem Abschnitt trotzdem Beachtung finden. Denn hiermit ist es
möglich, jegliche Angriffsversuche auf Daten, die Datenbank und das
Datenbanksystem selbst auszuwerten und darauf zu reagieren. Wissen Mitarbeiter,
dass das Auditing eingeschaltet ist, so kann dies innerhalb einer Organisation ein
hilfreiches Abschreckungsmittel für Angriffsversuche sein. Das Auditing des
Datenbanksystems Oracle bietet verschiedene Typen zur Überwachung, wobei die
gängigsten in diesem Abschnitt näher betrachtet werden.
Die typischen Protokollierungen des Auditing, können entweder in Verzeichnissen auf
dem Betriebssystem direkt oder in der datenbankeigenen Tabelle aud$ im Schema
SYS abgelegt werden. Die Abfrage der Administratoren auf die Audit – Einträge
erfolgt mit der View dba_audit_trail.
Die Initialisierungsparameter zum Einschalten des Auditing werden mit dem
108
109
Ein Whitepaper zur Oracle Data Vault findet man auf der Homepage von Oracle unter:
http://www.oracle.com/lang/de/collateral/downloads/ORACLE_White_Paper_Database_Vault.pdf,
11.08.2008.
Das Unternehmen Red – Database – Security hat weiterhin einige, schwerwiegende Sicherheitsfehler
entdeckt.
Siehe http://www.all-about-security.de/kolumnen/frage-des-monats/artikel/6555-red-databasesecurity-ein-sehr-interessantes-produkt-na/, 13.08.2008.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 64 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
AUDIT_TRAIL – Parameter in der Datei init.ora110 gesetzt. Die Datei befindet sich im
Betriebssystemverzeichnis des installierten Datenbanksystems. Nachfolgende Tabelle
zeigt die Parameterwerte und deren Funktionen:
Parameterwert
Erläuterung
NONE, FALSE
Mit diesen Werten deaktiviert man das Auditing
OS
Aktiviert das Auditing und schreibt die Datensätze
standardmäßig in das Verzeichnis
$ORACLE_HOME/rdbms/audit. Da dieses Verzeichnis
Angreifern bekannt ist, sollte das Verzeichnis geändert
werden, indem der Parameter AUDIT_FILE_DEST in der
Datei init.ora auf einen anderen Wert gesetzt wird.
DB, TRUE
Aktiviert ebenfalls das Auditing. Sendet die Datensätze
jedoch an die Tabelle aud$ im Schema SYS.
XML
Speicherung der Daten im XML – Format.
DB_EXTENDED
Entspricht dem Parameter DB. Jedoch werden zusätzlich die
Spalten sqlbind und sqltext, innerhalb der Tabelle aud$,
gefüllt.
Tabelle 5-10 Parameter AUDIT_TRAIL der Datei init.ora (Quelle: [Bryla et al. 2007] Seite 358 f.)
Ein Typ zur Überwachung von Ereignissen innerhalb der Datenbank ist das
Anweisungs – Auditing. Mit dessen Hilfe können alle möglichen SQL – Statements,
die von einem, einigen bestimmten oder von allen Datenbankbenutzern durchgeführt
wurden, protokolliert werden (z.B. abgesetzte SELECT, INSERT oder UPDATE –
Befehle). Weiterhin das Berechtigungs – Auditing, mit dessen Hilfe, die Vergabe von
Systemberechtigungen überprüft wird (z.B. abgesetzte ALTER, CREATE und GRANT –
Befehle). Mit dem dritten Typ, dem Schemaobjekt – Auditing können Anweisungen,
die auf ein bestimmtes oder mehrere Objekte, innerhalb eines bestimmten Schemas
abzielen, überprüft werden (z.B.: „ALTER TABLE personal.personal_table;“).
Für die drei benannten Typen kann die Überwachung mit folgendem Befehl
eingeschaltet werden:
AUDIT v_statement
BY v_user ACCESS
WHENEVER SUCCESSFULL;
In dem angegebenen Beispiel werden alle Zugriffe mit dem, in v_statement
eingetragenen SQL – Befehl, immer dann protokolliert, wenn die Aktion von v_user
110
Diese Datei wird vom Datenbanksystem zur Initialisierung einer Datenbankinstanz verwendet. Bis zur
Oracle – Version 8i unter dem Namen init.ora und ab Version 9i, unter dem Namen sp.ora bekannt.
Die Dateinamen können je nach Benennung der Datenbankinstanzen abweichen.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 65 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
erfolgreich durchgeführt wurde.
Die Klausel WHENEVER SUCCESSFULL bedeutet, dass nur die erfolgreichen
abgesetzten Befehle protokolliert werden. Der Gegenpart hierzu ist WHENEVER NOT
SUCCESSFULL. Sollen beide, die erfolgreichen und nicht erfolgreichen Anweisungen
protokolliert werden, so wird der BOTH gesetzt. Mit dem Zusatz BY v_user ACCESS
werden die in v_statement abgegebenen Anweisungen, bei dem Datenbankbenutzer
v_user immer mitprotokolliert. Mit BY v_user SESSION hingegen, kann die
Anweisung auf nur einen Audit – Eintrag, innerhalb einer Session, beschränkt
werden. Sind die Anweisungen aller Datenbankbenutzer zu protokollieren, so wird die
spezielle Benutzerangabe BY ACCESS einfach weggelassen. Nach dem Schlüsselwort
AUDIT folgt die Anweisung, die man mitprotokollieren möchte. Als Beispiel sei der
Befehl AUDIT TABLE genannt, womit die Erstellung, Löschung und Änderung von
Tabellen protokolliert werden kann. Würde hingegen AUDIT CREATE TABLE
angegeben, so würden die Audit – Einträge nur bei Erstellung einer Tabelle erzeugt.
Das hoch auflösende Auditing oder auch Fine Grained Auditing (FGA) ist ein weiterer
Vertreter der möglichen Typen innerhalb einer Oracle – Datenbank. Dieser mit
Version 9i erschienene Typ, ist mit dem Vorgehen einer Oracle Virtual Private
Database zu vergleichen. Während im Anweisungs- oder Schemaobjekt – Auditing
nur die allgemeinen Zugriffe auf Objekte, innerhalb der Datenbank, überwacht
werden, besteht hier die Möglichkeit von Datenbankbenutzern ausgewertete Spalten
bzw. Zeilen von Tabellen und Views in das Auditing einfließen zu lassen. Wie in
Abschnitt 5-6-1, gibt es auch hier Policies, die eingesetzt werden können. Oracle
stellt das PL/SQL – Package DBMS_FGA zur Verfügung, das u.a. auch eine Prozedur
ADD_POLICY zur Erstellung einer solchen Policy enthält111. Diese Auditing – Methode
dient dazu, dass Informationen feiner granuliert, protokolliert werden können und
unnütze Informationen aus der Protokollierung ausgeschlossen werden. Im
Gegensatz zu den vorgenannten Auditing – Typen, erfolgt hierbei die Protokollierung
in der Tabelle fga_log$ des Schemas SYS. Die Einträge können über die View
dba_fga_audit_trail ausgelesen werden.
Wird die Oracle Data Vault genutzt, kann, innerhalb dieser Komponente, ein eigenes
Auditing, mit eigenen Tabellen und Regeln, hinzugeschaltet werden.
Die Auswahl, welche Auditingtypen in welchem Umfang eingesetzt werden, sollte
vorher genau überlegt werden. Allein schon aus Gründen der Performance und
Speicherintensität kann das Auditing schnell auch zu einem Hindernis in der
Datenbank werden112.
Vorsicht ist bei Vergabe der bereits erwähnten Rolle DELETE_CATALOG_ROLE
geboten. Besitzt diese jemand, so ist es diesem User möglich, die allgemeinen Audit
– Tabellen zu löschen oder zu archivieren und für Auswertungszwecke zu
missbrauchen.
5.7.
Erweiterte Sicherheitsmaßnahmen
Als letzten Schritt zur Absicherung eines Oracle – Datenbanksystems werden einige
erweiterte Sicherheitsmaßnahmen beschrieben. Da das DBS der Fachhochschule Köln
111
112
Nützliche Tipps zur Erstellung einer Policy, findet man bei [Bryla et al. 2007] Seite 366 und unter:
http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96612/d_fga2.htm#1002217,
20.09.2008
Mögliche Einsatzszenarien für ein Auditing unter [Newman et al. 2004] Seite 507 ff.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 66 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
auch für Studenten über das Internet angebunden ist, wird in diesem Abschnitt u.a.
die Netzwerksicherheit erwähnt. Weiterhin wird der wichtige Einsatz von
Backupmethoden beschrieben. Auch eine sichere Datenbank kann durch einen
unerwarteten Festplattencrash ihre Daten verlieren. Zum Schluss werden noch
sonstige, kleinere Sicherheitsaspekte aufgegriffen um die Sicherung zu vollenden.
5.7.1.
Netzwerksicherheit
Ob die Datenbank innerhalb eines Netzwerkes bzw. Intranets mit anderen Rechnern
oder anderen Datenbanken verbunden ist oder aber die Datenbank direkt an das
Internet angeschlossen ist. Wird einmal von einem Zugriff aus dem Betriebssystem
heraus auf die darin liegende Datenbank abgesehen, ist nahezu jede Interaktion mit
der Datenbank und den technischen Komponenten innerhalb eines IT – Systems
auch mit den Themen Netzwerk und Sicherheit verbunden. Daraus resultieren neben
den üblichen Gefahrenquellen auch sicherheitsgefährdende Aspekte wie das
Sniffing113 und das Spoofing114.
Im Rahmen der kostenpflichtigen115 Oracle Advanced Security (OAS) bietet Oracle
verschiedene Möglichkeiten zur Netzwerk – basierten Absicherung. Hierunter zählen
u.a. Authentifizierungsmethoden, wie SSL und die Verschlüsselung mit dem
erwähnten SHA-1 – Algorithmus. Weiterhin sind Integritätsprüfungen enthalten, die
beim Netzwerkverkehr unrecht
modifizierte, zusätzliche oder gar gelöschte
Datenpakete aufspüren. Dies geschieht durch eindeutig vergebene Sequenznummern
sowie durch die Verwendung von Prüfsummen, die durch verschlüsselte Hash –
Werte (z.B. durch den SHA-1- oder MD5 – Algorithmus) gesichert sind.
Um Sniffing- oder Spoofing – Attacken vorzubeugen, hilft die Verwendung des
Secure Socket Layer oder auch SSL116. Es handelt sich um ein Standardprotokoll zur
Sicherung
von
Netzwerkverbindungen.
Neben
einer
verschlüsselten
Datenübertragung, besteht weiterhin die Möglichkeit eine Authentifizierung
durchzuführen. SSL kann dabei so konfiguriert werden, dass entweder nur der Server
oder aber der Client und der Server sich authentifizieren müssen. Der Einsatz eines
SSL – Verfahrens erfordert zwar einigen Aufwand, da man sich z.B. ein Zertifikat
erstellen lassen und dieses von einer öffentlichen Zertifikatsvergabestelle117
unterzeichnet werden muss, dient aber erheblich der Sicherheit der Datenbank.
Dieses Verfahren zur sicheren Datenübermittlung ist im Datenbanksystem unter dem
Namen Oracle SSL bekannt. Zur Verwendung hierfür ist u.a. die Modifikation der
Datei
listener.ora,
die
im
Betriebssystemverzeichnis
$ORACLE_HOME/network/admin/ zu finden ist, nötig. Hierin sind auch die Ports
angegeben, über die der Datenverkehr mit der Datenbank erfolgt. Die automatisierte
Konfiguration des Oracle SSL, kann mit dem Oracle Net Configuration Assistent
vorgenommen werden118.
113
114
115
116
117
118
Sniffing ist eine Methode um den Datenverkehr in einem Netzwerk aufzuzeichnen.
Das Spoofing bezeichnet eine Methode, in der versucht wird, im Netzwerk eine bestimmte Identität
vorzugaukeln. Im Kontext Oracle – DBS kann dies z.B. bedeuten, dass jemand versucht, sich im
Netzwerk als DBA auszugeben.
Der Einsatz der Oracle Advanced Security kostet ca. 10.000 US – Dollar pro verwendeten Prozessor.
Bei der Verwendung des Oracle SSL in der Oracle – Version 9i gibt es Sicherheitslücken, die mit
Herunterladen eines Sicherheits – Patches behoben werden sollten.
Siehe http://www.heise.de/security/Patches-beheben-SSL-Fehler-bei-Oracle--/news/meldung/42664,
16.08.2008
Eine dieser Vergabestellen für Zertifikate ist CAcert. Siehe http://www.cacert.org/, 15.08.2008
Eine Anleitung zur Netzwerkinstallation mit dem Oracle Net Configuration Assistent findet man in
[Bryla et al. 2007] Seite 563 ff.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 67 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Jeder Datenbankserver innerhalb eines Netzwerkes erhält die Datei listener.ora.
Diese Datei wird automatisch, mit Ausführung des Oracle Net Configuration
Assistenten generiert. Neben den Ports, die der Kommunikation mit der Außenwelt
dienen, enthält sie Informationen über die Namen und Adressen der Listener –
Prozesse (Dies ist der Datenbankprozess, der das Datenbanksystem anderen
Systemen zugänglich macht.), die auf dem Betriebssystem laufen sowie der
angesteuerten Datenbankinstanzen.
Mit Herausgabe der Datenbankversion 10g wurden alle Listener, gegen Angriffe von
außen, standardmäßig über den undokumentierten Parameter EXTERNAL
LOCAL_OS_AUTHENTICATION geschützt. Vergibt man diesen Listenern ein Passwort,
so macht man diese wieder von der Außenwelt angreifbar. Da es den Parameter in
vorigen Versionen nicht gab, ist im Rahmen der Netzwerksicherheit nun darauf zu
achten, dass ein Oracle – Listener der Versionen 7 bis 9i mit einem Passwort
versehen ist. Lt. des Unternehmens Red – Database – Security, sind 90% aller
Listener dieser Versionen nicht mit einem Passwort geschützt, was zu einem sehr
einfachen Angriff für die Datenbank genutzt werden kann. Der daraus resultierende
Schritt ist also die Vergabe eines Kennworts. Hierzu wird in das
Betriebssystemverzeichnis $ORACLE_HOME/bin/ gewechselt. Nun wird das
Befehlszeilenprogramm lsnrctl aufgerufen, mit dem auch der, bzw. die Listener –
Prozesse gestartet und gestoppt werden. Nach Angabe des Befehls change_password
listener_name erfolgt die Aufforderung ein Passwort einzugeben und dieses zu
bestätigen. Wie in den vorigen Abschnitten mehrmals erwähnt ist es auch hier
notwendig, sichere Passwörter zu vergeben. Da die Kennwörter, nach Anwendung
des von Oracle verwendeten Data Encryption Standard (DES), als Hash – Wert in der
Datei listener.ora abgelegt werden, ist weiterhin darauf zu achten, dass diese Datei
vor fremden Zugriffen auf dem Betriebssystem geschützt ist. Im Gegensatz zum
Oracle Net Configuration Assistent kann auch mit Hilfe des Oracle Net Manager ein
Kennwort für den Listener vergeben werden.
Neben der Listener – Absicherung sollte als weiterer Punkt, die Verwendung von SQL
– Plus, kritisch begutachtet werden. SQL – Plus ist ein Kommandozeilentool, mit dem
SQL – Befehle abgesetzt werden können. Via SQL – Plus erfolgt eine Verbindung zur
Datenbank entweder direkt über den Client – Rechner oder über eine Secure Shell
(SSH) und das UNIX – Betriebssystem. Es ist zwar auch möglich sich mit telnet an
UNIX
anzumelden,
sollte
jedoch,
aufgrund
der
unverschlüsselten
Passwortübertragung, nicht genutzt werden.
Nun gibt es einige Punkte, die beim Einsatz von SQL – Plus beachtet werden sollten
und die gegen eine Verwendung sprechen. Ein erster Punkt ist, dass ein Client, der
sich mit der Datenbank verbindet evtl. nicht optimal gesichert ist. Angreifer könnten
versuchen über den ungeschützten Client und damit auch über SQL – Plus eine
Verbindung mit der Datenbank und u.U. auch dem Betriebssystem aufzubauen.
Nutzt ein Datenbankadministrator SQL – Plus und verbindet sich zuerst über SSH mit
UNIX, ist eine zweite Sicherheitslücke gegeben, da bei einer Verbindung mit SQL –
Plus, dieser von SQL – Plus angestoßene, laufende Prozess auf dem UNIX –
Betriebssystem angezeigt wird. Gibt nun ein Benutzer des UNIX – Betriebssystems
den Befehl „ps –ef | grep sqlplus“ ein, so sieht er den angemeldeten Benutzer
inklusive Passwort! Eine Möglichkeit dies zu verhindern ist, dass man SQL – Plus, aus
dem UNIX – Betriebssystem heraus, mit dem Befehl „echo password sqlplus –s user“
startet, was dazu führt, dass der laufende Prozess in UNIX nun nur noch mit dem
Parameter user angezeigt wird. Dies ist nicht desto trotz, eine Sicherheitslücke die
für Datenbankadministratoren gar nicht erst geöffnet werden sollte. Entwicklern und
sonstigen Datenbankbenutzern sollte ein Betriebssystemzugriff generell untersagt
werden.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 68 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Ein letzter Punkt der beim Umgang mit SQL – Plus zu beachten ist, ist, dass die
Startup – Dateien von SQL – Plus (login.sql und glogin.sql), ohne entsprechenden
Schutz auf dem Betriebssystem, so manipuliert werden können, dass dadurch die
Datenbank angegriffen und diese Angriffe sogar vereitelt werden können119. Neben
SQL – Plus können auch andere Programme, wie z.B. der SQL – Navigator und
TOAD120, über Startup – Dateien versteckte SQL – Befehle, während einem Login zur
Datenbank, absetzen.
Es gibt gewisse Standardports, die während der Kommunikation mit dem
Datenbanksystem verwendet werden und in den installierten Dateien des Systems,
bzw. während der Installation einer Netzwerkverbindung, schon vorbelegt sind. Diese
sind u.a. für den unverschlüsselten Datenverkehr Port – Nr. 1521 und für den
verschlüsselten Port – Nr. 2482. Diese sind zu untersuchen und zu ändern. Ein
Angreifer der diese Ports offen vorfindet, kann sich denken, dass sie zum Oracle –
DBS gehören und wird versuchen seinen direkten Datenbankzugriff hierüber zu
tätigen.
Beschreibungen zur gesamten Absicherung eines Netzwerkes können nicht behandelt
werden, da sie den Rahmen einer solchen Arbeit ums Weite sprengen und dem
Nutzen eines Netzwerkadministrators nicht gerecht werden.
5.7.2.
Datenbankbackup
Trotz noch so ausgereifter Sicherheitsmaßnahmen kann es dazu kommen, dass
Daten durch Benutzer- und Hardwarefehler oder durch Naturkatastrophen verloren
gehen. Weiterhin kann der Datenbestand durch Angriffe mutwillig entfernt oder
beschädigt werden. Auch wenn in den genannten Fällen der Übeltäter überführt und
ausfindig gemacht werden kann, bleibt die Tatsache bestehen, dass der letztmögliche
Datenbestand wieder in das Datenbanksystem eingespielt werden muss.
Um nun Datenbackups durchzuführen, bietet Oracle eine Menge von Möglichkeiten
an. Eine Variante die schon kurz aufgezeigt wurde, ist das Import- und
Exportverfahren
über
die
vergebenen
Rollen
IMP_FULL_DATABASE
und
EXP_FULL_DATABASE. Der Ex- und Import kann über den Oracle Enterprise Manager
erfolgen. Die daraus exportierten Daten enthalten allerdings nur die
Metainformationen der Datenbank. Also nicht das komplette Datenbanksystem. Diese
Variante wurde von Oracle dafür gedacht, dass Datenbankbenutzer ihre eigenen
Backups verwalten können. Seit Oracle 10g kann man für diese Backupmethode auch
die Oracle Data Pump benutzen, die im PL/SQL – Package DBMS_DATAPUMP, im
Schema SYS zu finden ist. Sie zeichnet sich, lt. Oracle, im Gegensatz zur
Verwendung der Ex- und Import – Verfahren über den Oracle Enterprise Manager,
durch bessere Performance aus121.
Eine weitere Methode zur Datenbanksicherung ist das Backup im Offline- und Online
– Modus. Im Offline – Modus geschieht die Datenbanksicherung, indem auf
Betriebssystemebene die kompletten Verzeichnisse der datenbankbezogenen
Dateien, in andere, beliebige Verzeichnisse kopiert werden. Im Online – Modus ist
der Vorgang gleich, jedoch werden hier die existierenden Tablespaces der Datenbank
zuerst in einen festen Zustand überführt, damit keine Inkonsistenz der Daten
119
120
121
Vgl. http://www.doag.org/pub/docs/sig/database/2005/03/absicher_admin_pc.pdf, 16.08.2008
Beide Programme werden vom Unternehmen Quest Software entwickelt.
Siehe http://www.questsoftware.de, 21.09.2008
Eine sehr gute Beschreibung zur Verwendung der Oracle Data Pump erhält man unter
http://www.ordix.de/ORDIXNews/2_2004/db_2.html, 16.08.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 69 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
entstehen kann. Dies geschieht auf Datenbankebene mit dem SQL – Statement:
ALTER TABLESPACE USERS BEGIN BACKUP;
Nach der Erstellung einer Sicherheitskopie auf dem Betriebssystem, wird der Befehl:
ALTER TABLESPACE USERS END BACKUP;
ausgeführt, damit die Tablespaces wieder normal benutzt werden können122.
Eine dritte und gerade in größeren Unternehmen bevorzugte Methode, ist die
Datenbanksicherung mittels Oracle Recovery Manager (RMAN). Dieser ist seit der
Oracle – Version 8i verfügbar und wird mit der Standard – Edition bzw. der
Enterprise – Edition installiert. Die Nutzung dieser Komponente ist nur dem
Datenbankadministrator bzw. dem Datenbankbenutzer mit der SYSDBA –
Berechtigung vorbehalten und über den Oracle Enterprise Manager ansteuerbar. Er
bietet, im Gegensatz zu den vorgenannten Methoden einige Vorteile. Einer ist z.B.,
dass die verschiedenen Sicherungen in einer Historie abgelegt werden, womit man
ältere Sicherungen wiederherstellen kann. Dadurch ist es auch möglich nur die Daten
zu sichern, die sich, basierend auf den Änderungen seit dem letzten Backup,
geändert haben. Ein weiterer Vorteil ist die Plattformunabhängigkeit. Sicherungen die
mit dieser Komponente initiiert wurden können auch auf anderen Betriebssystemen,
außerhalb eines UNIX – Betriebssystems, mit den gleichen, bereits erstellten
Backupmethoden, wieder durchgeführt werden. Als letzter Punkt ist leider nur die im
Rahmen der Oracle Advanced Securtiy und somit kostenpflichtig zur Verfügung
gestellte, integrierte Verschlüsselung des RMAN, zu erwähnen. Sie ist ein immenser
Vorteil und sorgt somit bereits während des Backups, für eine gewisse Sicherheit der
Daten. Andere, betriebssystemspezifische Dateien, wie z.B. die listener.ora, werden
bei dieser Methode jedoch nicht gesichert und müssen mit entsprechenden Befehlen
der Betriebssystemumgebung, separat geschützt werden123.
Backups der Datenbank sollten nur durchgeführt werden, wenn auf der Datenbank
am wenigsten gearbeitet wird. Dies ist, bei den meisten Organisationen bzw.
Unternehmen, in den frühen Morgenstunden. Aufgrund der Globalisierung kann diese
Aussage jedoch nicht verallgemeinert werden. Bevor ein Backup geplant und
durchgeführt wird, sollte der Datenverkehr also genauestens untersucht werden.
Eine Sicherung der Datenbank sollte natürlich täglich erfolgen, da es an jedem Tag
dazu kommen kann, dass eine Wiederherstellung der Daten notwendig wird. Die
Sicherung selbst bzw. die gesicherten Daten sollten auf einem physikalisch anderswo
abgelegten Speicher erfolgen, da durch Naturkatastrophen oder durch
Hardwarefehler und Festplattencrashs eine Sicherung auf dem gleichen Rechner nicht
viel hilft. In jedem Fall sollte die Sicherung maschinell erfolgen, damit manuelle
Fehler nicht dazu führen, dass eine Sicherung vergessen oder unvollständig
durchgeführt wird.
122
123
Weitere Informationen zur Sicherung im Online- und Offline – Modus unter:
[Bryla et al. 2007] Seite 425 f.
Umsetzungsmöglichkeiten mit RMAN findet man bei [Bryla et al. 2007] Seite 453 ff.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 70 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
5.7.3.
Abschließende Sicherungsmöglichkeiten
Während nun in vielen Abschnitten auf die Bereiche einer Oracle – Datenbank und
deren Absicherung eingegangen wurde, werden in diesem letzten separaten Punkt,
abschließende Maßnahmen, zur Sicherung eines Oracle – Datenbanksystems,
erläutert.
In der letzten Zeit wurden viele IT – Systeme mit so genannten Rootkits124
angegriffen. Diese gelten als eine neue Form der Malware und können neben
Betriebssystemen, auch Datenbanksysteme, wie Oracle, angreifen. Sie sind eine
Sammlung von Programmen, mit denen es dem Angreifer u.a. möglich ist, Login –
Daten von Datenbankbenutzern auszuspähen und die Prozesse, mit denen der
Angreifer die Angriffe verursacht, zu verstecken. Ziel dieser Attacken ist es, sensible
bzw. sicherungsbedürftige Informationen aus der Datenbank auszulesen.
Auf Datenbankebene versuchen Angreifer Rootkits auf der Datenbank einzuspielen,
indem sie sich, z.B. mit Standardbenutzern und deren standardmäßig vergebenen
Passwörtern einloggen (siehe Abschnitt 5-4-3). Eine beliebte Methode im Oracle –
Umfeld ist das Einspielen von gefährlichen Attacken über eine Startup – Datei von
SQL – Plus, der login.sql bzw. glogin.sql. Von daher ist es wichtig alle
Betriebssystemdateien, die mit der Datenbank in Verbindung stehen, regelmäßig
nach Veränderungen zu durchsuchen und diese entsprechend zu schützen. Da
Rootkits auch Code enthalten können, die die Prozesse, auf denen die Angriffe
verursacht werden, verbergen können, reicht es nicht aus, sich nur die
Betriebssystemprozesse anzuschauen, die mit der Datenbank verbunden sind. Es
müssen auch die Dateien auf Veränderungen untersucht werden. Auf
Datenbankebene sollte die Datenbank täglich auf Datenbankbenutzer hin überprüft
werden, die zu viele Berechtigungen enthalten (siehe Abschnitt 5-5-2).
Über die DATA DICTIONARY – View v$parameter können weitere Informationen, ob
Benutzer unberechtigten Zugriff auf das Datenbanksystem erhalten können,
gewonnen
werden.
Die
enthaltenen
Informationen
stammen
aus
den
Betriebssystemdateien, die das Datenbanksystem während der Initialisierung
verwendet. Die darin enthaltenen Parameter O7_DICTIONARY_ACCESSIBILTY,
REMOTE_OS_AUTHENT und REMOTE_OS_ROLES sollten dahingehend überprüft
werden, dass sie jeweils mit dem Wert FALSE versehen sind. Ist dies bei
O7_DICTIONARY_ACCESSIBILTY125 nicht der Fall, so kann ein Datenbankbenutzer,
mit der Berechtigung SELECT ANY TABLE, Informationen aus der DATA DICTIONARY
auslesen. Bei den Parametern REMOTE_OS_AUTHENT und REMOTE_OS_ROLES ist es
durch eine falsche Zuweisung möglich, dass externe Benutzer bei einem externen
Zugriff zur Datenbank, u.a. kein Kennwort angeben müssen126. Standardmäßig sind
Datenbankbenutzer als interne Benutzer angelegt. Sie können jedoch als externe
Benutzer angelegt werden, indem, während der Anlage eines Datenbankaccounts,
das Schlüsselwort EXTERNALLY angegeben wird.
Der Schutz der Redo – Log – Dateien darf in der Verwendung eines Oracle –
Datenbanksystems ebenfalls nicht vergessen werden. Diese Dateien enthalten im
Klartext, die auf der Datenbank zuvor verwendeten SQL – Befehle der
Datendefinitionsund
der
Datenmanipulationssprache.
Sie
werden
vom
124
125
126
Weiterführende, wichtige Informationen über Rootkits, erfährt man auf den folgenden Webseiten:
http://www.muniqsoft.de/unternehmen/Rootkits.pdf, 14.08.2008
http://www.red-database-security.com/wp/db_rootkits_dt.pdf, 15.07.2008
Seit der Oracle – Version 8i ist dieser Parameter bereits richtig gesetzt und muss nicht angepasst
werden.
Vgl. [Newman et al. 2004] Seite 597
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 71 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
Datenbanksystem dazu genutzt, im Falle eines Systemabsturzes der Datenbank, die
Datenbank wieder auf den aktuellen Stand zurückzufahren. Die Redo – Log – Dateien
werden
standardmäßig
im
Betriebssystemverzeichnis
der
jeweiligen
Datenbankinstanz gespeichert. Haben Angreifer nun Zugang zu diesen Dateien,
können sie diese Dateien mit einfachen Editoren auslesen und die darin enthaltenen
Informationen, für einen Angriff gegen die Datenbankinstanz, verwenden. Ebenfalls
können sie bereits getätigte Angriffe über diese Dateien vereiteln, indem sie die darin
enthaltenen und im Zuge ihres Angriffs erstellten Daten einfach ändern.
Weiterhin gibt es in großen Unternehmen i.d.R. viele Entwickler, die während ihrer
täglichen Arbeit, eine Menge von Programmen im Datenbanksystem ablegen. Da sich
während der Programmierung schnell Fehler einschleichen, die durch den
Programmierer nicht direkt erkannt werden und das Zusammenspiel von PL/SQL –
Packages, Prozeduren, Tabellen usw. nicht immer direkt funktioniert, ist ein
Hinzuziehen von Produktionsadministratoren, um Programme auf eine nächst höhere
Instanz zu promoten, oft mühselig. Weiterhin nimmt dies meist viel Zeit in Anspruch,
die ein Unternehmen nur selten hat. Um diese Hürde zu umgehen, kann eine
Testdatenbank für Programmierer eingesetzt und ihnen nach entsprechender
Berechtigungsvergabe für dieses Testsystem, die Möglichkeit gegeben werden,
Testszenarien
durchzuspielen.
Nach
erfolgtem
Test,
könnten
die
Produktionsadministratoren die fertigen Objekte oder auch SQL – Befehle auf einer in
der Systemarchitektur nächst höher gelegenen Datenbank einspielen. Hierfür ist aber
unbedingt darauf zu achten, die Produktionsdatenbank nicht zu clonen. Da sehr viele
Organisationen ihre Produktionsdatenbank clonen127 und diese als Testdatenbank
verwenden, muss ein potenzieller Angreifer nur die Zugangsdaten zur Testdatenbank
herausfinden und schon hat er Zugriff auf die Produktionsdatenbank.
Als letzte Maßnahme ist zu erwähnen, dass regelmäßig Sicherheits – Patches
eingespielt werden sollten um bestehende Sicherheitslücken zu schließen. Weiterhin
ist es hilfreich immer auf dem neuesten Stand zu bleiben, was Sicherheitslücken
angeht. Hierfür gibt es verschiedene Unternehmen und Homepages, die im Umgang
mit Oracle und Sicherheit spezialisiert sind.
Einige ausgewählte Homepages und Unternehmen im Umgang mit Oracle –
Sicherheit:
127
•
http://www.red-database-security.com
ist
die
Homepage
des
Unternehmens Red – Database – Security GmbH, das Spezialist in
allen Fragen rund um Oracle – Sicherheit ist. Auf der Homepage
werden viele kostenfreie Informationen sowie ein Blog – Bereich zu
diesem Thema bereitgestellt. 17.08.2008
•
http://www.praetoriate.com ist die Homepage von Donald K. Burleson.
Er ist Oracle – Consultant und spezialisiert auf das Thema Oracle –
Sicherheit. 17.08.2008
•
http://www.petefinnigan.com ist die offizielle Homepage von Pete
Finnigan, der Inhaber des Unternehmens petefinnigan.com Limited ist.
Auf der Homepage sind ebenfalls viele Informationen sowie ein Blog –
Bereich zu diesem Thema enthalten. 18.08.2008
Lt. Aussage von Hr. Alexander Kornbrust, Geschäftsführer des Unternehmens Red – Database –
Security.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 72 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 5: Erarbeitung eines Sicherheitsplans
•
http://www.muniqsoft.de gehört zum Unternehmen MuniQSoft GmbH.
Auf der angegebenen Homepage sind viele nützliche Hinweise zum
Thema Oracle und Sicherheit enthalten. 18.08.2008
Über die Homepage von Oracle besteht die Möglichkeit, Sicherheits – Patches und
Informationen zu dem verwendeten Datenbanksystem, herunter zuladen.
•
http://tahiti.oracle.com/ bietet Dokumentationen zu allen Oracle –
Versionen ab 8i. 20.09.2008
•
http://www.oracle.com/technology/deploy/security/alerts.htm
beinhaltet die Links zu sicherheitsrelevanten Updates in Bezug auf
Oracle – Datenbanksysteme. 20.09.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 73 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 6: Oracle 11g vs. MySQL 5.0.67
6.
Oracle 11g vs. MySQL 5.0.67
Auch wenn die Überschrift im ersten Moment etwas abschreckt, geht es in diesem
Abschnitt nur darum, die Sicherheitsmöglichkeiten der beiden Datenbanksysteme
Oracle und MySQL gegeneinander zu stellen und zu vergleichen. Hierbei werden die
Möglichkeiten in den derzeit aktuellen produktiven Versionen beschrieben.
Da bereits viele Sicherheitsaspekte in Oracle benannt wurden, werden in diesem
Abschnitt nur die Neuerungen der Version 11g vorgestellt. In Bezug auf MySQL
werden die aktuell eingesetzten Sicherungsmechanismen der produktiven Version
5.0.67 erläutert. Nach Gegenüberstellung der beiden Systeme, erfolgt eine
Bewertung der Absicherungsmöglichkeiten in einem Fazit.
6.1.
Neuerungen in Oracle 11g
Oracle 11g gilt in der derzeitigen Version als ein sehr sicheres System. Viele
Krankheiten im Sicherheitsbereich wurden bereits mit der Vorgängerversion Oracle
10g ausgemerzt. Natürlich gibt es immer noch eine Menge an Sicherheitslücken,
doch man kann festhalten, dass es schon tief greifender Kenntnisse bedarf um in die
aktuelle Datenbankversion einzudringen.
Oracle hat mit Erscheinen der Version 11g keine grundlegenden Sicherheitsfeatures
eingebaut. Viele Schwachstellen, die in Vorgängerversionen noch enthalten waren,
wurden ausgebessert und sind als kein direktes Sicherheitsnovum zu erkennen.
Einige der nachstehend genannten Neuerungen wurden sogar schon mit Oracle 10g
(Release 2) eingeführt, jedoch mit Erscheinen von 11g erweitert. Dokumentationen
zu den Neuerungen der aktuellen Version stehen auf der Oracle – Homepage128 zum
Download bereit. Die wichtigsten werden in den nachfolgenden Abschnitten kurz
erläutert.
6.1.1.
Der Umgang mit Kennwörtern
Gerade in Bezug auf den Umgang mit Passwörtern hat Oracle einiges verbessert.
Einige Neuerungen wurden im Verlauf dieser Arbeit schon mal angesprochen, werden
in diesem Abschnitt aber noch mal explizit erläutert.
In Abschnitt 5-4-3 wurden bereits die, während der Installation, von Oracle
angelegten Standardbenutzer genannt. Sie werden vom Datenbanksystem meist zur
Verwaltung einer zusätzlich installierten Komponente benötigt. Leider können einige
dieser Komponenten während der Installation nicht direkt ausgewählt werden. Sie
werden einfach, inkl. der dazugehörigen Datenbankbenutzer, mitinstalliert. Gerade
vor Version 10g erfuhren Administratoren des Datenbanksystems erst nach der
Installation von deren Existenz.
Um nun in 11g eine direkte Möglichkeit zu haben, diese Datenbankbenutzer
herauszufinden, hat Oracle, mit Erscheinung der neuen Version, eine View
128
http://download.oracle.com/docs/cd/B28359_01/network.111/b28531/toc.htm, 01.09.2008
http://www.oracle.com/technology/pub/articles/oracle-database-11g-top-features/11g-security.html,
03.09.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 74 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 6: Oracle 11g vs. MySQL 5.0.67
bereitgestellt, die es erlaubt, die Standardbenutzer denen auch ein Standardpasswort
vergeben wurde, mit einer einzigen SQL – Abfrage herauszufinden.
SELECT * FROM dba_users_with_defpwd;
Nach Ausführung dieses Befehls erhält man eine Ausgabe, die Datenbankaccounts
ausgibt, welche noch ihr, während der Installation erhaltenes Kennwort innehaben.
Da jeder andere Datenbankbenutzer, der die Berechtigung hat, die DATA
DICTIONARY zu lesen, diesen Befehl ebenfalls absetzen kann, sollten die
Administratoren
diese
Ausgabe
zum
Anlass
nehmen,
den
ermittelten
Datenbankbenutzern starke Kennwörter zu vergeben.
Ebenfalls mit Version 11g erschienen, ist ein weiteres Novum, das leider viel zu lange
auf sich warten ließ. Wie schon in Abschnitt 5-5-5 erwähnt, besteht nun die
Möglichkeit, Kennwörter in Groß- und Kleinschreibung festzulegen. Wird z.B. eine
Datenbank mit dem Database Creation Assistent erstellt, wird nachgefragt, ob die
„new security standards“ genutzt werden sollen. Bejaht man dies, so müssen die
Benutzer der Datenbank, ab sofort ihre Kennwörter in der richtigen Groß- bzw.
Kleinschreibung angeben. Wird eine gewisse Zeit benötigt um dies den Usern der
Datenbank plausibel darzustellen, so kann die alte Kennwortvergabe mit
nachfolgendem Statement wieder aktiviert werden:
ALTER SYSTEM SET sec_case_sensitive_logon = FALSE;
Das gleiche gilt natürlich auch im umgekehrten Fall, indem der Parameter
sec_case_sensitive_logon wieder auf TRUE gesetzt wird. Welche Kennwortmethode
verwendet wird, ist nun in der View dba_users und dem, seit 11g enthaltenen,
zusätzlichen Feld password_versions zu erkennen.
Aus Erfahrungswerten des Unternehmens Red – Database – Security, muss jedoch
festgehalten werden, dass bei einer solchen Umstellung auch die Datenbankbenutzer
selbst mitwirken müssen, damit dies eine Verbesserung in der Qualität der
verwendeten Kennwörter darstellt. Denn leider ist es oft so, dass die User nun,
anstatt eines großgeschriebenen Wortes, entweder ein kleingeschriebenes Wort
benutzen oder aber nur den ersten Buchstaben groß schreiben und die restlichen
klein.
Eine weitere Veränderung ist darin zu erkennen, dass nun die Kennwörter der
jeweiligen Datenbankbenutzer nicht mehr in der View dba_users angezeigt werden.
In der Spalte password, stand vor dieser Datenbankversion, immer der Hash – Wert
des jeweiligen Kennworts bzw. Datenbankaccounts. Nun ist hier nur noch ein NULL –
Wert zugegen und der eigentliche Hash – Wert ist nur in der Tabelle user$ des
Schemas SYS zu finden.
Als letztes neues Feature, in Bezug auf Kennwörter, ist die von Oracle mitgelieferte
Funktion verify_function_11g zu erwähnen. Wie bereits in Abschnitt 5-5-4 erläutert,
können mit Hilfe dieser Funktion, Passwortkonventionen festgelegt werden, die
während einer Passwortvergabe durch den Datenbankbenutzer, angewendet werden.
Der Name verify_function_11g wird im bereits bestehenden DEFAULT – Profil, als
Wert für den Parameter PASSWORD_VERIFY_FUNCTION festgelegt. Die Funktion
selbst, wird nach Ausführung des SQL – Skripts utlpwdmg.sql, das sich im
Betriebssystemverzeichnis $ORACLE_HOME/rdbms/admin befindet, kreiert. Diese
Funktion
sollte
den
eigenen
Bedürfnissen
angepasst
werden,
da
die
Standardeinstellungen für ein Datenbanksystem, das eine starke Sicherung benötigt,
nicht ausreichen.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 75 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 6: Oracle 11g vs. MySQL 5.0.67
6.1.2.
Verbessertes Auditing
Eine Neuerung, die vielleicht nicht unbedingt als Verbesserung angesehen werden
kann, ist, dass das Berechtigungs – Auditing bereits nach Installation eingeschaltet
ist. Hierzu ist der AUDIT_TRAIL – Parameter in der Datei init.ora bereits mit dem
Wert ON belegt. Daraus resultiert die Tatsache, dass die Datenbank nicht erst
komplett gestoppt werden muss, um das Auditinig zu aktivieren. D.h. man spart ein
stoppen und starten der jeweiligen Datenbank. Die Protokollierung erfolgt mit dieser
Einstellung in der Tabelle aud$ des Schemas SYS.
Eine weitere Neuerung ist, dass die Protokollierung von Systemberechtigungen
nunmehr um einiges performanter sein soll. Oracle möchte hier wohl die
Hemmschwelle herabsetzen, das Auditing einzusetzen. Weiterhin wurde von Oracle –
erkannt, dass es nicht nur darum geht, das Verhalten der Datenbankbenutzer im
Umgang mit Daten zu dokumentieren sondern, aufgrund von vermehrt
auftauchenden Fällen, auch das Verhalten von Angreifern die versuchen,
Systemberechtigungen zu erlangen und diese für ihre Zwecke auszunutzen.
6.1.3.
Verschlüsselung des Tablespace
Für den Tablespace der Datenbank, der u.a. dazu dient die Daten, die im
Datenbanksystem abgelegt sind, zu speichern, ist es seit der Version 11g möglich,
diesen zu verschlüsseln. Dies hat den Vorteil, dass es z.B. für Angreifer, die zwar auf
das Betriebssystem aber nicht auf das Datenbanksystem zugreifen können,
schwieriger wird, Daten aus den Tablespaces auszulesen.
Diese Methode ermöglicht die Verschlüsselung einzelner Tablespaces, die sensible
Daten enthalten. Hierzu muss zuerst ein so genannter Wallet kreiert werden, der den
Schlüssel bzw. das Kennwort enthält, um an die verschlüsselten Daten zu gelangen.
Die Verschlüsselung selbst, erfolgt entweder über den Verschlüsselungsalgorithmus
Advanced Encryption Standard (AES) oder aber über den Data Encryption Standard
(DES), welcher in dem SQL – Befehl, während der Erstellung des Tablespace,
angegeben werden kann. Da AES der Nachfolger von DES und sicherer ist, sollte
jedoch dieser gewählt werden129.
Was jedoch bei der Verschlüsselungsmethode von Tablespaces beachtet werden
sollte, ist die Tatsache, dass sich die Verschlüsselung nicht mehr rückgängig machen
lässt. Dies wird zwar von Oracle nicht direkt vermarktet, ist aber für eine später evtl.
notwendige Rücksicherung von entscheidender Bedeutung. Weiterhin wird dieses
Feature nur mit der teuren Oracle Advanced Security verkauft.
6.1.4.
Verschlüsselung von Betriebssystemdateien
Es war bereits seit langem ein großer Schwachpunkt von Oracle, dass mit nur
wenigen Handgriffen gesicherte Dateien, die z.B. aus einer Backupmethode
entsprangen, gelesen werden konnten. Sobald der Angreifer über bestimmte, frei
zugängliche Software verfügte und dabei noch auf die entsprechenden Verzeichnisse
bzw. Dateien des Betriebssystems zugreifen konnte, war es relativ schnell möglich
129
Eine genaue Beschreibung zur Erstellung von verschlüsselten Tablespaces erhält man auf
nachfolgender Homepage:
http://www.oracle-base.com/articles/11g/TablespaceEncryption_11gR1.php, 05.09.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 76 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 6: Oracle 11g vs. MySQL 5.0.67
die gesicherten Daten auszulesen.
In Abschnitt 5-7-2 wurde bereits auf Datenbankbackups eingegangen. Darin wurde
u.a. auch die Datenbanksicherung mit der Komponente Oracle Data Pump
beschrieben, welche die gesicherten Dateien ebenfalls auf dem Betriebssystem
speichert.
Da
mit
dem
Oracle
Recovery
Manager
verschlüsselte
Datenbanksicherungen angelegt werden können, bezieht sich die Neuerung in Oracle
11g nur auf die Backupmethode Oracle Data Pump. Denn nun ist es auch mit dieser
Komponente möglich, Datenbanksicherungen zu verschlüsseln. Hierbei wird, genau
wie bei der Verschlüsselung der Tablespaces, zuerst ein Wallet, mit einem
entsprechenden Kennwort angelegt. Danach wird auf Betriebssystemebene die
Komponente Oracle Data Pump, mit entsprechenden Parametern zur verschlüsselten
Sicherung des jeweiligen Datenbestandes, gestartet130.
Neben der Verschlüsselung von Backupdateien gelingt es nun auch die, unter
Abschnitt 5-7-3 erwähnten, Redo – Log – Dateien zu verschlüsseln. Die auf dem
Betriebssystem abgespeicherten Dateien, die SQL – Befehle als Klartext enthalten,
galten ebenfalls seit langer Zeit als Schwachpunkt des Datenbanksystems. Der
einzige aber teure Wehrmutstopfen besteht in der Oracle Advanced Security, die
auch hier als Option erst teuer dazugekauft werden muss.
6.2.
Sicherheitsmöglichkeiten in MySQL 5.0.67
MySQL ist ein sehr junges relationales Datenbanksystem. Erst mit Veröffentlichung
der Version 5, sind Neuerungen enthalten, die es als richtiges RDBMS erkennen
lassen. U.a. wird mittlerweile von MySQL auch der Einsatz von Triggern, Views und
Stored – Procedures unterstützt.
Vom Sicherheitsaspekt her, gibt es in der aktuell produktiven Version wesentliche
Verbesserungen. Gerade vor dieser Version galt MySQL als ein sehr unsicheres
System. Grundsätzlich erfüllt MySQL schon viele Anforderungen an Sicherheit.
Obwohl viele Unternehmen bzw. große Organisationen dieses Datenbanksystem
vorerst wohl eher nicht als Datenhaltung für sensible Daten nutzen werden und es
für das Unternehmen MySQL AB noch einiges zutun gibt, werden nachfolgend die
derzeitigen Möglichkeiten aufgezeigt, die MySQL an Sicherheitsoptionen bietet.
6.2.1.
Absicherung mit dem Shellskript mysql_secure_installation
Das Shellskript mysql_secure_installation wird dann benötigt, wenn MySQL frisch auf
einem UNIX – Betriebssystem installiert wurde. Denn direkt nach Installation der
Version 5.0.67, die mit Ausführung des Shellskripts mysql_install_db erfolgt, treten
drei Nebeneffekte auf, die mit diesem Skript geschlossen werden können.
Zuerst wird während der Installation des Datenbanksystems ein Datenbankbenutzer
angelegt, der für die Administration der Datenbank verantwortlich ist. Dieser hat den
Namen root, verfügt zwar über kein Kennwort, besitzt jedoch schon alle möglichen
Berechtigungen. Mit Ausführung dieses Shellskripts wird nun gefragt, ob dieser
Benutzer mit einem neuen Passwort abgesichert werden sollte. Die Passwortvergabe
ist dabei so zu wählen, dass sie den bereits mehrfach erwähnten
130
Eine Beschreibung zur Verschlüsselung von Sicherungsdateien findet man unter:
http://www.ordix.de/ORDIXNews/1_2006/TDE.html, 06.09.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 77 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 6: Oracle 11g vs. MySQL 5.0.67
Passwortkonventionen entspricht.
Während der Installation wird ebenfalls eine Testdatenbank angelegt. Diese ist dazu
gedacht, um das MySQL – Datenbanksystem besser kennen zu lernen. Da die
Testdatenbank auch für Angriffe aus dem inneren des Datenbanksystems genutzt
werden kann, z.B. für SQL – Injections, sollte diese gelöscht werden, was durch
Ausführung des benannten Skripts angeboten wird.
Zuletzt wird während der Installation ein Benutzer anonymous erstellt. Dieser ist
dazu gedacht, um von einem MySQL – Client auf den MySQL – Server, d.h. die
Datenbank zuzugreifen. Auch dieser Datenbankuser besitzt, wie der Benutzer root,
alle Berechtigungen und verfügt über kein vergebenes Passwort. Dies führt dazu,
dass auch über dieses Konto in die Datenbank eingedrungen und immenser Schaden
angerichtet werden kann. Die Löschung dieses Datenbankbenutzers wird während
der Ausführung des Shellskripts ebenfalls angeboten131.
6.2.2.
Optionen zum Starten des MySQL – Server mysqld
Mysqld ist der MySQL – Server des Datenbanksystems MySQL. Das Programm
mysqld kann mit verschiedenen Parametern gestartet werden. Diese Parameter
legen u.a. fest, welche SQL – Syntax verwendet wird oder aber in welchem
Verzeichnis
die
Datendateien
abgelegt
werden.
Weiterhin
können
sicherheitsspezifische Regeln angewendet werden132. Nachfolgende Tabelle gibt einen
Überblick über die, im Bezug auf Sicherheit zu setzenden Parameter:
Parameter
Erläuterung
--local-infile=0
Dies ist die Deaktivierung des SQL – Befehls "LOAD
LOCAL DATA". Wie der Name schon sagt, hat ein MySQL
– Benutzer, ohne Deaktivierung dieses Befehls, die
Möglichkeit lokale Dateien des Betriebssystems bzw. des
Datenbanksystems zu lesen. Ein MySQL – Benutzer
könnte beliebige Dateien lesen, auf die der
Datenbankserver zugreift. Da dies normalerweise nicht
gewünscht ist und nur der Datenbankadministrator diese
Daten lesen sollte, wird dieser Parameter gesetzt.
--safe-user-create
Anhand dieses Parameters kann ein Benutzer nur dann
neue Benutzer mit dem SQL – Statement GRANT
anlegen, wenn er auch die INSERT – Berechtigung für die
Tabelle user des Schemas MYSQL hat. Wenn also
131
132
Weitere Informationen zum Skript mysql_secure_installation findet man unter:
http://dev.mysql.com/doc/refman/5.1/en/mysql-secure-installation.html, 09.09.2008
Eine Auswahl von möglichen Parametern zum Starten des MySQL – Server unter:
http://dev.mysql.com/doc/refman/5.1/de/server-options.html, 08.09.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 78 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 6: Oracle 11g vs. MySQL 5.0.67
versehentlich einem User eine Berechtigung erteilt
wurde, die es ihm erlaubt Datenbankbenutzer anzulegen,
so kann er diese erst anlegen, wenn er auch die
Berechtigung hat, einen INSERT auf die genannte Tabelle
auszuführen.
--secure-auth
Vor der MySQL – Version 4.1 wurden die Passwörter der
Datenbankaccounts in der Tabelle user, als 16 Zeichen
langer Hash – Wert abgelegt. Seit Version 4.1 jedoch
erfolgt ein Hashing – Algorithmus, der Passwörter in der
Tabelle user, mit 41 Zeichen anlegt.
Das Setzen dieses Parameters besagt nun, dass die Hash
– Werte von Datenbankusern nur noch mit dem neuen
Hashing – Algorithmus vergeben werden und somit ein
Hash – Wert in einer Länge von 41 Zeichen in der Spalte
password, der entsprechenden Tabelle abgelegt werden.
--bind-adress=ip_adress
Ein Client kann sich mit dem Datenbankserver entweder
über TCP / IP oder über Sockets verbinden. Soll sich nur
ein bestimmter Rechner mit dem Datenbankserver
verbinden, so kann mit diesem Parameter die IP –
Adresse dieses Rechners angegeben werden.
Es besteht jedoch keine Möglichkeit, weitere IP –
Adressen zuzulassen.
--skip-networking
Sollte hingegen erreicht werden, dass mit dem
Datenbankserver nur über UNIX – Sockets und nicht
über TCP / IP – Verbindungen kommuniziert werden
kann, so muss diese Option angegeben werden.
Tabelle 6-1 Parameter zum sicheren Starten des MySQL – Servers (Quelle: MySQL OnlineReferenzhandbuch - http://dev.mysql.com/doc/refman/5.1/de/privileges-options.html, 08.09.2008)
Der Aufruf des MySQL – Servers könnte nun folgendermaßen aussehen:
mysqld
--local-infile=0
--safe-user-create
--secure-auth
--bind-adress=127.0.0.1
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 79 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 6: Oracle 11g vs. MySQL 5.0.67
In der Auslieferung von MySQL ist weiterhin ein Skript enthalten, das unter UNIX
zum Start des MySQL – Servers verwendet werden kann. In dem Skript
mysqld_safe133 ist u.a. eine Option enthalten, die die Protokollierung von
Netzwerkfehlern und Laufzeitinformationen erlaubt. Weiterhin kann das Skript mit
den eben beschriebenen Parametern, zum Starten des Datenbankservers, bestückt
werden.
6.2.3.
Sichere Anlage von Datenbankbenutzern
Im Gegensatz zu Oracle, ist es in MySQL nicht möglich, Benutzern direkt zu Beginn
irgendwelche Rollen, wie z.B. die Oracle – Rolle RESOURCE, zuzuweisen. Dies hat
Vorteile, als auch Nachteile. Ein Vorteil ist sicherlich zu darin sehen, dass neuen
Datenbankbenutzern nur die Berechtigungen erteilt werden, die auch wirklich
notwendig sind, da sie manuell und explizit vergeben werden müssen. Nachteile
bestehen jedoch darin, dass bei einer größeren Menge von Datenbankbenutzern wohl
ein hoher Zeitaufwand damit verbracht werden muss, die Benutzer, mit den für sie
notwendigen Berechtigungen, zu bestücken.
Weiterhin besteht in MySQL, im Gegensatz zu Oracle, nicht die Möglichkeit
Datenbankbenutzern bestimmte Profile zuzuweisen. Eine Möglichkeit bestimmte
Passwortkonventionen einzusetzen existiert nicht und Begrenzungen von
Benutzerressourcen müssen bei MySQL, während der Anlage von neuen Benutzern,
jeweils explizit angegeben werden. Einerseits wieder vorteilhaft, andererseits kann es
u.a. dazu führen, dass Datenbankadministratoren zu lange mit der Anlage von
Benutzern beschäftigt sind.
Nachdem ein neuer Datenbankuser erstellt wurde, könnte eine Berechtigungsvergabe
für einen neuen MySQL – Benutzer folgendermaßen aussehen:
GRANT SELECT, INSERT, UPDATE
ON personal.personal_table_1
TO ’v_personal_user’@127.0.0.1
IDENTIFIED BY v_password
WITH MAX_QUERIES_PER_HOUR 30
MAX_UPDATES_PER_HOUR 20
MAX_CONNECTIONS_PER_HOUR 10
MAX_USER_CONNECTIONS 1;
Im vorigen Beispiel ist angegeben, dass der User v_personal_user innerhalb einer
Stunde maximal 30 Abfragen und 20 Updates auf die Tabelle personal_table_1
ausführen kann. Weiterhin darf er sich innerhalb einer Stunde maximal zehnmal
anmelden und darf weiterhin höchstens eine Verbindung zur Datenbank halten134.
Diese Angaben können natürlich den eigenen Gegebenheiten angepasst werden.
133
134
Weitere Informationen zum Skript mysqld_safe in der MySQL – Referenz unter:
http://dev.mysql.com/doc/refman/5.1/de/mysqld-safe.html, 09.09.2008
Weitere Hinweise zur Begrenzung von Benutzerressourcen unter MySQL findet man unter:
http://dev.mysql.com/doc/refman/5.1/de/user-resources.html, 09.09.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 80 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 6: Oracle 11g vs. MySQL 5.0.67
6.2.4.
Anpassungen der Datei my.cnf
MySQL verwendet zur Konfiguration des Datenbankservers die Datei my.cnf. Hierin
werden Optionen bzw. Parameter angegeben, die auf den MySQL – Server
angewendet werden.
Darin werden z.B. die UNIX – Sockets festgelegt, über die der Datenbankserver
kommuniziert. Weiterhin befindet sich hier die Angabe des Ports, über den der
Server mit der Außenwelt in Erscheinung tritt. Dieser ist standardmäßig auf 3306
gestellt, sollte jedoch, da dieser Port Angreifern als Standardport bekannt ist,
geändert werden.
Weiterhin, ist hierin die maximal mögliche Anzahl von Verbindungen, die gleichzeitig
mit der Datenbank geführt werden können, anzugeben. Der von MySQL zur
Verfügung gestellte und hierfür zuständige Parameter max_connections kann je nach
Verwendungszweck entsprechend gesetzt werden.
Ebenfalls wird in dieser Datei der Betriebssystembenutzer angegeben, mit dem der
Datenbankserver gestartet wird. Dieser ist standardmäßig als mysql festgelegt.
Dieser kann und sollte jedoch durch einen Benutzer mit einem anderen Namen
ersetzt werden135.
6.2.5.
Eine abgesicherte Verbindung zur Datenbank
Seit der Version 5 existiert in MySQL ein Übertragungsverfahren, welches die
Kennwörter der Datenbankbenutzer, verschlüsselt zur Anmeldung beim MySQL –
Server überträgt. Vor dieser Version gab es in MySQL keine verschlüsselte
Übertragung von Passwörtern.
Alle weiteren Daten, die zur Datenbank übertragen werden, erfolgen standardmäßig
unverschlüsselt. Um eine sichere Übertragung zu gewährleisten, muss ein
Verschlüsselungsverfahren bzw. ein entsprechendes Netzwerkprotokoll gewählt
werden. MySQL bietet hierbei eine Unterstützung für die Protokolle Secure Socket
Layer (SSL) und die Secure Shell (SSH) an.
Bei
der
Verwendung
von
SSL
besteht,
neben
einer
verschlüsselten
Datenübertragung, weiterhin die Möglichkeit eine Authentifizierung durchzuführen.
SSL kann so konfiguriert werden, dass entweder nur der Server oder aber der Client
und der Server sich authentifizieren müssen. Der Einsatz eines SSL – Verfahrens
erfordert zwar einigen Aufwand, dient aber erheblich der Sicherheit des
Datenbanksystems.
6.3.
Fazit
MySQL bietet erstmals seit Version 5 ein stabiles und abgesichertes
Datenbanksystem an. In vorigen Versionen hörte man zu oft von irgendwelchen
Schwächen, was Performance, Sicherheit und nicht zuletzt Stabilität angeht.
Ein positiver Aspekt ist u.a. die Vermarktung als Open – Source – Produkt. Dies hat
wohl hauptsächlich dazu beigetragen, dass MySQL im Markt der Datenbanksysteme
135
Weitere Informationen zur Konfiguration der Datei my.cnf unter:
http://dev.mysql.com/doc/refman/5.1/de/option-files.html, 09.09.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 81 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 6: Oracle 11g vs. MySQL 5.0.67
Fuß fassen konnte. Die Datenbankentwickler kommen also nicht nur von dem
Unternehmen MySQL AB, sondern von der ganzen Welt. Dies hat weiterhin den
Vorteil, dass viele der erkannten Fehler sehr schnell gefixt und in das
Datenbanksystem eingespielt werden können. Kostenlose Updates und Patches sind
dadurch schnell verfügbar136 und können relativ einfach eingespielt werden. Eine
Enterprise – Version für Unternehmen kann weiterhin für einen, im Datenbankmarkt
günstigen Preis, erworben werden. Für knapp 600 US – Dollar kann diese Version
gekauft werden, was weiterhin bedeutet, dass darin ein kompletter Support von
MySQL AB enthalten ist. Oracle hingegen, lässt sich seine Arbeit richtig gut bezahlen.
Allein die Verwendung der Oracle Advanced Security kostet für einen Prozessor ca.
10.000 US – Dollar.
Was auch nicht verachtet werden sollte, ist die Tatsache, dass MySQL in der
aktuellen Version schon viele Optionen sowie sicherheitsrelevante Eigenschaften
bietet. Jedoch muss auch festgehalten werden, dass der aktuellen MySQL – Version
noch viele simple aber dennoch sehr wichtige Eigenschaften fehlen. Leider gibt es
innerhalb des Datenbanksystems, außer einem gezielten Einsatz von Triggern auf die
Tabelle user, keine Möglichkeit zum Auditing, d.h. zur gezielten Protokollierung von
Datenbankereignissen. Oracle bietet dagegen unzählige Möglichkeiten, jegliche
Ereignisse, die mit der Datenbank in Verbindung stehen, zu dokumentieren.
Eine einfache Möglichkeit zur Administration von MySQL unter UNIX fehlt ebenfalls.
Hier wird dann gerne das Tool phpMyAdmin genannt. Doch in diesem Tool wurden
immer wieder schwerwiegende Sicherheitslücken entdeckt, was nicht gerade für
deren Verwendung spricht. Datenbankadministratoren sollten also immer auf
Zeilenebene arbeiten, was auf Dauer sehr viel Zeit kosten kann und damit zu Lasten
der eigentlichen Datenbankadministration geht. Oracle kann hier aufgrund der
Unterstützung von Drittanbietern und z.B. dem eigenen Oracle Enterprise Manager
einige Vorteile aufweisen.
Die Möglichkeit zur Verwendung von Benutzerressourcen könnte in MySQL ebenfalls
komplexer sein. Hier bietet das DEFAULT – Profil von Oracle schon viele Optionen,
die die Datenbankbenutzer zu einem, mehr oder weniger, sicheren Umgang mit dem
Datenbanksystem zwingen. Definierbare Rollen, wären für einen sicheren Umgang
mit Tabellen und deren Datenbankbenutzern, ebenfalls wünschenswert.
Fehlende Optionen und Eigenschaften können natürlich auch als ein positiver
Umstand gewertet werden. Dieses Datenbanksystem ist sehr schlank, was den
sicheren Umgang sicherlich erleichtert, da nicht viele, zusätzliche Schwachstellen
entstehen können.
Auch wird MySQL in der derzeitigen Version als sehr performant bezeichnet, was
hingegen bezweifelt werden darf. Während den Recherchen wurde festgestellt, dass
Performance sehr unterschiedliche Aussagen hervorruft. Einige bezeichnen einen
schnellen Umgang mit Datenbanktabellen, die 100.000 Einträge haben, als
performant. Bei anderen muss ein Datenbanksystem 100.000.000 und mehr
Einträge, einer einzelnen Tabelle, handeln können, was Oracle durchaus bietet.
Als Fazit sollte man doch festhalten, dass es ganz auf den Verwendungszweck
ankommt, wofür eine Datenbank benötigt wird. MySQL hat mit der Version 5 schon
einen wichtigen Schritt in die richtige Richtung getan. Jedoch erscheint es, gerade
sicherheitspolitisch, noch etwas wie ein Prototyp, der in der Versuchsphase steckt.
Oracle hingegen verfügt über 30 Jahre Erfahrung in der Datenbankentwicklung, was
sich auch in der immensen Verbreitung dieses Systems widerspiegelt.
136
Downloads in Bezug auf MySQL finden sich auf der MySQL – Homepage unter:
http://dev.mysql.com/downloads/mysql/5.0.html, 10.09.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 82 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 6: Oracle 11g vs. MySQL 5.0.67
Sicherheitstechnisch gesehen, hat Oracle viel mehr Möglichkeiten, Daten zu
verschlüsseln, bzw. sensible Daten sicher zu schützen. Weiterhin ist die Arbeit der
Datenbankadministratoren
und
der
Datenbankbenutzer
entweder
durch
entsprechende Tools oder auch durch die Verwendung von Optionen, wie z.B. Rollen,
besser zu kontrollieren und damit auch sicherer.
Wird ein einfacher Webshop betrieben, wird eine Datenhaltung für ein
mittelständiges Unternehmen oder ein einfaches Content – Management – System
benötigt, so kann MySQL ohne weiteres genutzt werden, da mittlerweile ja auch
schon sichere Netzwerkprotokolle wie SSL unterstützt werden. Bei größeren Shops
wie z.B. dem Unternehmen Amazon, könnte die Verwendung allerdings schon
schwieriger werden, da hier ein sicheres, performantes, stabiles und nicht zuletzt
wartbares Datenbanksystem benötigt wird, was Millionen von sensiblen Daten
beinhaltet. Das Oracle diese Eigenschaften erfüllt muss nicht weiter erwähnt werden
und bedarf auch keiner eingehenden Prüfung, da dies klar wird, wenn man die
Verwendung bei großen Unternehmen wie der BMW AG oder IKEA betrachtet.
In der Zukunft, wenn MySQL weiter ausgebaut und stetig verbessert wurde, kann
dieses Datenbanksystem sicherlich in Betracht gezogen werden. Doch zum jetzigen
Zeitpunkt, wird es wohl keine Konkurrenz, zu einem der großen Datenbanksysteme
wie Oracle darstellen.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 83 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 7: Penetrationstest
7.
Penetrationstest
Ein gesichertes Datenbanksystem ist der beste Schutz vor Angreifern. Viele Angreifer
benutzen vorgefertigte Software, die sie aus dem Internet herunterladen, beliebige
Parameter eintragen und damit versuchen das IT – System bzw. Datenbanksystem
anzugreifen. Merken diese, dass der Angriff, aufgrund eines halbwegs gesicherten
Systems fehlschlägt, geben viele auch schon wieder auf und suchen sich ein anderes
Opfer bzw. ein anderes Ziel. Es gibt natürlich auch die Sorte von Angreifern, die sich
gezielt das bestimmte Datenbanksystem heraussuchen um Daten auszuspionieren
oder aber um das System auf irgendeine Art lahm zu legen. Nun, so wie jede
Software ihre Lücken hat, hat auch jedes ausgeklügelte Sicherheitssystem seine
Lücken. Irgendein Schlupfloch wird es immer geben. Letztlich wird es hauptsächlich
darauf ankommen allgemeine und bekannte Sicherheitslücken zu stopfen. Denn
wenn diese gestopft sind, bedarf es meist mehr als nur ein wenig Hintergrundwissen
und einen großen Zeitaufwand um in das gewünschte System einzudringen.
Die Erkenntnisse, die während der Erarbeitung dieser Diplomarbeit, im Rahmen der
Oracle – Sicherheit, gewonnen wurden, werden nun zum Teil dazu genutzt um ein
bestehendes Datenbanksystem auf seine Schwachstellen und Sicherheitslücken zu
testen. Hierbei wird die Oracle – Datenbank des Campus Gummersbach,
oras1.gm.fh-koeln.de, mit verschiedenen Bedrohungen konfrontiert. Die Datenbank
ist hauptsächlich für Übungszwecke von Studenten gedacht. In diesem
Zusammenhang, ist es sehr spannend herauszufinden, ob diese Datenbank vor
gewöhnlichen Attacken, z.B. von frustrierten Studenten bzw. Studentinnen,
geschützt ist. Hierzu werden verschiedene Mittel eingesetzt. Zuerst wird untersucht
ob die typischen, von Oracle verwendeten Ports offen stehen. Weiterhin wird die
Datenbank mit der Software Checkpwd des Unternehmens Red – Database –
Security und weiterführenden Maßnahmen auf typische Oracle – Schwachstellen hin
untersucht. Sind Schwachstellen zu erkennen, die ein Eindringen in das System
ermöglichen, so wird ebenfalls versucht, Berechtigungen zu erlangen, die denen
eines Administrators ähneln. In einem anschließenden Fazit wird die Sicherheit des
Datenbanksystems entsprechend bewährtet.
7.1.
Port – Scan
Kommuniziert ein IT – System mit seiner Umgebung erfolgt diese Kommunikation via
Ports. Zu Beginn des Penetrationstests wurde ein Port – Scan auf das bekannte
Datenbanksystem durchgeführt. Bei einem solchen Scan werden die einzelnen Ports,
die ein Rechner zur Verfügung stellt, untersucht und auf Zugänglichkeit geprüft. Ist
dem System eine Firewall vorgeschaltet, sind viele Ports geschlossen um es einem
Angreifer möglichst schwer zu machen in ein System einzudringen.
Um zu erkennen welche Ports offen sind, wurde die Software NMap bzw. Network
Mapper genutzt. Es handelt sich um ein Open – Source – Produkt, das auf der
Homepage http://nmap.org, kostenlos zum Download zur Verfügung steht. Es ist
eine sehr bekannte Software, die von vielen Netzwerkadministratoren bzw.
Penetrationstestern, zur Untersuchung einer Firewall bzw. eines Rechners, genutzt
wird.
Der Test wurde am 19.08.2008 um 22.30 Uhr gestartet und lieferte die Resultate,
die in Abbildung 7-1 und Abbildung 7-2 angezeigt sind.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 84 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 7: Penetrationstest
Abbildung 7-1: Port – Scan Ausgabe der Software NMap (Quelle: selbst erstellt)
Anhand der angezeigten Ergebnisse ist zu erkennen, welche Ports für die Außenwelt
geöffnet sind. Ebenfalls lässt das Programm erkennen welche Komponenten durch
die jeweiligen Ports angesteuert werden.
Auf den ersten Blick macht die Ausgabe in Abbildung 7-1 einen sehr sicheren
Eindruck, da nur wenige Ports über das Internet verfügbar sind bzw. waren.
Betrachtet man jedoch Abbildung 7-2, sind auf Anhieb einige Lücken zu erkennen.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 85 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 7: Penetrationstest
Abbildung 7-2: Port – Scan Ausgabe inkl. Zusatzinformationen der Software NMap (Quelle: selbst erstellt)
In einer erweiterten Ausgabe sind neben den offenen Ports, detaillierte Anmerkungen
zu den etwaigen Komponenten zu erkennen. Neben der Ausgabe des Ports 8080 ist
z.B. ein
Hinweis zum verwendeten
Oracle –
System inkl. genauer
Versionsbeschreibung zu erkennen. Anhand dieser Information kann sich ein
Angreifer in aller Ruhe auf die Suche nach möglichen Angriffsmethoden machen.
Weiterhin zeigt die Ausgabe, dass hinter Port 1521 der Listener von Oracle zu finden
ist137.
Nach dem Port – Scan kann als Ergebnis festgehalten werden, dass neben der gut
geschützten Firewall auch einige Schwachstellen zu erkennen waren. Zum einen,
wird zum Zeitpunkt des Tests, der von Oracle verwendete Standardport 1521 zur
Verbindung mit dem Internet genutzt. Dies ist die erste Anlaufstation für Angreifer,
wenn sie versuchen in ein Oracle – Datenbanksystem einzudringen. Als zweite
Schwachstelle ist, wie bereits erwähnt, zu erkennen, dass die Datenbankversion vom
Internet ausgelesen werden kann. Angreifer können nun mit speziellen Angriffen, für
diese Oracle – Version, die Datenbank hacken.
137
Eine Liste mit von Oracle standardmäßig verwendeten Ports findet man unter:
http://www.red-database-security.com/whitepaper/oracle_default_ports.html, 28.08.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 86 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 7: Penetrationstest
7.2.
Angriff über Checkpwd
In diesem Abschnitt wird der erste Angriffsversuch auf das bekannte
Datenbanksystem erläutert. Dieser Angriff wurde mit dem von Red – Database –
Security zur Verfügung gestellten Tool Checkpwd (Version 1.21), am 21.08.2008
durchgeführt.
Der Angriff der durch das Programm erzeugt wird, besteht darin, dass die View
dba_users mit den darin enthaltenen Usernamen und den dazugehörigen
Passwörtern bzw. Hash – Werten ausgelesen und u.a. mit einer Textdatei, die
1.545.344 Passwörter enthält, abgeglichen wird. Wird nun ein Benutzer gefunden,
der ein Standardpasswort enthält, so wird dieser angezeigt.
Die erste Schwierigkeit lag darin, einen Datenbankbenutzer zu finden, der nicht nur
Zugriff auf die Datenbank sondern auch die Berechtigung hat, die angegebene View
und somit auch die DATA DICTIONARY auszulesen.
Dies stellte jedoch kein großes Problem dar. Nach einigen fehlgeschlagenen
Verbindungsversuchen mit der Datenbank und einigen in Abschnitt 5-4-3
angegebenen, von Oracle verwendeten Standardbenutzern, war nach gerade einmal
20 Minuten ein User gefunden, der sich mit der Datenbank verbinden konnte und
weiterhin die Berechtigung besaß, die DATA DICTIONARY – Views auszulesen.
Der Standardbenutzer DBSNMP war offen und bot, dank dem gleichnamigen
Kennwort, jedem Angreifer die Möglichkeit die besagte View auszulesen.
Checkpwd wurde nun mit dem User DBSNMP gestartet, wie folgende Abbildung zeigt:
Abbildung 7-3: Angriffsversuch mit Checkpwd (Quelle: selbst erstellt)
Nach ca. 32 Minuten war der Test abgeschlossen und lieferte aufschlussreiche
Ergebnisse.
Von insgesamt 381 festgestellten Datenbankaccounts konnte von 207 das Kennwort
ausgelesen werden. Von diesen 207 Benutzern waren 15 Benutzer gesperrt und
somit noch 192 Benutzer frei zugänglich. Eine positive Erscheinung war die Tatsache,
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 87 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 7: Penetrationstest
dass die 15 gesperrten Benutzer, hoch privilegierte Standardbenutzer waren, die
während der Installation des Datenbanksystems angelegt werden. Anhand der
Ausgabe des Programms konnte erkannt werden, dass bei einer Neuanlage eines
Benutzers kein großer Wert auf ein starkes Kennwort gelegt wird. Die
Datenbankadministratoren scheinen immer ein Kennwort zu vergeben, das gleich
dem Namen des Datenbankaccounts ist.
Weiterhin unangenehm aufgefallen sind insgesamt 18 Datenbankuser mit
ausgelesenen Kennwörtern, die von ihrer Benennung her, als Mitarbeiter der
Fachhochschule auszumachen sind oder zur Verwaltung des Datenbanksystems oder
deren Komponenten angelegt worden sein könnten. Die Kennwörter waren jeweils so
schwach gewählt, dass das Programm diese ermitteln konnte. Neben dem schon
erwähnten Fehler, dass viele Kennwörter gleich dem Benutzernamen waren,
enthielten einige sehr schwache und auch ohne Hilfsmittel der Software zu
erratenden Passwörter.
Das Ergebnis dieses Tests war unerwartend. Um in dieses Datenbanksystem
einzudringen wurde wenig Hintergrundwissen benötigt. Mit bekannten Standardusern
und frei verfügbaren Tools aus dem Internet, die eigentlich dazu dienen das DBS
sicherer zu machen, gelang es, in diese Datenbank einzudringen. In nur 30 Minuten
waren 207 User inkl. Kennwort ausgelesen. Mit entsprechend größerem Aufwand und
einer breit angelegten Brute – Force – Attacke, wäre es sicherlich möglich gewesen,
weitere Benutzer mit ausgelesenen Kennwörtern aufzuspüren.
7.3.
Untersuchung der ermittelten Datenbankbenutzer
Die bis dahin bekannten Datenbankbenutzer wurden nun noch etwas genauer
untersucht. Dies geschah mit dem Hilfsmittel OraCmd138. Neben vergebenen
Berechtigungen
an
die
einzelnen
Benutzer,
wurden
Inhalte
einzelner
Benutzertabellen sowie die Sicherheitsstufe, des standardmäßig zu verwendeten
DEFAULT – Profils, untersucht.
Die erste Erforschung der Datenbank geschah mit dem User DBSNMP. Da dieser User
die Berechtigung besitzt, jegliche Tabellen der DATA DICTIONARY auszulesen, wurde
versucht, hiermit herauszufinden, welche Profile, die unter Abschnitt 5-5-4 erläutert
wurden, konfiguriert sind. Nach Ausführung des SQL – Befehls
SELECT * FROM dba_profiles;
war die Anzeige ernüchternd. Neben dem standardmäßig zur Verfügung gestellten
DEFAULT – Profil wurden keine weiteren Profile, innerhalb der Datenbank, gefunden.
Weiterhin wurde in dem DEFAULT – Profil keiner der unter Abschnitt 5-5-4
angegebenen Parameter, die für eine sichere Verwaltung der Benutzer und der
Datenbank unabdingbar sind, gesetzt. Eine gute Methode zur sicheren Vergabe eines
starken
Kennworts
ist
z.B.
die
Nutzung
des
Parameters
PASSWORD_VERIFY_FUNCTION, mit einer entsprechend dafür hinterlegten Funktion.
Daneben ist aufgefallen, dass die vergebenen Kennwörter nie ablaufen, da
PASSWORD_LIFE_TIME
ebenfalls
nicht
gesetzt
ist.
Weiterhin
ist
FAILED_LOGIN_ATTEMPS nicht gesetzt, was dazu führt, dass ein Angreifer, mit
138
OraCmd ist eine Shareware des Unternehmens Withdata Software. Als Alternative zu SQL – Plus ist es
ein Kommandozeilentool, dass es über eine TCP / IP – Verbindung ermöglicht, ohne einen zuvor
installierten Oracle – Client, auf die Datenbank zuzugreifen und SQL – Befehle auszuführen.
http://www.withdata.com/oracmd.html, 30.08.2008
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 88 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 7: Penetrationstest
einem bekannten Benutzerkonto, auch mit falsch eingegebenen Kennwörtern, immer
wieder einen Angriffsversuch über dieses Konto starten kann, da das Benutzerkonto
nie gesperrt wird. Andererseits muss auch erwähnt werden, dass ein Setzen von
FAILED_LOGIN_ATTEMPS dazu führen kann, dass über eine Denial of Service –
Attacke der Datenbankserver sehr leicht lahm gelegt werden kann. Gerade, weil die
Datenbank für Studienzwecke verwendet wird und diese auch übers Internet
verfügbar
ist,
könnte
ein
mutmaßlicher
Angreifer
versuchen,
jeden
Datenbankaccount zu locken, indem er für jeden Benutzer der Datenbank oft genug
ein falsches Kennwort angibt. Wenn vor einer Klausur die Datenbank zu Lernzwecken
benötigt wird, könnte dies unangenehme Folgen für die Studenten haben.
Um herauszufinden, wer der eigentliche Administrator dieses Systems ist, wurde,
ebenfalls mit diesem Benutzer untersucht, wer die SYSDBA und SYSOPER –
Berechtigung, zur Administration der Datenbank, hat. Dies geschah mit folgendem
Statement:
SELECT * FROM v$pwfile_users;
Die unter Abbildung 7-4 gezeigte Ausgabe ergab, dass wohl der User ORACLE für die
Administration des Datenbanksystems verantwortlich ist. Ein potentieller Angreifer
würde nun versuchen, das Passwort dieses Benutzers, anhand des bekannten Hash –
Wertes, herauszufinden.
Abbildung 7-4: Inhalt der View v$pwfile_users (Quelle: selbst erstellt)
Die Untersuchung der weiteren Benutzer ergab ebenfalls einige Auffälligkeiten, die
nicht unerwähnt bleiben sollten.
Neben meist trivialen Daten, wurden zwei Datenbankbenutzer gefunden, die, nach
Rückfrage bei Fr. Prof. Dr. Faeskorn-Woyke, Informationen von Studenten (siehe
Abbildung 7-5) und Dozenten (siehe Abbildung 7-6) enthalten, die für die öffentliche
Stundenplanung verwendet werden.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 89 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 7: Penetrationstest
Abbildung 7-5: Unkenntlich gemachte Studentendaten (Quelle: selbst erstellt)
Abbildung 7-6: Unkenntlich gemachte Daten von Dozenten (Quelle: selbst erstellt)
Als letzten Schwachpunkt muss die Berechtigungsvergabe erwähnt werden. Einige
der Benutzer, die von ihrer Benennung her, wahrscheinlich zu Mitarbeitern der
Fachhochschule gehörten, konnten weitreichende Systemberechtigungen ihr eigen
nennen. Berechtigungen wie CREATE ANY TRIGGER oder CREATE ANY DIRECTORY
gehörten dabei nicht zur Seltenheit.
Jeder der untersuchten User hatte weiterhin UNLIMITED TABLESPACE, was dazu
führt, dass ein Angreifer die Datenbankinstanz lahm legen kann, indem er in einem
beliebigen Datenbankschema so viele Daten ablegt, bis der vom Betriebssystem zur
Verfügung gestellte Speicher voll ist. Über die Rolle CONNECT ist auch die
Berechtigung CREATE DATABASE LINK vergeben, womit eine Verlinkung zu einer
entfernten Datenbank erfolgen kann um Daten und somit evtl. Schaden auf dem
System einzuschleusen.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 90 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 7: Penetrationstest
7.4.
Die DBA – Rolle
Ein Ziel eines versierten Angreifers, ist wohl die Erlangung der Rolle DBA. Diese
wissen, dass dieser Rolle weitreichende Berechtigungen zugewiesen sind, die zur
Verwaltung des Datenbanksystems und der Datenbankbenutzer genutzt werden
kann.
Einige bekannte Lücken zur Erlangung dieser Rolle, die mittels SQL – Injection
ausgenutzt werden können und in Whitepapers und Präsentationen von Red –
Database – Security, zur Verfügung gestellt werden, brachten keinen Erfolg. Somit
kann davon ausgegangen werden, dass die Administratoren einige Sicherheits –
Pachtes eingespielt haben, die bekannte Lücken stopfen.
Doch nach einer Anfrage bei Hr. Alexander Kornbrust, Geschäftsführer von Red –
Database – Security, stellte dieser ein selbst geschriebenes Tool des Unternehmens
zur Verfügung, dass eine Lücke im Listener – Prozess dieser Datenbankversion
ausnutzt, um die DBA – Rolle zu erhalten. Diesem Tool wird als Parameter der
anzugreifende Host, der offene Port, ein beliebiger Datenbankbenutzer inkl. Passwort
und ein SQL – Befehl mitgegeben. Als SQL – Statement wurde „GRANT DBA TO
PUBLIC;“ ausgeführt. Das Tool verbindet sich dabei zur Datenbank und sendet den
Befehl „ALTER SESSION SET NLS_LANG=AMERICAN_AMERICA;“. Während diesem
Prozess führt das Datenbanksystem, in dem Kontext des Users SYS, diesen Befehl
aus und schreibt das Ergebnis in eine Datei des Oracle – Client. In diesem Falle in
oraclient9.dll. Danach wird durch das Tool der ALTER SESSION – Befehl durch den
Befehl „GRANT DBA TO PUBLIC;“ in der jeweiligen DLL ersetzt. Nach einem erneuten
Login auf die Datenbank wird das Statement aus der DLL ausgeführt und alle
Datenbankbenutzer haben die Rolle DBA. Die ausgenutzte Sicherheitslücke entsteht
dabei dadurch, dass das DBS den Code in der DLL bereits ausführt, bevor der LOGON
– Trigger des Datenbanksystems ausgeführt wird.
Die Rolle DBA wurde, innerhalb von OraCmd, sofort wieder mit dem Befehl „REVOKE
DBA FROM PUBLIC;“ den Usern entzogen. Jedoch wurde noch ein Benutzer
VB_WI_99 erstellt, dem die Rolle DBA zugewiesen wurde, wie das Ergebnis (siehe
Abbildung 7-7) des nachstehenden SQL – Befehls zeigt:
SELECT * FROM dba_role_privs
WHERE granted_role = ’DBA’;
Abbildung 7-7: Datenbankbenutzer mit der Rolle DBA (Quelle: selbst erstellt)
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 91 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 7: Penetrationstest
Mit Hilfe des erstellten Benutzers VB_WI_99, wurden weitere Tabellen von
Datenbankbenutzern untersucht, dessen Kennwort zu Beginn nicht ermittelt werden
konnte. Hierbei wurden ebenfalls keine sensiblen Daten gefunden. Jedoch, wurde
innerhalb des einen Benutzerschemas, eine Tabelle mit Fragen gefunden, die von
ihrem Aufbau her wohl dazu diente, Klausuren mit Fragen zu bestücken. Daneben
gab es noch eine Tabelle Noten, die neben Noten auch noch eine Benutzer-Id
enthielt, die es ermöglichte, die Noten einem Namen in einer weiteren Tabelle
zuzuweisen.
Mit Erlangung dieser Rolle war das Ziel des Penetrationstests erreicht. Mit diesem
Benutzer konnte man nun, mehr oder weniger, die gesamte Datenbankinstanz
verwalten. Daten und Benutzer auslesen, Daten manipulieren und nicht zuletzt die
Datenbank lahm legen.
7.5.
Angriff über Oracle XML – DB
Wie bereits in Abbildung 7-2 zu erkennen, ist neben dem Port 1521 auch der Port
8080 geöffnet. Dahinter verbirgt sich die von Oracle zur Verfügung gestellte
Komponente XML – DB. Mit ihr ist es u.a. möglich XML – Dokumente in der
Datenbank abzuspeichern.
Da es in der vorliegenden Version 9.2.0.6, auch hierüber relativ einfach ist, in die
Datenbank einzudringen, wurde zuletzt versucht, hierüber die Passwörter der
Datenbankbenutzer auszulesen.
Zuerst wurde dabei, über einen gewöhnlichen Internetbrowser, die entsprechende
Webseite der Datenbank aufgerufen. Dies war, wie in Abbildung 7-2 zu sehen ist, die
Seite http://oras1.gm.fh-koeln.de:8080.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 92 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 7: Penetrationstest
Abbildung 7-8: Verbindungsversuch über Oracle XML – DB (Quelle: selbst erstellt)
Zur Authentifizierung wurde der bereits bekannte Standardbenutzer DBSNMP mit
dem dazugehörigen Passwort gewählt.
Nach erfolgreichem Login konnte, nach Eingabe nachfolgender URL, die Struktur der
Datenbankbenutzer ausgelesen werden:
http://oras1.gm.fh-koeln.de:8080/oradb/PUBLIC/ALL_USERS
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 93 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 7: Penetrationstest
Abbildung 7-9: Auslesen der Datenbankbenutzer über Oracle XML – DB (Quelle: selbst erstellt)
Nachdem nun alle Datenbankbenutzer inkl. dessen USER_ID angezeigt wurden,
konnte in einem letzten Schritt, der Hash – Wert der Kennwörter eines jeden
Datenbankaccounts, mit nachfolgender SQL – Injection, sichtbar gemacht werden:
http://oras1.gm.fh-koeln.de:8080/oradb/PUBLIC/ALL_USERS?transform=
'||(select%20username||'='||password%20from%20dba_users%20where%2
0user_id=0)||'
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 94 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 7: Penetrationstest
Abbildung 7-10: Kennwort des Datenbankbenutzers SYS (Quelle: selbst erstellt)
Wie der Versuch zeigt, ist es relativ simpel die Kennwörter der Datenbank, über
diese Komponente auszulesen. Die in der SQL – Injection benutzte USER_ID kann
natürlich durch jede, der in Abbildung 7-9 dargestellten USER_ID ersetzt werden.
7.6.
Fazit
Als Fazit kann ist festzuhalten, dass es sich um ein sehr anfälliges und für versierte
Angreifer lohnendes Datenbanksystem hält. Der Port – Scan inkl. eines ersten
Eindringens in die Datenbank, dem Auslesen aller Datenbankbenutzer und vielen
dazugehörigen Kennwörtern, hat gerade einmal vier Stunden gedauert. Daraus
resultierte eine schnelle Verfügbarkeit von Studenten- und Dozentendaten sowie
Telefonnummern, die jedoch für eine öffentliche Stundenplanung bestimmt und
daher sowieso öffentlich zugänglich sind.
Die in Abschnitt 7-5, über die Komponente Oracle XML – DB verursachte SQL –
Injection ist ebenfalls eine Lücke, die geschlossen werden sollte. Leider ist es über
die Webseite http://oras1.gm.fh-koeln.de:8080 möglich, dass sich dort jeder an der
Datenbank registrierte Datenbankbenutzer anmelden kann, was dazu führt, das jeder
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 95 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 7: Penetrationstest
dieser User, die Hash – Werte auslesen könnte und somit auch, früher oder später,
die einzelnen Kennwörter der Datenbank ermitteln könnte.
Die Anfälligkeit hängt zu einem großen Teil mit der verwendeten Datenbankversion
zusammen. Oracle 9i gilt, lt. Hr. Alexander Kornbrust, als ein System mit sehr vielen
Bugs und Sicherheitslücken, deren Angriffspunkte mittlerweile allgemein bekannt
sind.
Andererseits hätte ein schnelles Eindringen in die Datenbank leicht verhindert
werden können, indem alle während der Installation angelegten Standardbenutzer,
gesperrt gewesen wären. Die von den Administratoren erstellten Konten sollten
weiterhin kein Kennwort erhalten, das gleich dem Benutzernamen ist. Das von Oracle
zur Verfügung gestellte DEFAULT – Profil sollte ebenfalls durchdacht konfiguriert und
eingesetzt werden.
Auch wenn es sich um eine Datenbank handelt, die für Übungs- und Lehrzwecke
gedacht ist und keine sensiblen Daten enthält, sollten Dozenten und Mitarbeiter der
Fachhochschule, die mit einem von der Außenwelt ansprechbaren System arbeiten,
Kennwörter wählen, die nicht leicht auszumachen sind.
7.6.1.
Möglichkeiten zur Absicherung
Nach Rücksprache mit Hr. Alexander Kornbrust, wurden nachfolgende Punkte
entworfen, die zur Absicherung des Datenbanksystems eingesetzt werden sollten:
•
Den Oracle – Listener absichern (vgl. Abschnitt 5-7-1). Hierbei sollte
neben einem Passwort, innerhalb der Datei listener.ora, der Parameter
ADMIN_RESTRICTIONS auf den Wert ON gesetzt werden.
•
Schwache Passwörter durch starke ersetzen.
•
Die im DEFAULT – Profil (vgl. Abschnitt 5-5-4) erwähnte Funktion zur
Überprüfung eines Kennworts sollte ebenfalls konfiguriert und über das
Profil gesetzt werden.
•
Innerhalb der Betriebssystemdatei init.ora sollte entweder die Option
Oracle XML – DB deaktiviert oder der entsprechende Port der Firewall
geschlossen werden.
•
Die
CREATE
PROCEDURE
sollte,
wenn
möglich,
nicht
an
Datenbankbenutzer vergeben werden, da hierüber leicht SQL –
Injections durchgeführt werden können.
•
Um Angriffe zu erkennen, sind u.a. Trigger einzusetzen, die dann
mitprotokollieren, wenn SQL – Befehle der Datendefinitions- oder
Datenadministrationssprache abgesetzt werden. Weiterhin sollten
bestimmte SQL – Fehlermeldungen (die z.B. auf ein Eindringen
hinweisen) protokolliert werden.
•
Zuletzt sollte die vorhandene Version mit der Oracle – Version 9.2.0.8
bzw. der supporteten Version 10.2.0.4 gepatcht werden.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 96 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 8: Checkliste zum Inhalt eines Sicherheitsplans
8.
Checkliste zum Inhalt eines Sicherheitsplans
Nachdem nun die wichtigsten sicherheitsrelevanten Themen zum sicheren Betrieb
eines Oracle – Datenbanksystems erläutert wurden, soll in diesem Abschnitt, zu
guter letzt, eine Checkliste zur Verfügung gestellt werden. Grundlegende,
sicherheitsrelevante Aspekte werden noch mal zusammengestellt. Anhand dieser
Liste lässt es sich leichter nachvollziehen ob man wichtige Aspekte zur Sicherung des
Datenbanksystems vergessen hat und noch nachholen sollte.
8.1.
Die Systemlandschaft planen
Ein Angreifer hat es schwieriger, wenn er, anstatt nur einem Betriebssystem,
mehrere Systeme und Firewalls zu umgehen hat um z.B. an die Daten einer
Datenbank zu gelangen. Somit sollte die Systemlandschaft so geplant werden, dass
ein Angreifer möglichst viele Hürden überwinden muss um an sein Ziel und in diesem
Fall, an die gewünschten Daten zu gelangen. Folgende Aspekte sollten beim Planen
der Systemlandschaft beachtet werden:
•
Die richtige Wahl der Betriebssysteme (vgl. Abschnitt 5-2-1).
•
Eine Firewall bzw. mehrere Firewalls sollten eingesetzt werden um z.B.
nicht benötigte Ports des eingesetzten Betriebssystems zu schließen.
•
Innerhalb der Systemlandschaft sollten mehrere sicherheitsrelevante
Zonen eingesetzt werden. Dabei sollte eine Zone eingesetzt werden,
die nur mit dem Internet kommuniziert und keine Zugriffe, aus dem
Internet, in andere Zonen zulässt. Hierzu empfiehlt sich z.B. der
Einsatz einer bzw. mehrerer DMZ (vgl. Abschnitt 5-2-2).
Bei der Planung der Systemlandschaft sollte darauf geachtet werden, dass alle
eingesetzten
Komponenten
miteinander
harmonieren
und
zwischen
den
verschiedenen Komponenten wohl definierte Schnittstellen eingesetzt werden.
8.2.
Sicherung des Betriebssystems
Das Betriebssystem ist die Grundlage jeder lauffähigen Software. Ob das
Datenbanksystem selbst, das Intranet, der Webserver oder aber andere Software auf
dem jeweiligen System laufen. Es stellt meist die letzte Hürde vor einem möglichen
Angriff an die Software dar. Das Betriebssystem sollte daher u.a. mit folgenden
Maßnahmen gesichert werden:
•
Für das Root – Benutzerkonto sollte ein sicheres Passwort gesetzt sein
(vgl. Abschnitt 5-3-2).
•
Die Betriebssystemdateien sollten mit entsprechend vergebenen
Berechtigungen richtig geschützt sein (vgl. Abschnitt 5-3-1).
•
Es sollte nur die Software auf dem Betriebssystem installiert sein, die
auch wirklich benötigt wird.
•
Das Auditing des Betriebssystems sollte aktiviert werden, um
ungewöhnliche Ereignisse zu dokumentieren und darauf reagieren zu
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 97 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 8: Checkliste zum Inhalt eines Sicherheitsplans
können (vgl. Abschnitt 5-3-4).
•
Regelmäßig Patches auf dem Betriebssystem installieren.
Um alle möglichen Sicherheitsmaßnahmen, zum Schutz eines Betriebssystems
durchzuführen, ist es unumgänglich Administrationsbücher der jeweiligen Systeme
zu studieren 139.
8.3.
Das Datenbanksystem absichern
Das Datenbanksystem Oracle und der Schutz der darin enthaltenen Daten ist das
Kernstück dieser Arbeit. Das Datenbanksystem sollte mit allen Möglichkeiten die es
bietet, geschützt werden. Einige wichtige Schutzmaßnahmen werden noch mal kurz
zusammengefasst:
139
•
Die Standardbenutzer, die von Oracle mit installiert werden, sind zu
schützen. U.a. sollten ihnen sichere Kennwörter vergeben werden (vgl.
Abschnitt 5-4-3).
•
Es sollten nur die Anwendungen von Oracle installiert werden, die auch
wirklich Beachtung finden. Werden später weitere Komponenten
benötigt, so sollten diese nachinstalliert werden (vgl. Abschnitt 5-4-2).
•
Die Datenbankbenutzer sollten nur die Rollen und Berechtigungen
erhalten, die sie auch wirklich für ihre Arbeit benötigen. Hier gilt der
Grundsatz: „Lieber zu wenig Berechtigungen, als zu viele!“ (vgl.
Abschnitt 5-5-2 und Abschnitt 5-5-3).
•
Das von Oracle zur Verfügung gestellte DEFAULT – Profil sollte aktiviert
werden. Weiterhin sollte die damit zur Verfügung gestellte Funktion zur
sicheren Vergabe eines Passworts genutzt werden (vgl. Abschnitt 5-54).
•
Die im Zusammenhang mit Oracle verwendeten Dateien, die auf dem
Betriebssystem gespeichert werden, sollten gegen unerlaubten Zugriff
geschützt werden. Ist eine, im Rahmen der Oracle Advanced Security
enthaltene, Verschlüsselung verfügbar, sollte diese genutzt werden
(vgl. Abschnitt 6-1-3 und Abschnitt 6-1-4).
•
In Versionen vor Oracle 10g ist der Listener des Datenbanksystems mit
einem Kennwort gegen unerlaubten Zugriff zu schützen (vgl. Abschnitt
5-7-1 und Abschnitt 7-6-1).
•
SSL sollte zur Verschlüsselung des Netzwerkverkehrs aktiviert werden.
Sieht sich ein Datenbankadministrator ohne Verschlüsselung des
Datenverkehrs, z.B. über den Oracle Enterprise Manager, die Tabelle
der Datenbankbenutzer an, so werden die Hash – Werte der
Kennwörter unverschlüsselt übertragen (vgl. Abschnitt 5-7-1).
•
Um Angriffe auf das Datenbanksystem zu erkennen und darauf
reagieren zu können, sollte das Auditing bzw. entsprechende Trigger
des Datenbanksystems konfiguriert und aktiviert werden (vgl.
Abschnitt 5-6-4).
•
Der Arbeit der Datenbankadministratoren sollte nicht blind vertraut
Vgl. hierzu [Michael 2002]
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 98 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 8: Checkliste zum Inhalt eines Sicherheitsplans
werden. Ihre Arbeit sollte, nach Möglichkeit, kontrolliert werden.
•
8.4.
Sicherheits – Patches, die für das Datenbanksystem in der jeweiligen
Version zur Verfügung gestellt werden, sollten regelmäßig eingespielt
werden (vgl. Abschnitt 5-7-3).
Backups durchführen
Daten auf dem Datenbanksystem, wie auch Daten bzw. Dateien auf dem jeweiligen
Betriebssystem selbst, sollten durch Backups gesichert werden. Die Backups sollten
automatisiert ablaufen um ein regelmäßiges Backup zu gewährleisten. Sollten einmal
innerhalb der Datenbank durch einen Angriff mittels SQL – Injection, Daten verloren
gehen, so kann, durch Einspielung eines Backups, ein relativ aktueller Stand wieder
hergestellt werden (vgl. Abschnitt 5-7-2).
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 99 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 9: Fazit
9.
Fazit
Oracle – Datenbanksysteme sind am weitesten verbreitet, was den Fokus, in Bezug
auf Sicherheit, besonders auf dieses System lenkt. Nicht zuletzt deswegen, gibt es
eine Menge an Büchern, die sich nur mit der Absicherung dieses Datenbanksystems
beschäftigen. Ziel war es nun gewesen, einen Sicherheitsplan zu erstellen, der für
Oracle – Datenbanksysteme allgemein eingesetzt und auch für sensible Daten
verwendet werden kann. Oracle bietet zwar weitreichende und komplexe
Möglichkeiten zur Absicherung eines Datenbestandes und des Datenbanksystems an,
jedoch ist eine fast vollkommene Absicherung oft nur für einen immensen
Kostenaufwand zu erreichen, was auch nicht unbedingt bedeutet, dass damit alle
Sicherheitslücken gestopft sind.
Während den ganzen Recherchen zu dieser Arbeit, wurde erkannt, dass nicht nur die
Absicherung des Datenbanksystems selbst sondern auch die darauf einwirkenden
Umweltfaktoren betrachtet werden müssen. Dies führte zu der Erkenntnis, dass es
meist nur rein theoretisch möglich ist, eine Oracle – Datenbank vollkommen
abzusichern. In der Praxis ist es oft nicht möglich ist, ein Datenbanksystem
vollkommen abzusichern.
Organisationen und Unternehmen stellen meist wenig Zeit zur Verfügung, um einen
umfassenden Sicherheitsplan zu erstellen bzw. umzusetzen. Die Geschäftsprozesse
sind oft so aufgebaut, dass das wirkliche Absichern der Datenbank keine oder nur
wenig Beachtung findet. Datenbankadministratoren müssen in vielen Unternehmen
nicht selten über 1.000 Datenbanken administrieren. Allein die Einspielung eines
einzigen Security – Patches verschlingt dabei schon Unmengen an Zeit. Die
Datenbankbenutzer als auch die Datenbankadministratoren sind in dem Thema
Sicherheit weiterhin nicht ausreichend geschult, womit schon viele Schwachpunkte
erschlagen werden könnten. Ebenfalls trägt Oracle, mit der Preispolitik der Oracle
Advanced Security, nicht gerade dazu bei, umfassende Sicherheitsmaßnahmen, zur
Absicherung von sensiblen Daten, ohne weiteres einzusetzen.
Als Fazit kann festgehalten werden, dass ein halbwegs abgesichertes
Datenbanksystem bereits mit wenigen Handgriffen möglich ist. Es muss also
versucht werden, die Organisationen bzw. Unternehmen mehr für das Thema
Sicherheit zu sensibilisieren. Hier sollte ein Konsens zwischen einer ausreichenden
Produktivität und einer sicheren Datenbank erreicht werden. Wie man während des
Penetrationstests bereits gesehen hat, hätte die Absicherung der Standardbenutzer
und das Setzen eines Kennworts für den Oracle – Listener bereits dazu geführt, dass
zumindest ein erheblich höherer Zeitaufwand notwendig gewesen wäre, um in das
Datenbanksystem einzudringen. Allein dieser Aspekt, hätte wahrscheinlich schon die
meisten Angreifer davon abgehalten, weitere Versuche zu starten.
Der Sicherheitsaspekt in Datenbanksystemen wird in naher Zukunft immer weiter
zunehmen. Aufgrund der Globalisierung, der immer höher einzustufenden Wichtigkeit
des Internets sowie der damit zusammenhängenden Speicherung von sensiblen und
persönlichen Daten. Wie auch die aktuelle Diskussion der Öffentlichkeit beweist, ist
es nicht nur notwendig Datenbanksysteme selbst abzusichern. Einerseits müssen die
Personen, die mit den Datenbanken arbeiten einen anderen Blickwinkel zum Thema
Sicherheit erhalten und z.B. ihrem Datenbankkonto ein sicheres Kennwort vergeben.
Andererseits dürfen die Personen, deren sensible Daten abgespeichert in
Datenbanken vorhanden sind, nicht so leichtfertig mit ihren Daten umgehen. Solange
Personen bei jedem Preisausschreiben mitmachen und ihre Daten bereitwillig im
Internet irgendwelchen Unternehmen zur Verfügung stellen, bleibt es für Angreifer
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 100 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 9: Fazit
ein lohnendes Geschäft, in Datenbanksysteme
auszuspähen und diese zu verkaufen.
einzudringen,
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
sensible
Daten
Seite 101 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 10: Danksagung
10.
Danksagung
Diesen Abschnitt möchte ich nutzen, um mich bei einigen Personen, die mich bei
dieser Arbeit besonders unterstützt haben, zu danken.
Zuerst geht mein ganz besonderer Dank an Hr. Alexander Kornbrust, Geschäftsführer
des Unternehmens Red – Database – Security, der mir mit viel Mühe und einer
Unmenge von weitreichenden, nützlichen und praxisnahen Tipps zu diesem Ergebnis
verholfen hat.
Weiterhin möchte ich den Professorinnen Fr. Prof. Dr. Faeskorn - Woyke und Fr. Prof.
Dr. Bertelsmeier danken, die mich während des Studiums mit dem notwendigen
Wissen bereichert und mich schließlich zu diesem sehr interessanten Thema
hingeführt haben. Neben jeglicher Unterstützung habe ich die notwendige Kritik und
auch nützliche Tipps erhalten um dieser Arbeit ihr Gesicht zu geben.
Last but not least geht mein Dank an Thorsten Dahm und Alexander Plegnière sowie
an alle, die mich während der gesamten Regelstudienzeit von 10 Semestern
unentwegt unterstützt und mir auch bei dieser Arbeit nützliche und nicht zuletzt
grammatikalische Unterstützung zukommen ließen.
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 102 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 10: Danksagung
Literaturverzeichnis
[Bryla et al. 2007]
B. Bryla, K. Loney; Oracle Database 11g – DBA Handbuch – Eine
skalierbare und sichere Oracle Enterprise Datenbank administrieren;
Hanser Verlag; München 2008
[Faeskorn-Woyke et al. 2007]
H. Faeskorn-Woyke, B. Bertelsmeier, P. Riemer, E. Bauer;
Datenbanksysteme – Theorie und Praxis mit SQL2003 Oracle und MySQL;
Pearson Verlag; München 2007
[Michael 2002]
R. K. Michael; AIX 5L Administration – Guide to IBM’s 5. version of IBM –
AIX.; Mcgraw – Hill Verlag; California 2002
[Newman et al. 2004]
A. Newman, M. Theriault; Oracle Sicherheitshandbuch – Einen
umfassenden Sicherheitsplan in der Oracle – Umgebung implementieren;
Hanser Verlag; München 2004
[Kersken 2003]
S. Kersken; Kompendium der Informationstechnik; Galileo Press Verlag;
Bonn 2003
[kes 2007]
<kes> Zeitschrift für Informationssicherheit; Secu Media Verlag
Ingelheim, in Zusammenarbeit mit dem Bundesamt für Sicherheit in der
Informationstechnik; Ausgabe Nr. 3, Juli 2007
[Rüttger 2006]
M. Rüttger; MySQL 5 Professionell – Administration und Tuning; Mitp
Verlag; Heidelberg 2006
[Siebdrat 2007]
Prof. Dr. Siebdrat, Skript des WPF Betriebliche Anwendungssysteme –
Fachhochschule Köln im SS 2007
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 103 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 10: Danksagung
Abkürzungsverzeichnis
AES
Advanced Encryption Standard
BDSG
Bundesdatenschutzgesetz
BLOB
Binary Large Objects
BFILE
Binary File Large Objects
Bsp.
Beispiel
BSI
Bundesamt für Sicherheit in der Informationstechnologie
bzgl.
bezüglich
bzw.
beziehungsweise
ca.
circa
DAL
Data Administration Language
DBA
Datenbankadministrator
DBCA
Database Creation Assistent
DBMS
Datenbankmanagementsystem
DBS
Datenbanksystem
DDL
Data Definition Language
DES
Data Encryption Standard
DML
Data Manipulation Language
DMZ
Demilitarisierte Zone
DQL
Data Query Language
DoS
Denial of Service
evtl.
eventuell
FGA
Fine Grained Auditing
FGAC
Fine Grained Access Control
FTP
File Transfer Protokoll
ggf.
gegebenenfalls
GIS
Geographische Informationssysteme
inkl.
inklusive
i. d .R.
in der Regel
HTML
Hypertext Markup Language
MD5
Message Digest Algorithm 5
MS SQL
Microsoft SQL – Server
NTFS
New Technology File System
OAS
Oracle Advanced Security
OODBS
Objekt – Orientierte – Datenbanksysteme
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 104 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 10: Danksagung
ORDBS
Objekt – Relationale – Datenbanksysteme
OUI
Oracle Universal Installer
PHP
PHP Hypertext Preprocessor
RAC
Real Application Cluster
RDBS
Relationale – Datenbank – Systeme
RDBMS
Relationale – Datenbank – Management – Systeme
RLS
Row Level Security
RMAN
Oracle Recovery Manager
SCM
Service Controll Manager
SHA
Secure Hash Algorithm
SQL
Structured Query Language
SSH
Secure Shell
SSL
Secure Socket Layer
u. a.
unter anderem
u. U.
unter Umständen
Vgl.
Vergleiche
VPD
Virtual Private Database
VPN
Virtual Private Network
XML
Extensible Markup Language
XMLDBS
XML – Datenbanksysteme
z. B.
zum Beispiel
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 105 von 106
Erstellen eines Oracle-Sicherheitsplans
Kapitel 10: Danksagung
Eidesstattliche Erklärung
Gemäß § 26 (1) der DPO erkläre ich an Eides statt, dass ich die vorliegende
Arbeit selbständig angefertigt habe. Ich habe mich keiner fremden Hilfe bedient
und keine anderen, als die angegebenen Quellen und Hilfsmittel benutzt. Alle
Stellen, die wörtlich oder sinngemäß veröffentlichten oder nicht veröffentlichten
Schriften und anderen Quellen entnommen sind, habe ich als solche kenntlich
gemacht. Diese Arbeit hat in gleicher oder ähnlicher Form noch keiner
Prüfungsbehörde vorgelegen.
Saarbrücken, 05.10.2008
________
___________
(Christian Krämer)
Diplomarbeit – Fachhochschule Dortmund – Fachbereich – Informatik
Seite 106 von 106
Herunterladen