Seit dem Erscheinen der Oracle Datenbank 12c wurde eine Reihe von Security Features, die bisher Bestandteil der Advanced-Security-Option (ASO) waren, als Feature für die Datenbank verfügbar gemacht. Dies gilt für die Enterprise Edition und auch für die Standard Edition. Siehe auch Oracle icensing Guide.
SQL*NET MIT GERINGEM AUFWAND VERSCHLÜSSELN
Auf der Serverseite unter UNIX $ORACLE_HOME/network/admin, oder unter Windows %ORACLE_HOME%\network\admin folgende Einträge in der sqlnet.ora vornehmen:
### SQL*Net encryption ##################################
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (SHA1)
SQLNET.CRYPTO_CHECKSUM_SERVER = REQUIRED
SQLNET.CRYPTO_SEED="9iY3kcmwXdiZwXZypQ8g#_:*'!10aRtopRC#"
SQLNET.ENCRYPTION_TYPES_SERVER = (AES256)
SQLNET.ENCRYPTION_SERVER = REQUIRED
### SQL*Net encryption end ##############################
Die sqlnet.ora des/der Client/s wird nicht modifiziert.
Die Bedeutung der Werte im Einzelnen:
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER
mögliche Werte
- MD5 für den RSA Algorythmus
- SHA1 für den Secure Hash Algorythmus
SQLNET.CRYPTO_CHECKSUM_SERVER
- ACCEPTED - (Default) und bedeutet, dass die Verschlüsselung akzeptiert wird, wenn der Kommunikationspartner dies möchte.
- REJECTED - Die Verschlüsselung wird grundsätzlich abgelehnt.
- REQUESTED - Die Verschlüsselung wird gewünscht, aber nicht verlangt.
- REQUIRED - Die Verschlüsselung ist notwendig.
SQLNET.CRYPTO_SEED
Der Wert sollte aus 10 bis 70 Buchstaben, Zahlen und Sonderzeichen bestehen. SQLNET.CRYPTO_SEED ist notwendig für die Checksummenprüfung und die Verschlüsselung. Als default wird der Wert "qwertyuiopasdfghjkl;zxcvbnm,.s1" verwendet.
SQLNET.ENCRYPTION_TYPES_SERVER
Die zur Verfügung stehenden Verschlüsselungs Algorythmen sind:
- 3des112 for triple DES with a two-key (112-bit) option
- 3des168 for triple DES with a three-key (168-bit) option
- des for standard 56-bit key size
- des40 for 40-bit key size
- rc4_40 for 40-bit key size
- rc4_56 for 56-bit key size
- rc4_128 for 128-bit key size
- rc4_256 for 256-bit key size
SQLNET.ENCRYPTION_SERVER
- ACCEPTED - Die Verschlüsselung wird akzeptiert, wenn der Kommunikationspartner dies möchte.
- REJECTED - Die Verschlüsselung wird grundsätzlich abgelehnt.
- REQUESTED - Die Verschlüsselung wird gewünscht, aber nicht verlangt.
- REQUIRED - Die Verschlüsselung ist obligatorisch
Der Test:
Das Funktionieren der SQL*Net Verschlüsselung lässt sich ganz einfach überprüfen. Dazu wird in der sqlnet.ora das Tracing aktiviert.
Serverseitig:
DIAG_ADR_ENABLED=off
trace_level_server=16
trace_directory_server = /tmp/ora_trace
trace_file_server = srv
Clientseitig:
DIAG_ADR_ENABLED=off
trace_level_client=16
trace_directory_client = C:\tmp\ora_trace
trace_file_client = cli
Die Tracefiles unverschlüsselt
vom Server:
[03-MRZ-2014 13:41:20:734] nsprecv: packet dump
[03-MRZ-2014 13:41:20:734] nsprecv: 2F 73 65 6C 65 63 74 20 |/select.|
[03-MRZ-2014 13:41:20:734] nsprecv: 65 6E 61 6D 65 2C 20 73 |ename,.s|
[03-MRZ-2014 13:41:20:734] nsprecv: 61 6C 20 66 72 6F 6D 20 |al.from.|
[03-MRZ-2014 13:41:20:734] nsprecv: 65 6D 70 20 77 68 65 72 |emp.wher|
[03-MRZ-2014 13:41:20:734] nsprecv: 65 20 65 6E 61 6D 65 20 |e.ename.|
[03-MRZ-2014 13:41:20:734] nsprecv: 3D 20 27 4B 49 4E 47 27 |=.'KING'|
[03-MRZ-2014 13:41:20:734] nsprecv: 00 00 00 00 |.... |
[03-MRZ-2014 13:41:20:734] nsprecv: normal exit
vom Client:
[03-MRZ-2014 13:41:20:911] nsbasic_bsd: packet dump
[03-MRZ-2014 13:41:20:911] nsbasic_bsd: 2F 73 65 6C 65 63 74 20 |/select.|
[03-MRZ-2014 13:41:20:911] nsbasic_bsd: 65 6E 61 6D 65 2C 20 73 |ename,.s|
[03-MRZ-2014 13:41:20:911] nsbasic_bsd: 61 6C 20 66 72 6F 6D 20 |al.from.|
[03-MRZ-2014 13:41:20:911] nsbasic_bsd: 65 6D 70 20 77 68 65 72 |emp.wher|
[03-MRZ-2014 13:41:20:911] nsbasic_bsd: 65 20 65 6E 61 6D 65 20 |e.ename.|
[03-MRZ-2014 13:41:20:911] nsbasic_bsd: 3D 20 27 4B 49 4E 47 27 |=.'KING'|
[03-MRZ-2014 13:41:20:912] nsbasic_bsd: 00 00 00 00 |.... |
[03-MRZ-2014 13:41:20:912] nsbasic_bsd: exit (0)
Die Tracefiles verschlüsselt
vom Server:
[03-MRZ-2014 13:47:46:719] nspsend: packet dump
[03-MRZ-2014 13:47:46:719] nspsend: 2A 86 48 86 F7 12 01 02 |*.H.....|
[03-MRZ-2014 13:47:46:719] nspsend: 02 02 00 6F 81 88 30 81 |...o..0.|
[03-MRZ-2014 13:47:46:719] nspsend: 85 A0 03 02 01 05 A1 03 |........|
[03-MRZ-2014 13:47:46:719] nspsend: 02 01 0F A2 79 30 77 A0 |....y0w.|
[03-MRZ-2014 13:47:46:719] nspsend: 03 02 01 12 A2 70 04 6E |.....p.n|
[03-MRZ-2014 13:47:46:719] nspsend: 5E 9B EB EC 6B 37 CD FB |^...k7..|
[03-MRZ-2014 13:47:46:719] nspsend: A2 6F 08 21 6B 02 F8 33 |.o.!k..3|
[03-MRZ-2014 13:47:46:719] nspsend: 0A 2E E2 71 A3 33 FC BE |...q.3..|
[03-MRZ-2014 13:47:46:719] nspsend: 97 E8 70 C3 71 D6 98 F6 |..p.q...|
[03-MRZ-2014 13:47:46:719] nspsend: F5 F2 A2 48 47 67 E9 34 |...HGg.4|
[03-MRZ-2014 13:47:46:719] nspsend: 28 09 ED F1 10 93 3B 72 |(.....;r|
[03-MRZ-2014 13:47:46:719] nspsend: 8B A0 59 B5 F3 DA FE 7E |..Y....~|
[03-MRZ-2014 13:47:46:719] nspsend: 0A F8 EB AF D8 64 4C D9 |.....dL.|
[03-MRZ-2014 13:47:46:719] nspsend: 25 A8 19 41 E1 39 DD 9A |%..A.9..|
[03-MRZ-2014 13:47:46:719] nspsend: 4F CD 43 81 3A F2 57 4A |O.C.:.WJ|
[03-MRZ-2014 13:47:46:719] nspsend: 1E 1B 5D 68 03 0A 6B 6D |..]h..km|
[03-MRZ-2014 13:47:46:719] nspsend: 96 27 BC 43 05 E7 49 51 |.'.C..IQ|
[03-MRZ-2014 13:47:46:719] nspsend: AB D8 41 E9 6C AE BB 47 |..A.l..G|
[03-MRZ-2014 13:47:46:719] nspsend: FB C0 73 0E 72 37 |..s.r7 |
vom Client:
[03-MRZ-2014 13:47:46:998] nsprecv: packet dump
[03-MRZ-2014 13:47:46:998] nsprecv: 88 1B 3E A9 2A 2E D7 7E |..>.*..~|
[03-MRZ-2014 13:47:46:998] nsprecv: DB 19 32 AD BE E1 04 8D |..2.....|
[03-MRZ-2014 13:47:46:998] nsprecv: CF 5B 1D 4B 69 F2 75 4A |.[.Ki.uJ|
[03-MRZ-2014 13:47:46:998] nsprecv: 4F 9F 2E CE 5E 49 DC 13 |O...^I..|
[03-MRZ-2014 13:47:46:998] nsprecv: 9D 18 D9 16 9A 8E BE BB |........|
[03-MRZ-2014 13:47:46:998] nsprecv: 4C 79 78 F4 23 82 95 3A |Lyx.#..:|
[03-MRZ-2014 13:47:46:998] nsprecv: 53 6C DA B0 6E 47 92 68 |Sl..nG.h|
[03-MRZ-2014 13:47:46:998] nsprecv: 5D 1A 27 69 34 7E 96 A4 |].'i4~..|
[03-MRZ-2014 13:47:46:998] nsprecv: 84 A1 36 26 83 AC F2 8A |..6&....|
[03-MRZ-2014 13:47:46:998] nsprecv: 2D 70 59 03 DB 56 C2 76 |-pY..V.v|
[03-MRZ-2014 13:47:46:998] nsprecv: 9E DA 5E DB 4D E6 D9 7D |..^.M..}|
[03-MRZ-2014 13:47:46:998] nsprecv: 4D 2D 92 E1 89 54 57 3C |M-...TW<|
[03-MRZ-2014 13:47:46:998] nsprecv: B6 FA B1 09 68 4E 05 A0 |....hN..|
[03-MRZ-2014 13:47:46:998] nsprecv: 88 0B C1 87 BE 69 FD 9C |.....i..|
[03-MRZ-2014 13:47:46:998] nsprecv: 22 DE FD D0 DA 5E FF 03 |"....^..|
[03-MRZ-2014 13:47:46:998] nsprecv: B7 7F 53 F5 8B 88 35 6F |..S...5o|
[03-MRZ-2014 13:47:46:998] nsprecv: 7D FE 64 CF 71 82 C7 83 |}.d.q...|
[03-MRZ-2014 13:47:46:998] nsprecv: 0A AE B4 4B 98 C8 9E AC |...K....|
[03-MRZ-2014 13:47:46:998] nsprecv: 07 AE A0 55 5D 3A 76 BD |...U]:v.|
[03-MRZ-2014 13:47:46:998] nsprecv: 1A 3A A6 DF 2A EB AC 9F |.:..*...|
[03-MRZ-2014 13:47:46:998] nsprecv: D7 AB 13 6F 84 48 FC 81 |...o.H..|
[03-MRZ-2014 13:47:46:998] nsprecv: 54 76 E2 D0 D0 C2 69 7E |Tv....i~|
[03-MRZ-2014 13:47:46:998] nsprecv: DF D4 73 0D CB B6 88 C7 |..s.....|
[03-MRZ-2014 13:47:46:998] nsprecv: 38 3D 1B 24 9D FD BF 77 |8=.$...w|
[03-MRZ-2014 13:47:46:998] nsprecv: E2 3B F9 E8 19 5B B4 3D |.;...[.=|
[03-MRZ-2014 13:47:46:998] nsprecv: 19 7B FA C4 3C 27 7E D0 |.{..<'~.|
[03-MRZ-2014 13:47:46:998] nsprecv: 3C 5F B3 FB 79 36 FA 07 |<_..y6..|
[03-MRZ-2014 13:47:46:998] nsprecv: 99 BB EF 2E 7A D4 65 1B |....z.e.|
[03-MRZ-2014 13:47:46:998] nsprecv: B6 05 12 80 4C 70 6E C3 |....Lpn.|
[03-MRZ-2014 13:47:46:998] nsprecv: 3F C3 5C 76 74 4C 75 B0 |?.\vtLu.|
[03-MRZ-2014 13:47:46:998] nsprecv: 0D F8 F4 AD 6E 76 68 1D |....nvh.|
[03-MRZ-2014 13:47:46:998] nsprecv: 33 DF 3F E9 45 BF 5E D4 |3.?.E.^.|
[03-MRZ-2014 13:47:46:998] nsprecv: 87 4C 3A 03 0F C9 99 8E |.L:.....|
[03-MRZ-2014 13:47:46:998] nsprecv: 39 84 A1 5C B7 DD AD F7 |9..\....|
[03-MRZ-2014 13:47:46:998] nsprecv: A6 6D F2 C3 0B 74 18 04 |.m...t..|
[03-MRZ-2014 13:47:46:998] nsprecv: 4E D1 0A 01 |N... |
Fazit:
Die SQL*Net Verschlüsselung ist einfach einzurichten und es entstehen keine zusätzliche Kosten. Performanceunterschiede zwischen verschlüsselter und unverschlüsselter Datenübertragung sind nicht bekannt.
Sollten Sie Interesse an weiteren Sicherheitsfunktionen zu Oracle Datenbanken haben, besuchen Sie doch unseren Kurs Datenbank Security.