44
1 DOAG Konferenz 2015 Enterprise Security mit LDAP und PKI Varianten der zentralen Benutzerverwaltung für Oracle Datenbanken

Enterprise Security mit LDAP und PKI - doag.org fileDOAG Konferenz 2015 1 Enterprise Security mit LDAP und PKI Varianten der zentralen Benutzerverwaltung für Oracle Datenbanken

  • Upload
    lamlien

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

1 DOAG Konferenz 2015

Enterprise Security mit LDAP und PKI Varianten der zentralen Benutzerverwaltung für Oracle Datenbanken

2 DOAG Konferenz 2015

databaseintelligence|opera1onsexcellence|bisolu1ons

„wegotheextramile“

Jan Schreiber, Pablo Stapff Loopback.ORG GmbH, Hamburg

3 DOAG Konferenz 2015

•  Oracle Architektur & Performance

•  Database Operations und Security

•  Data Warehouse und Business Intelligence

Loopback.ORG GmbH databaseintelligence|opera1onsexcellence|bisolu1ons

@LoopbackORG Blog:blogs.loopback.org

4 DOAG Konferenz 2015

Problemstellung

•  Die meisten Menschen können sich keine starken Passwörter merken

•  Leichte Passwörter sind einfach zu brechen

•  Aufgeschriebene Passwörter können in falsche Hände fallen

–  Dies gilt auch für Passwortmanager

•  Mehrfachbenutzung von Passwörtern erhöht das Risiko

•  Audit-Risiken, tatsächliche Privilegienverteilung oft unklar

•  "Wer verbirgt sich hinter diesem User?“

5 DOAG Konferenz 2015

6 DOAG Konferenz 2015

Regulatorische Vorgaben

•  Bundesdatenschutzgesetz (BDSG) •  Datenschutzverordnungen (DSVO) •  Landesdatenschutzgesetz (LDSG)

„Zugriffe, mit denen Änderungen an automatisierten Verfahren bewirkt werden können, dürfen nur den dazu ausdrücklich berechtigten Personen möglich sein. Die Zugriffe dieser Personen sind zu protokollieren und zu kontrollieren“ LDSG Schleswig-Holstein, §5 Abs. 2

7 DOAG Konferenz 2015

Was tun?

8 DOAG Konferenz 2015

Lösungsansatz #1: Zentrales Verzeichnis

•  Ist in der Regel im Unternehmen bereits vorhanden, zusätzlicher Administrationsaufwand entfällt

•  Eindeutige Benutzeridentifikation

•  Berechtigungsvergabe nur an einer Stelle

•  Keine Schattenkonten, sofortige Sperre möglich

•  1st Level-Support kann Passwörter verwalten

•  Compliance Reporting wird möglich

9 DOAG Konferenz 2015

Lösungsansatz #1a: Oracle Internet Directory als zentrales

Verzeichnis

DB FARM

OID

Anwender

(AUTH)

Windows (pGina) Anwendung XYZ

UNIX PAM Web-Anwendung

10 DOAG Konferenz 2015

•  Verwaltung von Klimaforschungsdaten

•  Bereits 2004 eingerichtet •  7 Datenbanken, 6500

internationale Anwender •  Identifikation per OID,

X.509 DFN-Zertifikate optional

EUS & OID im Deutschen Klimarechenzentrum

11 DOAG Konferenz 2015

OID-Anbindung und Enterprise User Security (EUS): Funktionsweise

Database client authentification

Leonard.Nimoy

(1) Connect Leonard. Nimoy/ BIGDB

EUS-enabled Oracle DB

BIGDB

Überprüft Passwort Hash,

ordnet User Rollen und Schema zu

(2) Request Leonard.Nimoy

(3) Returned Leonard.Nimoy

(4) Request Schema &

Enterprise Roles

(5) Returned Schema (SPOCK) & Enterprise Roles

Oracle Internet Directory

(OID)

Ablage für User, Rollen & EUS Konfiguration

