63
Keep them out of the database !

the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Keep them out of the database !

Page 2: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

<add screenshot of the message here>

It all started on Twitter :

Page 3: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Martin Berger

Oracle DBA since 2000

@[email protected]

http://berxblog.blogspot.com

xxx

xxx

Page 4: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

xxx

xxx

Flora Barriele

8 years in IT, 3 years DBAFrench living in Switzerland

@floo_barhttps://floobar0.wordpress.com

Page 5: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Ask network admins to filter with firewall ?

Page 6: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Ask network admins to filter with firewall ?

Page 7: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Ask network admins to filter with firewall ?

Use a dedicated listener for each instance ?

Page 8: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Ask network admins to filter with firewall ?

Use a dedicated listener for each instance ?

600+ databases65 hosts

Page 9: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

How to handle the situation better ?

Page 10: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

How to handle the situation better ?

U - R - D

Page 11: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

◈ Understand your ecosystem⬦ Example :

Splunk + listener.log =

How to handle the situation better ?

Page 12: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

cool_svc 1.2.3.4nice_svc 4.3.2.1

Page 13: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

host1 host2 host3 host4 host5 host6 host7 host8 host9 host10

host1 host2 host3 host4 host5 host6 host7 host8 host9 host10

host1 host2 host3 host4 host5 host6 host7 host8 host9 host10

cool_svc

nice_svc

cool_svcnice_svc

Page 14: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

◈ … and most important :

Choose a solution that fits your needs

How to handle the situation better ?

Page 15: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

What’s the problem ?

Page 16: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports
Page 17: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Connection Manager

1

Page 18: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Connection Manager

Page 19: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Connection Manager

rules:✔ ...⛔...✔...

Page 20: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Connection Manager

rules:✔ ...⛔...✔...

Page 21: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Example: connection refused◈ rules

⬥ (rule=(src=oracledev)(dst=127.0.0.1)(srv=cmon)(act=accept))

◈ errors⬥ reject ⬥ drop ⬥ no service

Page 22: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Example: connection refused◈ rules

⬥ (rule=(src=oracledev)(dst=127.0.0.1)(srv=cmon)(act=accept))

◈ errors⬥ reject - ⬥ drop - ⬥ no service -

⬦ src & dst: hostname or net/mask⬦ srv: service⬦ act: accept, reject, drop

Page 23: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Example: connection refused◈ rules

⬥ (rule=(src=oracledev)(dst=127.0.0.1)(srv=cmon)(act=accept))

◈ errors⬥ reject - ⬥ drop - ⬥ no service -

⬦ src & dst: hostname or net/mask⬦ srv: service⬦ act: accept, reject, drop

ORA-12529: TNS:connect request rejected based on current

ORA-12537: TNS:connection closed

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

Page 24: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

High Availability

rules:✔ ...⛔...✔...

rules:✔ ...⛔...✔...

Page 25: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

High Availability◈ tnsnames.ora

⬥ net_service_name=(DESCRIPTION= (ADDRESS_LIST= (LOAD_BALANCE=on) ADDRESS=((PROTOCOL=tcp)(HOST=cman1)(PORT=1521)) ADDRESS=((PROTOCOL=tcp)(HOST=cman2)(PORT=1521)) ) (CONNECT_DATA=(SERVICE_NAME=DB1)) )

Page 26: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Database Firewall Service - ACL

2

Page 27: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Concept

Waldo svc Odlaw svc

Page 28: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Concept

Waldo svcACL :✔ ...⛔...✔...

Odlaw svcACL :⛔ ...⛔...✔...

Page 29: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Concept

Waldo svcACL :✔ ...⛔...✔...

Odlaw svcACL :⛔ ...⛔...✔...

Page 30: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Concept

Waldo svcACL :✔ ...⛔...✔...

Odlaw svcACL :⛔ ...⛔...✔...

Page 31: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Example : PDB protection◈ Trying to connect with an unauthorized IP ...

Page 32: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Example : PDB protection◈ Trying to connect with an unauthorized IP ...

ORA-12506: TNS:listener rejected connection based on service ACL filtering

Page 33: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Why use ACL ?◈ Fine-grained access control on each DB/PDB

but◈ Decentralized management

Page 34: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Logon triggers

3

Page 35: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Concept

Page 36: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Concept◈ User hostname / OS username◈ OS Terminal◈ User Application Module◈ User IP Address

Page 37: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

