Auditing basics voor Oracle
Posted by Nieuwsfeed | Posted in Artikelen | Posted on 01-12-2010
Tags:auditing, oracle, whitebook
0
Helaas draaien er nog veel implementaties van Oracle zonder gebruik te maken van de standaard beschikbare audit tools. In andere omgevingen, waar dit wel het geval is, worden de verkeerde keuzes gemaakt. Dit Whitebook gaat dieper in op de maatregelen die u kunt treffen om uw installatie te beschermen tegen ongeautoriseerde toegang. Het biedt een handreiking naar een aantal bekende zwakheden in een Oracle omgeving en geeft een set van maatregelen die u kunt treffen om dit te voorkomen of in elk geval sneller te detecteren.
Introductie
Helaas draaien er nog veel implementaties van Oracle zonder gebruik te maken van de standaard beschikbare audit tools. In andere omgevingen, waar dit wel het geval is, worden de verkeerde keuzes gemaakt. Dit Whitebook gaat dieper in op de maatregelen die u kunt treffen om uw installatie te beschermen tegen ongeautoriseerde toegang. Het biedt een handreiking naar een aantal bekende zwakheden in een Oracle omgeving en geeft een set van maatregelen die u kunt treffen om dit te voorkomen of in elk geval sneller te detecteren.
Bekende problemen
Veel bedrijven maken gebruik van firewalls, intrusion detection systemen en diversen andere security tools om hun besturingssystemen of netwerk te bewaken. Ook binnen Oracle kunt u ongeautoriseerde toegang en misbruik van rechten detecteren met standaard auditing hulpmiddelen.
Iedere databaseomgeving zou moeten worden beschermd met een basis set van audit tools. Het absolute minimum is het bewaken van gebruikerstoegang en gebruik van systeemrechten. Helaas is hiermee de ‘gevoelige’ data nog niet beschermd. Veel voorkomende ‘fouten’ zijn onder andere:
- een onveilige TNS listener;
- zwakke wachtwoorden voor standaard accounts;
- het missen van essentiële security updates;
- onveilige code van een derde partij (PL/SQL packages).
Het schema (afkomstig van Red Database Security) hieronder geeft een beknopt overzicht van enkele bekende aanvallen die welke zelfs zonder dat de gebruiker in de database is ingelogd mogelijk zijn:
Figuur 1, aanvallen zonder authentificatie
Zelfs als alle audit functies binnen de database aan staan, is het belangrijk altijd de laatste beveiligings updates te installeren. Zo was het bijvoorbeeld in Oracle 10.2.0.2 mogelijk om meer rechten te krijgen door het uitvoeren van een redelijk eenvoudige exploit. In deze versie start Oracle het ‘alter session set nls’ commando op met SYS rechten. Door een eenvoudige aanpassing uit te voeren op het oraclient10.dll bestand, was het mogelijk DBA rechten te verkrijgen (zie figuur 2).
Figuur 2, oraclient10.dll exploit van oak.
Dit soort problemen wordt in de praktijk snel opgelost met security patches. Het is dus van groot belang deze altijd in de gaten te houden en indien relevant zo snel mogelijk door te voeren.
Audit tools
Veel van de bekende problemen zijn te verhelpen, of in ieder geval sneller te detecteren, door het gebruik van audit tools in uw Oracle database. Een aantal ‘best practices’ met het implementeren van een auditplan zijn:
- zet auditing aan voor alle database logins;
- log alle ‘failed login attempts’;
- zet auditing aan voor het gebruik van system privileges;
- zet auditing aan voor elke structurele verandering in de database;
- gebruik systeem level logging (bijvoorbeeld listner.log).
Daar naast is het wenselijk om waar mogelijk te kijken naar:
- Fine Grained Auditing (FGA);
- audit toegang en veranderingen aan kritieke data;
- overweeg het gebruik van externe audit tools zoals bijv. Guardium, AppRadar, AppDefend, Chakra, etc.
Het is belangrijk de log gegevens te analyseren. U kunt hier dagelijkse rapportages voor opstellen. Denk bijvoorbeeld ook aan procedures, wanneer u onregelmatigheden tegen komt.
Enkele voorbeelden
Als eerste moet auditing worden aangezet. Het onderstaande commando zorgt ervoor dat alle toegang door gebruikers, of dit succesvol is of niet, opgeslagen wordt.
Met het bovenstaande commando is auditing actief op de database voor de toegangscontrole. Helaas worden niet alle wijzigingen bijgehouden aan het schema. Wijzigingen aan bijvoorbeeld: tables, indexes, clusters, views, sequences, procedures, triggers, libraries, etc. worden (nog) niet opgeslagen.
Sommige gebruikers kunnen zelf auditing uitzetten en dus activiteiten in de database verbergen. Het onderstaande overzicht laat zien dat de standaard gebruikers MDSYS, CTXSYS en WKSYS in dit kader potentiële risico’s zijn.
Voor deze functies kunnen we ook auditing aanzetten. Een handige manier om dit te doen, is gebruik te maken van een spool file. Als alle commando’s klaar zijn, kunnen deze vervolgens uitgerold worden over de database:
Een andere optie is, om toegangsrechten van gebruikers direct te genereren uit de database. Hiervoor kunt u gebruik maken van de ‘view dba_sys_privs’ optie.
Deze instellingen zijn te controleren met het volgende commando:
Iedere keer dat een gebruiker nu toegang probeert te krijgen tot een database, zal de Oracle kernel controleren of er een audit record aangemaakt moet worden c.q. bijgewerkt moet worden ( of zoals in het voorbeeld; een sessie record ). De kernel zal een record genereren in een tabel (AUD$) met als eigenaar de SYS user. Deze is standaard te vinden onder de SYSTEM tables.
Notitie: Deze optie is mogelijk gevoelig voor Denial of Service aanvallen. Wanneer de SYSTEM tables vol lopen, kan de database gaan vastlopen. Zet daarom limieten op de grootte van deze tabel!
Met het volgende commando, is het mogelijk gedetailleerde connectie verzoeken te laten zien:
Ook is het mogelijk de ‘failed login attempts’ te bekijken doormiddel van de volgende optie:
Dit overzicht laat twee potentiele misbruiken zien. Gebruiker test3 heeft 4 maal geprobeerd in te loggen op de zelfde dag. Het kan zijn dat deze gebruiker zijn/haar wachtwoord is vergeten, maar er kan ook iemand geprobeerd hebben het wachtwoord te raden. Het volgende commando geeft wat meer informatie:
Het bovenstaande overzicht laat zien dat de gebruiker succesvol is ingelogd vanaf de zelfde terminal op dezelfde dag. Een te hoge waarde bij het aantal ‘failed login’ pogingen zou onderdeel uit kunnen maken van een dagelijkse security audit. Wanneer deze waarde oploopt, zou er nader onderzoek moeten volgen.
Een andere variatie op het bovenstaande commando, is het aantal pogingen door onbestaande gebruikers.
Het bovenstaande overzicht laat mogelijk misbruik zien. Deze pogingen zouden nader onderzocht moeten worden. Ook is het mogelijk de database te controleren op toegang op een ‘vreemd’ tijdstip ( bijvoorbeeld buiten kantooruren ). Dit kunnen natuurlijk batch verwerkingen zijn, maar het kan ook ongeautoriseerde toegang betekenen!
Het bovenstaande overzicht laat de connecties zien voor 8 uur ‘s morgens en na half 8 ‘s avonds. Alle verbindingen en in het bijzonder die van SYS en SYSTEM zouden nader onderzocht moeten worden op legitimiteit. Ook laat het overzicht een verbinding zien vanaf een potentiële vreemde host!
Conclusie
De audit tools van Oracle zijn erg krachtig, maar lijken soms erg complex. Als u de Oracle documentatie er op na slaat, ziet u dat er diversen strategieën zijn om uw databases te auditen.( Er zijn vele variaties op de bovengenoemde voorbeelden mogelijk! ).
In Oracle is het mogelijk praktisch alles te auditen binnen de Oracle RDBMS, maar dit kan voor uw organisatie wellicht geen gewenste situatie zijn. U zult dus moeten testen, welke audit opties geschikt zijn om in te zetten in uw organisatie. Hoewel het aanzetten van audit trails een enorme hoeveelheid informatie oplevert, is het noodzaak ook actie te ondernemen op deze informatie. Zorg voor een goede procedure, hoe om te gaan met eventueel misbruik!
Voor gedetailleerde auditing van uw databases, zou u gebruik kunnen maken van database triggers en fine grained auditing (FGA). Deze laatste opties zijn echter wat lastiger te implementeren, doordat hier aanvullend programmeer werk aan te pas komt. Overigens is de meeste informatie eenvoudige te beschermen, zonder uit te komen op ‘row-level’ audits:
En natuurlijk het belangrijke uitgangspunt:
Geef gebruikers niet meer rechten dan ze nodig hebben!
Referenties
- Hacking hardened Oracle Databases – Alexander Kornbrust (Red-Database-Security);
- Oracle Security step-by-step – A survival Guide for Oracle Security (Pete Finnigan);
- Oracle Security Handbook (Aaron Newman and Marlene Theriault).
bron: http://www.whitehorses.nl/whitebooks/2007/auditing-basics-voor-oracle