(6) Logged in as SPOCK with ROLE SCIENCE_OFFICER

12 DOAG Konferenz 2015

Datenpflege mit ODSM

13 DOAG Konferenz 2015

TNS-Konfiguration für OID

cat $TNS_ADMIN/ldap.ora# ldap.ora Network Configuration File: \

/u01/app/11.2.0/grid/network/admin/ldap.ora# Generated by Oracle configuration tools.DIRECTORY_SERVERS= (linux4:3060:3131)DEFAULT_ADMIN_CONTEXT = "dc=loopback,dc=org"DIRECTORY_SERVER_TYPE = OID

WALLET_LOCATION= (SOURCE= (METHOD=file) (METHOD_DATA= (DIRECTORY=/u01/app/oracle/admin/loopds/wallet)))

14 DOAG Konferenz 2015

Registrieren der Datenbank

15 DOAG Konferenz 2015

Einrichtung der EUS-Mappings

eusm createMapping realm_dn="dc=loopback,dc=org" ldap_port=3060 ldap_host=oraldap1 ldap_user_dn="cn=orcladmin" ldap_user_password=XXX database_name="pkilab" map_type="ENTRY" map_dn="cn=test,cn=Users,dc=loopback,dc=org" schema=GLOBAL_CONNECT

16 DOAG Konferenz 2015

Anmeldung mit EUS

SYS@loopds1> create user global_ident identified globally;User created.SYS@loopds1> grant connect to global_ident; Grant succeeded.

oracle@zion ~]$ sqlplus test/geheimSQL*Plus: Release 11.2.0.4.0 Production on Sun Oct 14 11:53:38 2012Copyright (c) 1982, 2011, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionGLOBAL_IDENT@loopds1> show userUSER is "GLOBAL_IDENT"

17 DOAG Konferenz 2015

Lizenzkosten für EUS? •  EUS steht nur für die Enterprise Edition (EE), nicht für

die Standard-Edition zur Verfügung. Vor 11g erforderte der Einsatz von EUS die Lizenzierung der Advanced Security Option (ASO), seitdem heißt es:

•  "Usage of Enterprise User Security with Oracle Database strong authentication (PKI, Kerberos) no longer requires Oracle Advanced Security to be licensed. Strong authentication services (Kerberos, PKI, and RADIUS) and network encryption (native network encryption and SSL/TLS) are no longer part of Oracle Advanced Security and are available in all licensed editions of all supported releases of the Oracle database" (5)

18 DOAG Konferenz 2015

Lizenzkosten für OID? •  Die Lizenzierung von OID oder OUD erfordert eine "Directory Services Plus"-Lizenz,

die mit etwa $50k / pro Prozessor zu Buche schlägt, oder eine Lizenzierung im Rahmen von Fusion Middleware. Für die Verwendung ausschließlich als Verzeichnisdienst für Oracle-Datenbanken ist es allerdings nicht notwendig, OID separat zu lizensierten:

•  "A restricted-use license for Oracle Internet Directory (OID) is included with all editions (except for Oracle Database Express Edition) if users use the Directory Naming feature to configure Oracle Net Services. OID may not be used or deployed for other uses“

•  Diese Lizenz schließt die Verwendung als Identity Management Provider allerdings nicht mit ein. Ist OID separat lizensiert, ist der Betrieb einer Repository-Datenbank in der Lizenz enthalten.

19 DOAG Konferenz 2015

Verzeichnisanbindung #1b: Active Directory

20 DOAG Konferenz 2015

Synchronisation •  Keine AD-Schema-

änderungen nötig •  AD Agent muss auf AD-

Kontrollern laufen und Klartext-Passwörter mitlesen

Proxy: •  AD-Schema-

änderungen nötig •  Password Filter muss auf

AD-Controllern laufen •  AD Update Recht muss

vorhanden sein

Virtualisierung: •  Nur AD-Schemaänderung:

Orclcommonattribute •  Rollentrennung DBA/AD

