47
Daten – Bank 5. Vorlesung

Daten – Bank 4. Vorlesungprg2/SS2018/folien/teil2/5_db_2018.pdf · Dr. Karsten Tolle –PRG2 –SS 2018 32 Gegenmaßnahmen • Positivlisten Methode –wurde eingegeben was man

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Daten – Bank

5. Vorlesung

Dr. Karsten Tolle – PRG2 – SS 2018 2

• 10:45 Uhr Nils Dallmayer klärt Fragen zu Teil 1

Dr. Karsten Tolle – PRG2 – SS 2018 3

Klausuranmeldung bis 16. Juli

• Anmeldung online über QIS/LFS (Details unter: http://go.uni-frankfurt.de) für Studierende der:– Informatik, Bioinformatik, Physik

– Mathematik, Geographie

• Lehramt - bitte eine kurze eMail an: [email protected]

• Alle anderen (Linguistik, …) :– Anmeldung per Zettel (PDF auf PRG2-Seite)!

… im Briefkasten des Prüfungsamtes Informatik einwerfen (Robert-Mayer-Str. 11-15 – Erdgeschoss)

Dr. Karsten Tolle – PRG2 – SS 2018 4

4. VL …

SQL:

• create

• insert

• select

(0,n) (0,n) Person

AusweisNr. Name Vorname

lebt_in

von bis

Ort

PLZ Ortsname

• 1. Normalform

• Schlüssel und Funktionale Abhängigkeiten

Datenaustauschformate:CSV, JSON, XML, …

Dr. Karsten Tolle – PRG2 – SS 2018 5

Heute …

SQL:

• create

• insert

• select

(0,n) (0,n) Person

AusweisNr. Name Vorname

lebt_in

von bis

Ort

PLZ Ortsname

• 1. Normalform

• Schlüssel und Funktionale Abhängigkeiten

• 2. Normalform

Sicherheit

Datenaustauschformate:CSV, JSON, XML, …

Dr. Karsten Tolle – PRG2 – SS 2018 6

Sicherheit …• … warum ist die so wichtig?

IoT – Internet of Things… der Kühlschrank am Netz …

Dr. Karsten Tolle – PRG2 – SS 2018 7

Gesetz zum Nachlesen:

http://www.bmi.bund.de/SharedDocs/Downloads/DE/Gesetzestexte/it-sicherheitsgesetz.html

http://www.heise.de/newsticker/meldung/Bundestag-verabschiedet-IT-Sicherheitsgesetz-2689526.html

Dr. Karsten Tolle – PRG2 – SS 2018 8

Datenschutz-GrundverordnungDSGVO

https://dsgvo-gesetz.de/

Dr. Karsten Tolle – PRG2 – SS 2018 9

Datenlecks zum Stöbern …

• http://www.datenleck.net/ (Daten aus 2016)

• http://opalkatze.wordpress.com/to-be-continue/datenpannen/ (Listen für 2009 – 2013)

• http://www.faz.net/aktuell/wirtschaft/netzwirtschaft/chronik-die-wichtigsten-hackerangriffe-13345391.html (2009 -2014)

• https://en.wikipedia.org/wiki/Data_breach

Dr. Karsten Tolle – PRG2 – SS 2018 10

Zone-h.com

Dr. Karsten Tolle – PRG2 – SS 2018 11

Dr. Karsten Tolle – PRG2 – SS 2018 12

http://news.softpedia.com/news/sql-injection-and-lfi-accounted-for-over-three-quarters-of-all-web-attacks-505147.shtml#sgal_0

SQL Injection

… (böswilliges) Einschleusen oder Verändern von SQL-Befehlen an die

Datenbank durch den Benutzer.

Testen: http://www.irongeek.com/i.php?page

=mutillidae/mutillidae-deliberately-vulnerable-php-owasp-top-10

Bietet verschiedene Angriffsvarianten: SQL-Injection, XSS, …

Dr. Karsten Tolle – PRG2 – SS 2018 15

Sicherheit - Datenbanksysteme• 3-Schicht Architektur

Bild vom BSI IT-Grundschutz-Katalog: https://www.bsi.bund.de/DE/Themen/ITGrundschutz/ITGrundschutzKataloge/Inhalt/_content/baust/b05/b05007.html

Dr. Karsten Tolle – PRG2 – SS 2018 17

… bei schlechter Sicherheit ist nicht nur die Datenbank gefährdet!

• Dateien lesen:

– select LOAD_FILE('c:\\praegeherren.json');

• Dateien schreiben:

– select count(*) from prg2.bundeslaender INTO dumpfile 'Ausgabe.txt';

– select * from prg2.bundeslaender INTO OUTFILE 'Ausgabe2.txt';

SELECT @@datadir; ## gibt an, wo die Ausgaben abgelegt werden

Dr. Karsten Tolle – PRG2 – SS 2018 18

Benutzer und Rechte

• CREATE USER test IDENTIFIED BY PASSWORD ‘li720lhjLJ2' –

erzeugt einen neuen Benutzer

• GRANT select ON star_trek.* TO test – weist dem Benutzer

test die select Rechte für alle Tabellen der DB star_trek zu

• REVOKE select ON star_trek.* from test – nimmt ihm die

Rechte wieder

• GRANT select ON star_trek.offizier TO test – weist dem

Benutzer test die select Rechte für die Tabelle offizier zu

Siehe auch: http://dev.mysql.com/doc/refman/5.7/en/account-management-sql.html

Dr. Karsten Tolle – PRG2 – SS 2018 19

Grant und Revoke unter Workbench

Dr. Karsten Tolle – PRG2 – SS 2018 20

Server Variablen richtig setzten …

my.ini oder my.cnfWindows z.B.:C:\ProgramData\MySQL\MySQL Server 5.xLinux (my.cnf) z.B.:/etc/my.cnf or mysql-data-dir/my.cnf

select @@basedir;

… Aufgabenblatt 12 Aufgabe 3!

Dr. Karsten Tolle – PRG2 – SS 2018 21

Windows unter Dienste …

"C:\Program Files\MariaDB 10.2\bin\mysqld.exe" "--defaults-file=C:\Program Files\MariaDB10.0\data\my.ini" "MySQL"

Dr. Karsten Tolle – PRG2 – SS 2018 22

Empno Vorname Nachname Gehalt

1 Ines Müller 75000

2 Fred Wagner 60000

3 Ingo Meyer 72000

4 Max Müller 26000

Jemand der die Vor- und Nachnamen der Mitarbeiter benötigt, würde z.B. die Select-Rechte an der Tabelle „Mitarbeiter“ erhalten und so auch die Gehälter erfahren

Mitarbeiter

Dr. Karsten Tolle – PRG2 – SS 2018 23Mitarbeiter_Dept

Empno Vorname Nachname Gehalt

1 Ines Müller 75000

2 Fred Wagner 60000

3 Ingo Meyer 72000

4 Max Müller 26000

Depno Name Head …

1 Finanzen 2

2 Einkauf 1

3 HR 1

Empno Depno …

1 2

1 3

2 1

3 3

4 2

CREATE VIEW Mitarbeiter_Dept ASselect m.Empno, m.Nachname, d.Name as Abtfrom Mitarbeiter m, Abteilung d, Arbeitet_in awhere m.Empno = a.Empnoand a.Depno = d.Depno;

Mitarbeiter Abteilung

Arbeitet_in

Empno Nachname Abt

1 Müller Einkauf

1 Müller HR

2 Wagner Finanzen

3 Meyer HR

4 Müller Einkauf

Mitarbeiter_Dept

Dr. Karsten Tolle – PRG2 – SS 2018 24

Absichern am Bsp. MySQL

• keine Standard Benutzer – z.B. „root“mysql> RENAME USER root TO new_user;

• Netzwerkzugang nur erlauben, wenn nötig (sonst nur localhost)

• Firewall installieren

• show databases verbieten

• …

Siehe auch: http://dev.mysql.com/doc/refman/5.8/en/general-security-issues.html

Dr. Karsten Tolle – PRG2 – SS 2018 25

Dr. Karsten Tolle – PRG2 – SS 2018 26

Welche Benutzer gibt es eigentlich alles …

• … wo finde ich diese Informationen

• … wo sind die Daten abgelegt: user, pw, …

• … wie sicher ist das?

• … und was hat das mit einem Regenbogen zu tun? (http://kestas.kuliukas.com/RainbowTables/ )

https://crackstation.net/http://passwordsgenerator.net/

Dr. Karsten Tolle – PRG2 – SS 2018 27

Salt und Pepper

• Passwörter werden durch zusätzliche Zeichenketten ergänzt:

– Salt – jedes PW erhält eine eigene Zeichenkette, welche in der DB mit und offen hinterlegt ist.

– Pepper – jedes PW wird mit der gleichen Zeichenkette ergänzt, diese Zeichenkette ist möglichst geheim.

Dr. Karsten Tolle – PRG2 – SS 2018 28

Zusätzliche Bedingungen einzufügen:

Eingabe (Zahl):

select * from mytable where id = 1 or id > 1 or name like ‘%‘??

Daten der Tabelle können ausgespäht werden.

Mögliche Gefahren

1 or id > 1 or name like ‘%‘

Dr. Karsten Tolle – PRG2 – SS 2018 29

Zusätzliche Statements einzufügen:

Eingabe (Zahl):

select * from mytable where id = 1; drop mytable; # ??

Direkter Schaden an der Datenbank, eventuell Ausfall

der Applikation.

Mögliche Gefahren

1; drop mytable; #

Dr. Karsten Tolle – PRG2 – SS 2018 30

Was möglich ist hängt ab von …

• DBMS / Verbindungsart / Programmiersprache/ Betriebssystem / …

– Erlaubt es mehrere SQL-Statements gleichzeitigauszuführen?

– Welche Zeichen werden als Kommentareinterpretiert? (z.B.: -- oder #)

– JDBC, ODBC, … ???

– Java, Php, Perl, …

Dr. Karsten Tolle – PRG2 – SS 2018 31

Vorgehen von Angreifern …

• Vorbereitung/Informationsgewinnung:… Suchmaschinen (Google)… spezielle Suchmaschinen (https://www.shodan.io/)

… Identifizierung von Honeypots

• … aktive Penetrationstests/Eindringversuche

Dr. Karsten Tolle – PRG2 – SS 2018 32

Gegenmaßnahmen• Positivlisten Methode – wurde eingegeben was man

erwartet?

• Negativlisten Methode – Ablehnung von Schlüsselwörtern

• Gegebene Funktion in PHP: mysql_real_escape_string()Sie Maskiert alle Zeichen mit denen man aus den Anführungszeichen ausbrechen kann.

• Kombination aller 3 ist die sicherste Variante.

• Anwendung diesbezüglich testen (und testen lassen!)

Siehe auch (für PHP):– http://php.net/manual/en/security.database.sql-injection.php

Sicherheit

Auf DBMS-Ebene

• Benutzer entsprechend anlegen

• Bereitstellung von Views

• Überwachung

• …

Auf Programmier-Ebene

• Wenig Infos nach Außen

• Mittel der verwendeten Prog. Sprache verwenden (z.B. PreparedStatement in Java oder Escape-Funktionen in PHP)

• Entsprechende Tests vorsehen

• Nicht erst am Ende an die Sicherheit denken

• …

Dr. Karsten Tolle – PRG2 – SS 2018 34

Literaturhinweise

• Advanced SQL Injection In SQL Server Applications von Chris Anley– http://www.cgisecurity.com/lib/advanced_sql_injection.pdf

– (more) http://www.encription.co.uk/downloads/more_advanced_sql_injection.pdf

• Advanced SQL Injection in MySQL (deutsch)– http://www.alirecaiyekta.com/uploads/Advanced-SQL-Injection-in-MySQL-GERMAN.pdf

• Irongeek - Adrian Crenshaw's Information Security site– http://www.irongeek.com/

– http://www.irongeek.com/i.php?page=mutillidae/mutillidae-deliberately-vulnerable-php-owasp-top-10Mutillidae: a free, open source web application provided to allow security enthusiest to pen-test and hack a web application.

Dr. Karsten Tolle – PRG2 – SS 2018 35

F = { Teil Lager Menge LageradresseLager Lageradresse }

vorrat (Teil Lager Menge Strasse Hausnr)

101 1 25 Waag. 10

102 3 410 Krugerstr. 42

102 1 300 Waag. 10

112 4 10 Brunnerstr. 105

F = { Teil Lager Menge Strasse HausnrLager Strasse Hausnr }

Dr. Karsten Tolle – PRG2 – SS 2018 36

1

Probleme:Redundanz – Lageradresse für jedes Teil im Lager

redundant gespeichert

Einfüge-Anomalie – Lager ohne Teile kann nicht eingefügt werden

Lösch-Anomalie – Lager ohne Teile würden gelöscht werden

vorrat (Teil Lager Menge Strasse Hausnr)

101 1 25 Waag. 10

102 3 410 Krugerstr. 42

102 1 300 Waag. 10

112 4 10 Brunnerstr. 105F = { Teil Lager Menge Strasse HausnrLager Strasse Hausnr }

Dr. Karsten Tolle – PRG2 – SS 2018 37

F = { Teil Lager Menge Strasse HausnrLager Strasse Hausnr }

Lösung: Zerlegung der Relation

vorrat (Teil Lager Menge)

101 1 25

102 3 410

102 1 300

112 4 10

lager (Lager Strasse Hausnr)

1 Waag. 10

2 RMS 10

3 Krugerstr. 42

4 Brunnerstr. 105

Fremdschlüssel

vorrat (Teil Lager Menge Strasse Hausnr)

101 1 25 Waag. 10

102 3 410 Krugerstr. 42

102 1 300 Waag. 10

112 4 10 Brunnerstr. 105

Dr. Karsten Tolle – PRG2 – SS 2018 38

Prim

Ein Attribut A heißt prim in R, wenn es in einem der Schlüssel von R enthalten ist, sonst heiße es nicht prim.

A ist prim

X: X ist Schlüssel, AX

Dr. Karsten Tolle – PRG2 – SS 2018 39

volle funktionale Abhängigkeit

Eine funktionale Abhängigkeit X Y heißt vollefunktionale Abhängigkeit, wenn für keine Teilmenge X´ X, X´ Y gilt. Y heißt dann voll funktional abhängig von X.

X Y voll funktional

X´ X : X´ Y

Dr. Karsten Tolle – PRG2 – SS 2018 40

Die 2. NF ist verletzt, wenn ein Teil eines Schlüssels ein Nicht-Schlüsselattribut funktional bestimmt.

2. Normalform

Ein Relationenschema R ist in 2. Normalform (2NF), wenn es in 1NF ist und jedes nicht prime Attribut voll funktional von jedem Schlüssel von R abhängig ist.

2. NF

A nicht prim Schlüssel A voll funktional

Dr. Karsten Tolle – PRG2 – SS 2018 41

F = { Teil Lager Menge Strasse HausnrLager Strasse Hausnr }

vorrat (Teil Lager Menge)

101 1 25

102 3 410

102 1 300

112 4 10

lager (Lager Strasse Hausnr)

1 Waag. 10

2 RMS 10

3 Krugerstr. 42

4 Brunnerstr. 105

vorrat (Teil Lager Menge Strasse Hausnr)

101 1 25 Waag. 10

102 3 410 Krugerstr. 42

102 1 300 Waag. 10

112 4 10 Brunnerstr. 105

nicht 2. NF

2. NF

Dr. Karsten Tolle – PRG2 – SS 2018 42

Vorgehen beim Prüfen auf NF (WICHTIG!!!)

Ausgangspunkt: Relation R (mind. 1. NF) und Menge der FDs gegeben.

1. Welche Schlüssel gibt es? was sind die nicht primen Attribute!

2. Prüfe auf 2. NF (voll funktional abhängig von ALLEN Schlüsseln?)

Dr. Karsten Tolle – PRG2 – SS 2018 43

Übung

R = (A, B, C, D, E)

a. FD = {ABD, CDAC, ED}

b. FD = {AEBD, CDAC, ED}

c. FD = {ACEBD, CDAC, ED}

d. FD = {ACEBD, CDAC, ED, BAC}

a. Schlüssel = {CE}b. Schlüssel = {AC, CD, CE}

Dr. Karsten Tolle – PRG2 – SS 2018 44

F = { Kennzeichen R, ZUGEL_GES_GEW FÜHRERSCHEIN}

Fahrzeug

Kennzeichen Zugel_Ges_Gew Führerschein

2. NF?

KENNZEICHEN ZUGEL_GES_GEW FÜHRERSCHEIN

F-AB 123 3.5 B

F-AB 234 7.5 C1

F-AB 235 7.5 C1

F-AB 236 12 C

F-AB 239 12 C

F-AB 230 17 C

… … …

Dr. Karsten Tolle – PRG2 – SS 2018 45

Trotzdem Probleme !

KENNZEICHEN ZUGEL_GES_GEW FÜHRERSCHEIN

F-AB 123 3.5 B

F-AB 234 7.5 C1

F-AB 235 7.5 C1

F-AB 236 12 C

F-AB 239 12 C

F-AB 230 17 C

… … …

Ist in 2. NF aber nicht in 3. NF!

Dr. Karsten Tolle – PRG2 – SS 2018 46

Auswirkungen!?

Entität_1

Attribute 1-n

A1 A2 … An Bi Ci

Evt. Erweitert um Beziehungsattribute(0,1) oder (1,1) oder sogar Attributeanderer Entitäten (bei 1-to-1 Bez.).

Normalisierung

MappingER rel. Model

Dr. Karsten Tolle – PRG2 – SS 2018 47

Normalisierung / Denormalisierung

• Normalisierung: Der Prozess des Aufspaltens von Relationen, um Anomalien/Redundanzen zu verhindern.

• Denormalisierung: Der Prozess des Zusammenlegens von Relationen, um Performanz zu gewinnen.