Oracle Advanced Security Datenbank- Verbindungen per SSL

Größe: px
Ab Seite anzeigen:

Download "Oracle Advanced Security Datenbank- Verbindungen per SSL"

Transkript

1 Security SSL Oracle Advanced Security Datenbank- Verbindungen per SSL Autor: Christian Kutsch, MuniQSoft GmbH Verbindungsaufbau ist Vertrauenssache. Vertrauen ist gut, Kontrolle ist besser. Deshalb ermöglicht Oracle mit der Advanced-Security-Option bereits beim Verbindungsaufbau die sichere Authentifizierung der Kommunikationspartner. Das Prinzip ist einfach. Client und Server prüfen beim Verbindungsaufbau gegenseitig ihre Zertifikate und ermitteln so, ob sie füreinander vorgesehen sind. Das Verfahren verwendet eine Kombination aus privaten und öffentlichen Schlüsseln. Der private Schlüssel des Client heißt nachfolgend privkeyclient, der des Servers privkeyserver. Die öffentlichen Schlüssel werden entsprechend pubkeyclient und pubkeyserver genannt. Bei der Kontaktaufnahme übermittelt der Client seinen pubkeyclient an den Server, der Server übermittelt im Gegenzug seinen pubkeyserver an den Client. Der Client verschlüsselt nun jede Nachricht an den Server mit dem Schlüssel pubkeyserver. Um diese Nachrichten entschlüsseln zu können, wird das Schlüssel-Gegenstück privkey- Server benötigt, das nur der Server selbst kennt. Umgekehrt verschlüsselt der Server seine Nachrichten an den Client mit dem Schlüssel pubkeyclient. Entschlüsseln kann auch hier nur der Client selber, weil nur er über das passende Schlüssel-Gegenstück privkeyclient verfügt. Einen Schwachpunkt hat das Verfahren dennoch die Übertragung der öffentlichen Schlüssel. Wenn sich hier jemand einklinkt und den Schlüssel gegen seinen eigenen öffentlichen Schlüssel pubkeymiddleman auswechselt, kann er später damit die Nachrichten der Kommunikationspartner dekodieren, diese dann mit dem entsprechenden pubkeyclient bzw. pubkeyserver neu verschlüsseln und dann an die ursprünglichen Adressaten weiterleiten (manin-the-middle-attack. Diese würden das nicht bemerken. Es ist deshalb ganz wichtig, dass der Client zum Verschlüsseln seiner Nachrichten an den Server tatsächlich dessen pubkeyserver verwendet und nicht irgendeinen pubkey- Middleman. Umgekehrt muss sich auch der Server darauf 32 News Q

2 SSL Security Abbildung 1: Oracle Wallet-Manager Startbildschirm verlassen können, über den richtigen pubkeyclient zu verfügen, damit seine verschlüsselten Nachrichten auch wirklich geheim bleiben. Dazu werden die öffentlichen Schlüssel mit den Identitätsmerkmalen ihres Erzeugers (Client bzw. Server fest verknüpft. Die zu verknüpfenden Informationen werden in einem Dokument zusammengestellt und von einem vertrauenswürdigen Dritten, einer so genannten Certificate Authority (CA, unter Verwendung eines eigenen privaten Schlüssels privkeyca zu einem Zertifikat verschlüsselt. Der zugehörige pubkeyca ist allgemein zugänglich und dient der Dekodierung solcher Zertifikate. Jetzt ist prinzipiell jeder im Netz in der Lage, geschützte Zertifikate zu entschlüsseln, erstellen kann sie aber nur eine Certificate Authority. Lässt sich ein Zertifikat mit dem pubkeyca entschlüsseln, ist sichergestellt, dass es tatsächlich von einer CA verschlüsselt wurde und dass die darin enthaltenen Informationen (pubkey Client oder pubkeyserver auch tatsächlich vom Client bzw. vom Server kommen. Es gibt mehrere solcher Certificate Authorities im Internet. fische Oberfläche und wird unter Unix mit dem Befehl $ORACLE_HOME/bin/owm gestartet. Unter Windows findet man den Wallet-Manager unter Start -> Programme -> OracleHome -> IntegratedManagementTools -> WalletManager. Zur Speicherung der Wallets wird ein Verzeichnis benötigt. Dieses Verzeichnis wird im Wallet-Manager als Wallet-Standardverzeichnis eingetragen. Unter Windows können die Wallets alternativ in der Windows-Registry liegen. Beim ersten Start des Wallet-Manager sind bereits eine Reihe geschützter Zertifikate (trusted certificates gängiger Certificate- Authorities (VeriSign Inc., RSA Data Security Inc., GTE Corporation, Entrust.net enthalten. Diese TrustedCertificates enthalten den pubkeyca der jeweiligen Certification Authority. Bei Bedarf lassen sich weitere TrustedCertificates importieren. Testweise kann man hier auch ein selbst erstelltes Zertifikat eintragen. Das ist zu Testzwecken legitim, bietet für den Produktionseinsatz jedoch nicht die erforderliche Sicherheit. Zertifikate müssen bei einer CA angefordert werden. Im Wallet-Manager lassen sich Zertifikatanforderungen erstellen und in eine Datei exportieren. Dazu gibt man in einem Dialog die erforderlichen Identitätsattribute ein, die dann zu einem so genannten Distinguished Name (DN zusammengesetzt werden. Beispiel: CN=Kutsch.Christian, OU=Security, O=MuniQSoft GmbH, L=Unterhaching, ST=Bayern, C=DE Wie Oracle dieses Verfahren unterstützt Der erste Schritt ist die Bereitstellung geeigneter Behälter für solche Zertifikate. Sie heißen Wallets und werden über die Applikation "Wallet-Manager" verwaltet. Er hat eine gra- Abbildung 2: Ergebnis der Zertifikatanforderung News Q

3 Security SSL Nachdem Schlüsselgröße und Schlüsseltyp ausgewählt wurden, generiert der Wallet-Manager eine Zertifikatanforderung, ein so genanntes CertificateRequest. Dieses enthält den Distinguished Name und den zugehörigen öffentlichen Schlüssel und kann per Copy/Paste aus dem Wallet- Manager herauskopiert oder in eine Datei exportiert werden. Die Zertifikatanforderung wird nun per zur Zertifizierung an eine der Certificate Authorities (CA gesendet. Diese überprüft die darin enthaltenen Identitätsangaben (DN und sendet das mit ihrem privkeyca verschlüsselte Benutzer-Zertifikat zurück an den Einsender. Die Zertifizierung durch eine CA kann mit openssl auch simuliert werden. Dazu sind folgende Schritte erforderlich: 1. openssl-binaries für Windows herunterladen (z.b. von 2. PATH-Variable auf dieses Verzeichnis erweitern (z.b. C:\download\openssl\openssl-0.9.7i_exe 3. im Arbeitsverzeichnis einen Privaten Key erzeugen: openssl genrsa -out privkey.pem 2048 Ergebnis: : privkey.pem 4. eigenes CA -Zertifikat erzeugen: openssl req -new -x509 -key privkey.pem -out cacert.pem -days config openssl.cnf You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank Country Name (2 letter code [AU]:GE State or Province Name (full name [Some-State]:. Locality Name (eg, city []:. Organization Name (eg, company [Internet Widgits Pty Ltd]:. Organizational Unit Name (eg, section []:. Common Name (eg, YOUR name []:KUTSCH.CHRISTIAN Address []:. 5. Dieses Zertifikat im Wallet-Manager importieren (Start -> Programme-> OracleOraDB10ghome1 -> IntegratedManagementTools -> WalletManager und als geschütztes Zertifikat hinzufügen. 6. Request mit diesem neuen cacert.pem zertifizieren: openssl ca -config /etc/ssl/openssl.cnf -in request -out certified -cert cacert.pem verbose Die Parameter haben folgende Bedeutung: - /etc/ssl/openssl.cnf enthält openssl-konfigurationseinstellungen - request enthält die vom Wallet-Manager erzeugte Zertifikatanforderung - certified wird von openssl erstellt und enthält das Zertifikat, das später im Wallet-Manager importiert werden kann. - cacert.pem ist das Zertifikat aus Schritt 4 Die Ausgabe im Detail: Using configuration from openssl.cnf Loading 'screen' into random state - done 0 entries loaded from the database generating index message digest is md5 policy is policy_match next serial number is 01 Certificate Request: Data: Version: 0 (0x0 Subject: C=DE, ST=Bayern, L=Unterhaching, O=MuniQSoft, OU=A, 34 News Q

4 SSL Security CN=Kutsch.Christian Subject Public Key Info: Public Key Algorithm: rsaencryption RSA Public Key: (1024 bit Modulus (1024 bit: 00:c3:e0:c8:28:24:51:8f:54:55:d9:c7:73:d0:34: 42:80:a6:a3:cd:42:f7:9a:44:8f:83:64:09:c3:7d: 76:d3:d5:60:dd:b8:c1:50:9a:e0:82:27:87:b1:de: 43:ee:ad:b4:ae:91:4e:2b:7f:4c:fd:c3:ff:78:47: eb:6b:62:2b:0f:ba:86:bc:70:55:9f:c2:07:f7:2e: 3e:c0:d5:94:e3:19:2e:89:fe:79:45:9c:85:20:9f: 49:19:b8:f8:d8:ff:c7:da:ed:9d:da:99:6b:f3:5d: f9:6e:b1:12:c6:d1:e1:d9:70:33:1a:04:42:b9:1c: 32:2f:59:28:25:e4:13:07:99 Exponent: (0x10001 Attributes: a0:00 Signature Algorithm: md5withrsaencryption 7a:5a:c9:67:4b:fc:63:2c:24:39:f9:3d:62:02:74:82:6e:75: 44:5d:77:fe:14:24:65:bc:cb:0d:92:04:58:a5:8a:97:ae:43: c6:5f:0e:95:34:97:fd:42:eb:a5:86:54:38:96:7b:d9:9c:31: 6b:5c:b9:33:0d:46:2d:6f:9d:4b:3a:f9:01:a2:11:2c:c8:08: 70:c8:09:58:87:93:d4:96:bf:6c:29:f2:d8:51:47:6f:1e:6c: 45:92:58:e9:36:34:43:ea:73:8d:4c:df:8d:e8:65:35:00:47: 90:08:d8:4f:8f:35:8c:11:64:ec:47:e6:56:ea:90:f5:15:2a: 46:59 Check that the request matches the signature Signature ok The subject name appears to be ok, checking data base for clashes Everything appears to be ok, creating and signing the certificate Successfully added extensions from config Certificate Details: Serial Number: 1 (0x1 Validity Not Before: Oct 25 16:25: GMT Not After : Oct 25 16:25: GMT Subject: countryname = DE stateorprovincename = Bayern organizationname = MuniQSoft organizationalunitname = A commonname = Kutsch.Christian X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: D2:7B:2A:EE:50:48:B4:2D:C0:60:9F:1E:6E:76:6A:6B:00:B6:6D:6E X509v3 Authority Key Identifier: keyid:9b:2b:2e:dd:67:eb:bd:b1:7c:be:56:81:e2:24:b6:c3:5b:00:43:ec DirName:/C=DE/ST=Bayern/L=Muenchen/O=MuniQSoft/OU=Sicherheit/CN=Kutsch.Christian serial:86:9e:14:75:d9:ed:bc:34 Certificate is to be certified until Oct 25 16:25: GMT (365 days Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries writing new certificates writing./democa/newcerts/01.pem Data Base Updated Die generierte Datei certified enthält noch zusätzliche Header-Informationen, die der Wallet-Manager nicht verarbeiten kann und die deshalb vor dem Import entfernt werden müssen. Dazu separiert man den für die Übernahme des Zertifikats tatsächlich benötigten Teil (alle Zeilen von BEGIN CERTIFICATE bis END CERTIFICATE in eine neue Datei. Im Wallet-Manager wird nun mit "Benutzerzertifikat importieren" das Zertifikat aus dieser Datei übernommen und in den Status "Bereit" überführt. Die Benutzerzertifikate sind auf beiden Seiten (Client und Server mit dem Wallet- Manager zu importieren. Im nächsten Schritt ist die SSL- Konfiguration (Client und Server vorzunehmen. Dazu werden Wallet-Manager und Oracle Net Manager verwendet. News Q

5 Security SSL SSL-Konfiguration für den Server Zunächst ist im Wallet-Manager im Menü "Wallets" die automatische Anmeldung zu aktivieren. Dann wird der Oracle Net Manager (netmgr gestartet und dort der Button "Configure SSL for Server" angeklickt. Hier stellt man das zuvor verwendete Wallet-Standardverzeichnis ein. Durch Aufruf des Menüpunkts "Netzwerk-Konfiguration speichern" werden die Dateien sqlnet.ora und listener.ora aktualisiert. Um SSL für Client-Verbindungen zu benutzen, ist das Protokoll "TCP/IP with SSL" bei der Konfiguration des Listeners zu wählen. Die automatisch generierte Konfigurationsdatei des Listeners (listener.ora sieht dann folgendermaßen aus: # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc (ORACLE_HOME = /opt/oracle/product/10gr2 (PROGRAM = extproc (SID_DESC = (SID_NAME = orcl (ORACLE_HOME = /opt/oracle/product/10gr2 (GLOBAL_DBNAME = ORCL SSL_CLIENT_AUTHENTICATION = FALSE WALLET_LOCATION = (SOURCE = (METHOD = FILE (METHOD_DATA = (DIRECTORY = /etc/oracle/wallets/oracle LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC(KEY = EXTPROC1 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS(HOST = linux.site(port = 2484 SSL-Konfiguration für den Client Zunächst importiert man wie oben beschrieben die Benutzerzertifikate im Wallet. Danach werden in der Datei tnsnames.ora das Protokoll TCPS sowie der korrekten Port (z.b eingetragen. Beispiel für tnsnames.ora-eintrag: ORCL.LINUX = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS(HOST = (PORT = 2484 (CONNECT_DATA = (SERVER = DEDICATED (SERVICE_NAME = orcl (SECURITY= (SSL_SERVER_CERT_DN="cn=Kutsch,cn=Oracle Context,c=DE,o=MuniQSoft" Auch Client-seitig ist im Oracle Net Manager die SSL-Configuration anzuwählen und die verwendete Wallet-Loca- tion (Standardverzeichnis einzutragen. Diese Info landet beim Speichern der Netzwerkkonfiguration in der Konfigurationsdatei sqlnet.ora: # Generated by Oracle configuration tools. SQLNET.AUTHENTICATION_SERVICES= (BEQ, TCPS, NTS SSL_VERSION = 0 NAMES.DIRECTORY_PATH= (TNSNAMES, EZCON- NECT SSL_CLIENT_AUTHENTICATION = TRUE WALLET_LOCATION = (SOURCE = (METHOD = FILE (METHOD_DATA = (DIRECTORY = C:\download\wallets Vorausgesetzt, die Server-Firewall blockiert den gewählten Port (hier 2484 nicht, kann der Verbindungsaufbau wie gewohnt (z.b. mit sqlplus-client angestoßen werden. 36 News Q

6 SSL Security SQL> conn Connected. USER is "SYSTEM" INSTANCE HOST VERSION STARTUP_TIME orcl linux :49:22 Hinweis: Falls das Windows-System nicht über openssl verfügt, ist ein entsprechender Download z.b. unter sites.inka.de/ximera/hamster.html möglich. Fazit Die Authentifizierung von Client und Server beim Verbindungsaufbau wird von der Oracle Advanced Security unterstützt. Für den Umgang mit den diversen Zertifikaten ist die Kenntnis der beschriebenen Zusammenhänge hilfreich. Kontakt: Christian Kutsch DOAG-Umfrage Security rund um die Produktpalette von Oracle Wussten Sie, dass... 42% der Unternehmen*, die Oracle-Software einsetzen, derzeit Probleme bei der Umsetzung der Sicherheit haben? mehr als 60% der Unternehmen sich nicht ausreichend von Oracle über Sicherheitsrisiken und deren Beseitigung informiert fühlen? in vielen Unternehmen Probleme mit den von Oracle ein geführten vierteljährlichen Critical Path Updates (CPU bestehen? Das ergab die Analyse der DOAG-Umfrage zum Thema Security vom Juni Die Ergebnisse der Umfrage wurden im Rahmen eines Roundtables mit Repräsentanten von ORACLE Deutschland diskutiert. Lesen Sie in der nächsten Ausgabe der DOAG News die ausführliche Berichterstattung zu diesem Thema! * befragt wurden 156 Unternehmen News Q