OID Active Directory Verzeichnisintegration

DB FARM

OVD

Database Client

SqlPlus, Java, etc

(AUTH) Map Users,

Schema,Roles Hashes Groups

OID

DB FARM

Oracle OID

Database Client

SqlPlus, Java, etc

(AUTH)

Map Users, Schema,Roles

SYNC (DIP)

oidpwdcn.dll

DB FARM

OID

Database Client

SqlPlus, Java, etc

(AUTH)

Map Users, Schema,Roles

Hashes

Groups

oidpwdcn.dll

orclCommonAttribute

21 DOAG Konferenz 2015

AD-Integration mit Oracle Unified Directory (OUD) & Kerberos

DB FARM

OUD

Database Client

SqlPlus, Java, etc

(EUS)

Map Users, Schema,Roles

Groups

OracleContext

OUD Proxy Setup: •  Lesender AD-Benutzer •  Leserechte auf DB-

Usereinträge im AD •  Oracle Context im LDAP •  Software: OUD, WebLogic,

ADF •  Funktioniert auch mit EUS

[linux7 Oracle_OUD1]$ ./oud-proxy-setup [linux6]$ okinit testuser [linux7]$ oklist

KerberosTicket

22 DOAG Konferenz 2015

AD/Kerberos: Vorteile

•  In der (alten) UNIX-Welt erprobtes Protokoll •  Standard in Active Directory •  Starke, Token-basierte Authentifizierung •  Active Directory Schema muss nicht mehr

erweitert oder synchronisiert werden •  Single Sign On für DBA Umgebungen •  Auch Linux Server lassen sich „kerberisieren“

23 DOAG Konferenz 2015

ktpass -princ ORCL/db12c@PKILAB -mapuser test +rndPass -crypto all -ptype KRB5_NT_PRINCIPAL -out c:\keytab.db12c

[oracle ~]$ vi $ORACLE_HOME/network/admin/sqlnet.ora SQLNET.AUTHENTICATION_SERVICES= (BEQ, KERBEROS5) SQLNET.KERBEROS5_REALMS = /etc/krb5.realms SQLNET.KERBEROS5_CONF=/etc/krb5.conf SQLNET.KERBEROS5_KEYTAB=/etc/keytab.db12c SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=ORCL SQLNET.KERBEROS5_CONF_MIT=true SQLNET.FALLBACK_AUTHENTICATION = TRUE

Einrichtung von Kerberos

Sehrgutbeschriebenbei:http://cmuetzli.blogspot.de/2014/08/oracle-db-security-enterprise-user.html

24 DOAG Konferenz 2015

Lösungsansatz #2: PKI-Authentifizierung

PrivateKey PrivateKeyBenutzer / Applikation

Datenbank

Zertifizierungsstelle (CA)

User.csr

SSLHandshake

User/CACerts

DB.csr

DB/CACerts

25 DOAG Konferenz 2015

SSL-PKI: Vorteile

•  Verwendung von starker Kryptographie •  Einfache Integration von Zwei-Faktor-

Authentifizierung (das Zertifikat als „Something you have“)

•  Single Sign On •  Mehrfachnutzen: –  Auch im Betriebssystem mit Smartcards verwendbar

(Windows, OSX, Linux unterstützt) –  Auch für S/MIME E-Mail verwendbar

•  Offline-Funktion, Revocation List Abfrage optional

26 DOAG Konferenz 2015

PKI: Zertifikate und Wallets

Datenbank-Server

1.  Leeres Wallet erstellen

2.  Key und Zertifikat-Request stellen

3.  Request durch CA signieren lassen (Z.B. CN=db12c)

4.  CA Zertifikat importieren (CN=myCA)

5.  Signiertes Zertifikat importieren

Client

1.  Leeres Wallet erstellen

2.  Key und Zertifikat-Request stellen

3.  Request durch CA signieren lassen (Z.B. CN=jans)

4.  CA Zertifikat importieren (CN=myCA)

5.  Signierte Zertifikat importieren