◈ Have a map table to describe what is allowed

Concept◈ User hostname / OS username◈ OS Terminal◈ User Application Module◈ User IP Address

Page 38: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

◈ Have a map table to describe what is allowed

Concept

◈ Create a trigger to check if conditions are met before allowing connection

◈ User hostname / OS username◈ OS Terminal◈ User Application Module◈ User IP Address

Page 39: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

CREATE OR REPLACE TRIGGER TRG_FILTER_LOGON

AFTER LOGON ON DATABASE

[...]

BEGIN

[... perform checks from map table and insert result into V_CHECK ...]

IF (V_CHECK <> 0)

THEN

NULL; --OK

ELSE

RAISE_APPLICATION_ERROR(-20000, 'YOU ARE NOT AUTHORIZED TO LOGIN WITH THIS USERNAME. PLEASE CONTACT YOUR SECURITY MANAGER.');

END IF;

[...]

END;

/

Page 40: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

but

and

Why use logon triggers ?

Page 41: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

but

and◈ Don’t forget to log rejections

Why use logon triggers ?

Page 42: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

but◈ Decentralized management too

and◈ Don’t forget to log rejections

Why use logon triggers ?

Page 43: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

◈ Works with older database versionsbut

◈ Decentralized management too and◈ Don’t forget to log rejections

Why use logon triggers ?

Page 44: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Audit & reports

4

Page 45: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Audit

Page 46: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Auditconventional

logon

users manager

Page 47: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Auditconventional unified

(since 12.1, but don’t use < 12.2!

logon logoffdml

users manager application managersecurity manager

Page 48: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

Connection Manager + ACL

5

Page 49: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

CMAN + ACL

Looks like we are on the right track ...

Page 50: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

ACL :✔cman

ACL :✔cman

ACL :✔cman

ACL :✔cman

CMAN✔…….⛔…….✔…….✔…….⛔…….

Page 51: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

ACL :✔cman

ACL :✔cman

ACL :✔cman

ACL :✔cman

CMAN✔…….⛔…….✔…….✔…….⛔…….

CMAN✔…….⛔…….✔…….✔…….⛔…….

CMAN✔…….⛔…….✔…….✔…….⛔…….

VIP

Page 52: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

ACL :✔cman

ACL :✔cman

ACL :✔cman

ACL :✔cman

CMAN✔…….⛔…….✔…….✔…….⛔…….

CMAN✔…….⛔…….✔…….✔…….⛔…….

Page 53: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

ACL :✔cman

ACL :✔cman

ACL :✔cman

ACL :✔cman

CMAN✔…….⛔…….✔…….✔…….⛔…….

Page 54: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

◈ DBAs ?

... but who takes decision about security policies ?

Page 55: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

◈ DBAs ?

... but who takes decision about security policies ?

Page 56: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

◈ Give the responsibility back to the security team⬥ Example with :

Security policies management

Page 57: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

ACL :✔cman

ACL :✔cman

ACL :✔cman

ACL :✔cman

CMAN✔…….⛔…….✔…….✔…….⛔…….

Page 58: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

ACL :✔cman

ACL :✔cman

ACL :✔cman

ACL :✔cman

CMAN✔…….⛔…….✔…….✔…….⛔…….

Map table…. ….…. ….…. ….…. ….

Page 59: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

ACL :✔cman

ACL :✔cman

ACL :✔cman

ACL :✔cman

CMAN✔…….⛔…….✔…….✔…….⛔…….

Map table…. ….…. ….…. ….…. ….

Page 60: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

◈ From this ...

Map table example

(rule_list=

(rule=(src=1.2.3.4/16)(dst=destinationHost1)(srv=cool_svc)(act=accept))

(rule=(src=5.6.7.8/16)(dst=destinationHost2)(srv=nice_svc)(act=accept))

(rule=(src=privilegedServer)(dst=destinationHost3)(srv=*)(act=accept))

[...]

(rule=(src=*)(dst=*)(srv=*)(act=reject))

)

Page 61: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

◈ To this ...

Map table example

Page 62: the database ! Keep them out of · Works with older database versions but Decentralized management too and Don’t forget to log rejections Why use logon triggers ? Audit & reports

◈ Centralised deployment on CMANs only◈ Simple config on all DB servers ◈ Know your environment before implementing◈ Keep your solution(s) as simple as possible◈ There is not one solution “to rule them all”◈ Techies … must juggle a lot of non-tech problems

Remember ...