Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Enterprise Security mit LDAP und PKI

Enterprise Security mit LDAP und PKI

Avatar for JanSchreiber

JanSchreiber

September 22, 2015

More Decks by JanSchreiber

Other Decks in Technology

Transcript

  1. 1 DOAG Security Day database  intelligence  |  opera1ons  excellence  |

     bi  solu1ons   „we  go  the  extra  mile“   Jan Schreiber, Pablo Stapff Loopback.ORG GmbH, Hamburg
  2. 2 DOAG Security Day •  Oracle Architektur •  Data Warehouse

    und Business Intelligence •  Database Security loopback.org GmbH
  3. 3 DOAG Security Day Enterprise Security mit LDAP und PKI

    Varianten der zentralen Benutzerverwaltung für Oracle Datenbanken
  4. 4 DOAG Security Day 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 •  Mehrfachbenutzung von Passwörtern erhöht das Risiko •  Audit-Risiken, tatsächliche Privilegienverteilung oft unklar •  "Wer verbirgt sich hinter diesem User?“
  5. 6 DOAG Security Day 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
  6. 7 DOAG Security Day 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 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 OUD Database Client SqlPlus, Java, etc (AUTH) Map Users, Schema,Roles Hashes Groups oidpwdcn.dll orclCommonAttribute
  7. 8 DOAG Security Day Oracle Internet Directory, Oracle Unified Directory

    als zentrales Verzeichnis DB FARM OID Anwender (AUTH) Windows (pGina) Anwendung XYZ UNIX PAM Web-Anwendung
  8. 9 DOAG Security Day •  Verwaltung von Klimaforschungsdaten •  Bereits

    2004 eingerichtet •  7 Datenbanken, 6500 internationale Anwender •  Identifikation per OID, X.509 DFN-Zertifikate optional EUS & OID im Deutschen Klimarechenzentrum
  9. 10 DOAG Security Day OID-Anbindung: 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
  10. 12 DOAG Security Day 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)))
  11. 14 DOAG Security Day 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
  12. 15 DOAG Security Day 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/geheim SQL*Plus: Release 11.2.0.4.0 Production on Sun Oct 14 11:53:38 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production GLOBAL_IDENT@loopds1> show user USER is "GLOBAL_IDENT"
  13. 16 DOAG Security Day Lösungsansatz #2: PKI-Authentifizierung Private  Key  

    Private  Key   Benutzer / Applikation Datenbank Zertifizierungsstelle (CA) User   .csr   SSL  Handshake   User/CA   Certs   DB   .csr   DB/CA   Certs  
  14. 17 DOAG Security Day 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
  15. 18 DOAG Security Day 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
  16. 19 DOAG Security Day 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 \ jans.csr \ -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
  17. 20 DOAG Security Day 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
  18. 21 DOAG Security Day 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)) ) )
  19. 22 DOAG Security Day 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) ) )
  20. 23 DOAG Security Day 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
  21. 24 DOAG Security Day 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
  22. 25 DOAG Security Day 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  
  23. 26 DOAG Security Day 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
  24. 27 DOAG Security Day 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
  25. 28 DOAG Security Day 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
  26. 29 DOAG Security Day 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.