27 DOAG Konferenz 2015

PKI: Server-Wallet

$ mkdir $ORACLE_BASE/admin/loopds/pki

$ orapki wallet create -wallet \ $ORACLE_BASE/admin/loopds/pki -auto_login -pwd XXX

$ orapki wallet add -wallet $ORACLE_BASE/admin/loopds/pki \ -dn 'CN=db12c' -keysize 2048 -pwd XXX

$ orapki wallet export -wallet $ORACLE_BASE/admin/loopds/pki \ -dn 'CN=db12c' \ -request ~/db12c.csr

$ orapki wallet add -wallet $ORACLE_BASE/admin/loopds/pki \ -cert myca.pem –trusted_cert –pwd XXX

$ orapki wallet add -wallet $ORACLE_BASE/admin/loopds/pki \ -cert db12c.pem –user_cert –pwd XXX

28 DOAG Konferenz 2015

PKI: Client-Wallet

$ orapki wallet create -wallet \ $ORACLE_HOME/owm/wallets/client -auto_login -pwd XXX

$ orapki wallet add -wallet $ORACLE_HOME/owm/wallets/client \

-dn 'CN=jans' -keysize 2048 -pwd XXX

$ orapki wallet export -wallet $ORACLE_HOME/owm/wallets/client \ -dn 'CN=jans' \ -request ~/jans.csr

$ orapki wallet add -wallet $ORACLE_HOME/owm/wallets/client \ -cert myca.pem –trusted_cert –pwd XXX

$ orapki wallet add -wallet $ORACLE_HOME/owm/wallets/client \ -cert jans.pem –user_cert –pwd XXX

29 DOAG Konferenz 2015

Display Wallet

[oracle@linux11 ~]$ orapki wallet display -wallet /u01/app/oracle/product/11.2.0/dbhome_1/network/pki Oracle PKI Tool : Version 11.2.0.3.0 - Production Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. Requested Certificates: User Certificates: Subject: CN=LOOPDS Trusted Certificates: Subject: OU=Class 1 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US Subject: CN=LBO Root Certificate II,OU=LoopCA,O=Loopback.ORG GmbH,O=Loopback.ORG,L=Hamburg,ST=No-State,C=DE Subject: OU=Secure Server Certification Authority,O=RSA Data Security\, Inc.,C=US Subject: CN=GTE CyberTrust Global Root,OU=GTE CyberTrust Solutions\, Inc.,O=GTE Corporation,C=US Subject: OU=Class 3 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US Subject: OU=Class 2 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US

30 DOAG Konferenz 2015

PKI: Listener-Konfiguration

SSL_CLIENT_AUTHENTICATION = FALSE WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = $ORACLE_BASE/admin/loopds/pki) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db12c.loopback.org)(PORT = 1521)) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS)(HOST = db12c.loopback.org)(PORT = 2484)) ) )

31 DOAG Konferenz 2015

PKI: TNS-Konfiguration

SQLNET.AUTHENTICATION_SERVICES= (BEQ, TCPS) NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME) SSL_CLIENT_AUTHENTICATION = TRUE WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = $ORACLE_BASE/admin/loopds/pki) ) )

32 DOAG Konferenz 2015

Anmeldung mit User/Passwort und SSL $ sqlplus user/pwd@DB12C Connected. SQL> select sys_context('USERENV', 'NETWORK_PROTOCOL') from dual; SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') ------------------------------------------------------------------------tcps SQL> select sys_context('USERENV', 'AUTHENTICATION_METHOD') from dual; SYS_CONTEXT('USERENV','AUTHENTICATION_METHOD') ------------------------------------------------------------------------PASSWORD

33 DOAG Konferenz 2015

PKI: Anmeldung mit Zertifikat

