447
Kapitel 19
Erweiterte Sicherheitsthemen
Nachdem Sie in Kapitel 11 die Grundlagen der Oracle-Datenbanksicherheit ken-
nengelernt haben, werden im vorliegenden Kapitel weitere Sicherheitsmaß-
nahmen vorgestellt sowie interne Details erläutert. Es wird aufgezeigt, wie
Hackerangriffe erfolgreich abgewehrt werden können. Darüber hinaus beschäftigt
sich das Kapitel mit dem Thema »Datenbankaudits«.
Wenn man die Sicherheit der Datenbank im Auge hat, dann kann vordergründig
mit Zugriffskontrolle und Auditing ein hohes Maß an Sicherheit erreicht werden.
Dabei sollten Sie nie außer Acht lassen, dass Datenbanken häufig Teil einer kom-
plexen Infrastruktur sind. Zusätzlich hat Oracle die Funktionalität mit jeder neuen
Version ständig erweitert und liefert Produkte mit aus, die auf Betriebssystem-
komponenten wie Dateisysteme oder Netzwerk zugreifen. Jedes Feature wird
durch PL/SQL-Pakete unterstützt, von denen einige EXECUTE-Privilegien nach
PUBLIC vergeben haben. Damit hat jeder Benutzer der Datenbank dieselben
Rechte wie der Betriebssystembenutzer oracle, unter dem die Datenbankprozesse
laufen. Oracle hat auf dieses Problem reagiert und bietet im Bereich Netzwerk
eine zusätzliche Sicherheitskomponente an.
19.1 Netzwerksicherheit
Auch in der Version 12c wurden standardmäßig für eine Reihe von SQL-Paketen
Ausführungsrechte auf den Benutzer »PUBLIC« gelegt. Besonders gefährlich
scheinen daher Pakete, die Schnittstellen im Bereich Netzwerk bedienen und
Zugriffe auf Netzwerkdienste erlauben. Um eine missbräuchliche Verwendung zu
verhindern, wurde für diese Pakete eine feinmaschige Zugriffskontrolle in Form
einer Access Control List (ACL) geschaffen. Die Netzwerk-ACL kann auf folgende
Pakete angewandt werden:
UTL_HTTP
UTL_TCP
UTL_SMTP
UTL_MAIL
UTL_INADDR
Diese Pakete waren bis zur Version 10g sehr anfällig gegen Hackerangriffe und
Viren. Auch wenn der Begriff »Viren« im Zusammenhang mit Oracle-Datenban-
Kapitel 19
Erweiterte Sicherheitsthemen
448
ken und UNIX-Betriebssystemen nicht sehr geläufig ist, bleibt festzustellen, dass
solche Attacken nicht auszuschließen sind. Ein Beispiel ist der Voyager Worm aus
dem Jahr 2005, der in mehreren Facetten aufgetreten ist und unter anderem
Sicherheitslücken im Paket UTL_TCP ausgenutzt hat.
Wenn Sie sich die Out-of-the-box-Sicherheit für diese Pakete anschauen, werden
Sie feststellen, dass die angesprochenen Pakete EXECUTE-Privilegien für PUB-
LIC besitzen.
Die erste Maßnahme zur Erhöhung der Sicherheit ist, diese Privilegien zurückzu-
ziehen. Weisen Sie stattdessen individuelle Rechte auf Datenbank-Accounts zu.
Das Erstellen der Access Control List besteht aus zwei Schritten. Im ersten Schritt
wird die ACL erstellt, und es werden die Privilegien zugewiesen. Danach wird sie
mit Netzwerkknoten verknüpft.
Das Erstellen der ACL erfolgt mit dem Paket DBMS_NETWORK_ACL_ADMIN.
Wenn noch keine ACL existiert, muss die Prozedur CREATE_ACL verwendet wer-
den. Im Folgenden werden mit der Prozedur ADD_PRIVILEGE weitere Rechte
zugewiesen.
Den Accounts in der ACL können die folgenden zwei Privilegien zugewiesen wer-
den:
SQL> SELECT grantee, table_name, privilege
2 FROM dba_tab_privs
3 WHERE table_name IN
4 ('UTL_HTTP','UTL_TCP','UTL_SMTP','UTL_MAIL','UTL_INADDR');
GRANTEE TABLE_NAME PRIVILEGE
------------ ------------ ----------
PUBLIC UTL_TCP EXECUTE
PUBLIC UTL_SMTP EXECUTE
PUBLIC UTL_INADDR EXECUTE
PUBLIC UTL_HTTP EXECUTE
PUBLIC UTL_INADDR EXECUTE
Listing 19.1: Ausführungsrechte von Netzwerkpaketen
SQL> REVOKE EXECUTE ON utl_tcp FROM PUBLIC;
Benutzerzugriff wurde aufgehoben (Revoke).
SQL> REVOKE EXECUTE ON utl_smtp FROM PUBLIC;
Benutzerzugriff wurde aufgehoben (Revoke).
SQL> REVOKE EXECUTE ON utl_inaddr FROM PUBLIC;
Benutzerzugriff wurde aufgehoben (Revoke).
SQL> REVOKE EXECUTE ON utl_http FROM PUBLIC;
Benutzerzugriff wurde aufgehoben (Revoke).
SQL> REVOKE EXECUTE ON utl_inaddr FROM PUBLIC;
Benutzerzugriff wurde aufgehoben (Revoke).
Listing 19.2: Die PUBLIC zugewiesenen Rechte der Netzwerkpakete entfernen
19.1
Netzwerksicherheit
449
CONNECT. Erlaubt den Zugriff auf ein externes Netzwerk mit den UTL-Pake-
ten.
RESOLVE. Schließt das Recht ein, das Paket UTL_INADDR für die Auflösung
von Hostnamen zu verwenden.
Im Folgenden wird dem Account MITP das CONNECT-Privileg zugewiesen. Da
noch keine ACL existiert, muss die Prozedur CREATE_ACL verwendet werden.
Sobald die ACL erstellt ist, können mit der Prozedur »ADD_PRIVILEGE« weitere
Rechte zugewiesen werden.
Schließlich muss die ACL den Netzwerkknoten zugewiesen werden, für die sie
aktiviert werden soll.
Oracle stellt die folgenden Views zur Verfügung, um ACL-Einträge abzufragen:
SQL> BEGIN
2 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(acl=>'mitp_acl.xml',
3 description=>'test_acl', principal=>'MITP', is_grant=>TRUE,
4 privilege=>'connect');
5 END;
6 /
PL/SQL-Prozedur erfolgreich abgeschlossen.
SQL> BEGIN
2 DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl=>'mitp_acl.xml',
3 principal=>'MITP', is_grant=>TRUE, privilege=>'resolve');
4 END;
5 /
PL/SQL-Prozedur erfolgreich abgeschlossen.
SQL> BEGIN
2 DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl=>'mitp_acl.xml',
3 host=>'serv7.dbexperts.com');
4 END;
5 /
PL/SQL-Prozedur erfolgreich abgeschlossen.
SQL> SELECT host, acl
2 FROM dba_network_acls;
HOST ACL
------------------------- -------------------------
serv7.dbexperts.com /sys/acls/mitp_acl.xml
SQL> SELECT principal, privilege, is_grant
2 FROM dba_network_acl_privileges;
PRINCIPAL PRIVILEGE IS_GR
-------------------- ---------- -----

Get Oracle 12c - Das umfassende Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.