U bent hier: Home > Blog > Database & extensies > Auditing met de log van de Oracle listener

Auditing met de log van de Oracle listener


Marcel-Jan Krijgsman, 18 november 2010

Oracle kent allerlei manieren om de gangen van gebruikers na te gaan. Met auditing kan men zien of iemand is ingelogd geweest, of iemand een ALTER PROCEDURE heeft uitgevoerd om een procedure te wijzigen en of iemand een update heeft gedaan op de salaristabel. Met Fine Grained Auditing kan men zelfs zien wie het salaris van de directeur gewijzigd heeft en wanneer.

In Oracle 11g staat auditing standaard aan op een aantal acties, waaronder inloggen. Maar op Oracle 10g databases of lager staat auditing standaard niet aan en is auditing zelden geïmplementeerd. Dus toen we gisteren een vraag kregen van een klant of we konden achterhalen of iemand de afgelopen 3 maanden ingelogd was geweest op een oudere Oracle versie, had ik enige twijfels of dat zou lukken.

In de database waren inderdaad geen audit-gegevens aanwezig. Maar er was een strohalm: de log van de listener. (Ja inderdaad, die log dient ergens voor). De listener log bevat namelijk ook informatie over alle logins, behalve die logins die niet via het Oracle Net protocol lopen. En aangezien de te zoeken persoon een gewone gebruiker was die geen toegang had tot de database server, hadden we een kans… tenzij de listener log geschoond was. Dat viel mee. We bleken logging te hebben vanaf mei 2005. Zo gaat dat met listener-logs. Ze staan uit of ze zijn ongemerkt gegroeid tot 500 Mb.

De listener-log is gewoonlijk te vinden in $ORACLE_HOME/network/log/listener.log. Het duurt wel even om een listener-log van 500 Mb in notepad te laden op een oude Windows server, kan ik u vertellen.

Hieronder is een voorbeeld van de listener-log. (De regels van de log zijn vaak erg breed, dus ze passen hier helemaal niet in het scherm.)

08-SEP-2010 08:23:39 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=service account))(COMMAND=STATUS)(ARGUMENTS=64)(SERVICE=service001)(VERSION=135296000)) * STATUS * 0
08-SEP-2010 08:24:20 * (CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=C:\orant\bin\ifrun60.EXE)(HOST=CLIENT211)(USER=user1234))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.150)(PORT=1362)) * establish * orcl * 0
08-SEP-2010 08:24:35 * (CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=C:\orant\bin\ifrun60.EXE)(HOST=CLIENT176)(USER=user8173))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.176)(PORT=1487)) * establish * orcl * 0
08-SEP-2010 08:24:39 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=service account))(COMMAND=STATUS)(ARGUMENTS=64)(SERVICE=service001)(VERSION=135296000)) * STATUS * 0
08-SEP-2010 08:24:51 * (CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=C:\orant\bin\ifrun60.EXE)(HOST=CLIENT211)(USER=user1234))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.150)(PORT=1413)) * establish * orcl * 0
08-SEP-2010 08:25:17 * (CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=c:\service-appl\applicatie-productie.exe)(HOST=SERVER075)(USER=SYSTEM))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.2)(PORT=2644)) * establish * orcl * 0
08-SEP-2010 08:25:39 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=service account))(COMMAND=STATUS)(ARGUMENTS=64)(SERVICE=service001)(VERSION=135296000)) * STATUS * 0
08-SEP-2010 08:26:01 * (CONNECT_DATA=(SERVICE_NAME=orcl.organisatie.nl)(CID=(PROGRAM=C:\appl\appl2\Applicatie.exe)(HOST=CLIENT200)(USER=user1234))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.139)(PORT=3499)) * establish * orcl.organisatie.nl * 0
08-SEP-2010 08:26:02 * (CONNECT_DATA=(SERVICE_NAME=orcl.organisatie.nl)(CID=(PROGRAM=C:\appl\appl2\Applicatie.exe)(HOST=CLIENT200)(USER=user1234))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.139)(PORT=3501)) * establish * orcl.organisatie.nl * 0

Stel dat we user8173 zoeken, dan kunnen we zien dat deze gebruiker ingelogd is geweest op 8 september om 08:24:35. Bingo! Gevonden. Wie had dat gedacht?

Maar goed: laten we de listener-log voortaan ongelimiteerd groeien? Schakelen we een extra disk (of lun) in voor deze log? Ik denk van niet. Als er een wens is om auditing op de database aan te zetten, zou ik toch voor database auditing kiezen. Dat biedt veel meer mogelijkheden.

1 reactie »

RSS feed voor reacties op dit bericht. TrackBack URL

Plaats reactie