SQL> create user JANS identified externally as 'CN=jans'; SQL> grant create session to JANS; $ sqlplus /@DB12C Connected. SQL> select sys_context('USERENV', 'NETWORK_PROTOCOL') from dual; SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') --------------------------------------------------- tcps SQL> select sys_context('USERENV', 'AUTHENTICATION_METHOD') from dual; SYS_CONTEXT('USERENV','AUTHENTICATION_METHOD') ----------------------------------------------------- SSL

34 DOAG Konferenz 2015

35 DOAG Konferenz 2015

PKI: JDBC

•  Auch per JDBC kann SSL verwendet werden •  Integration auch über keytool

String url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)

(HOST=servernam e)(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=servicename)))"); Properties props = new Properties(); props.setProperty("user", "scott"); props.setProperty("password", "tiger"); props.setProperty("javax.net.ssl.trustStore",

"/truststore/ewallet.p12"); props.setProperty("javax.net.ssl.trustStoreType","PKCS12");

props.setProperty("javax.net.ssl.trustStorePassword","welcome123"); Connection conn = DriverManager.getConnection(url, props);

http://www.oracle.com/technetwork/topics/wp-oracle-jdbc-thin-ssl-130128.pdf

How to configure Oracle SQLDeveloper to use a SSL connection that was configured as per Note 401251.1

36 DOAG Konferenz 2015

Be a Certificate Authority (CA)

•  Externer Dienstleister? •  Es gibt verschiedene kommerzielle Produkte

–  Auch Open Source: •  EBJCA •  OpenXPKI

•  Alle Schritte sind in OpenSSL implementiert –  Nicht mit selbstsignierten Zertifikaten zu verwechseln

openssl genrsa -out rootCA.key 2048

openssl req -x509 -new -nodes -key rootCA.key -days 1024 -out rootCA.pem openssl ca -policy policy_anything -config loopca-url.cnf -out Certs/$1.pem\

-infiles Reqs/$1.req

37 DOAG Konferenz 2015

38 DOAG Konferenz 2015

Certificate Chaining

39 DOAG Konferenz 2015

PKI mit Smartcards

•  Authentifizierung an Besitz der Karte gekoppelt

•  Zertifikat kann nicht kopiert werden

•  Vorraussetzung: Kartenleser, Middleware, PKI und Smartcards müssen miteinander kompatibel sein

•  Ansonsten wie bei SSL-Wallets

40 DOAG Konferenz 2015

Smartcard-PKI: Client-Konfiguration

orapki wallet p11_add -wallet <Wallet PFAD> \

-p11_lib <DLL PFAD>

•  Middleware im Wallet verankern

•  Middleware muss PKCS#11 implementieren

•  Oracle liefert keine Liste kompatibler Hardware

•  SmartCard-Einführung hat Projektcharakter

41 DOAG Konferenz 2015

Public Key Cryptography Standards (PKCS)

42 DOAG Konferenz 2015

Smartcard und Oracle Wallet

orapki wallet p11_verify -wallet . pkcs11_wallet -pwd XXX

Oracle PKI Tool : Version 11.2.0.4.0 – Production

Number of certificates found on token = 1

Cert with subject name: CN=Stapff Pablo has a matching private key on token.

Cert with subject name: CN=Stapff Pablo installed as user cert in wallet.

43 DOAG Konferenz 2015

Zusammengefasstes •  Eine LDAP-Anbindung ist mit überschaubarem Aufwand

realisierbar. Lizenzkosten für OID oder OUD müssen allerdings berücksichtigt werden.

•  Die Verzeichnis-Anbindung macht in der Regel nur zusammen mit Enterprise User Security (EUS) Sinn.

•  Active Directory Anbindung wird in der Praxis wahrscheinlich nur mit Kerberos & OUD zu realisieren sein.

•  Die Verwendung von SSL-Zertifikaten ist eine kostengünstige und mächtige Möglichkeit, die vor allem in Zusammengang mit einer unternehmensweiten PKI Sinn macht.

•  Die Implementierung aller vorgestellen Lösungen ist in der Praxis etwas komplexer als in der Theorie.

44 DOAG Konferenz 2015

Vielen Dank für Ihr Interesse.