Gentoo Logo

1.  Aide (Advanced Intrusion Detection Environment)

Aide is een hostgebaseerde IDS (vrij alternatief voor Tripwire). Indien je Tripwire kent dan zou je geen moeilijkheden mogen hebben met de configuratie van Aide.

Het configuratiebestand is gebaseerd op reguliere expressies, macros en regels voor bestanden en directories. We hebben de volgende macro's:

Macro Uitleg Syntax
ifdef Indien gedefinieerd @@ifdef "name"
ifndef Indien niet gedefinieerd @@ifndef "name"
define Definieer een variabele @@define "name" "value"
undef Undefinieer een variabele @@undef "name"
ifhost Indien "hostname" @@ifhost "hostname"
ifnhost Indien niet "hostname" @@ifnhost "hostname"
endif Endif moet gebruikt worden na alle macro's behalve define en undef @@endif

Deze macro's zijn zeer handig indien je meer dan 1 Gentoo pc hebt en je wil Aide op alle pc's gebruiken. Niet alle machines bevatten immers dezelfde services of dezelfde gebruikers.

Vervolgens hebben we een verzameling van eigenschappen van bestanden of directories waarop we controleren. Dit zijn een combinatie van permissies, bestandseigenschappen en cryptografische hashes of checksums.

Flag Uitleg
p permissies
i inode
n aantal links
u gebruiker
g groep
s grootte
b hoeveelheid blokken
m mtime
a atime
c ctime
S controleer op groeiende grootte
md5 md5 checksum
sha1 sha1 checksum
rmd160 rmd160 checksum
tiger tiger checksum
R p+i+n+u+g+s+m+c+md5
L p+i+n+u+g
E Lege groep
> Groeiende logbestand p+u+g+i+n+S

En indien Aide gecompileerd is met mhash ondersteuning heeft het nog enkele andere mogelijkheden:

Flag Uitleg
haval haval checksum
gost gost checksum
crc32 crc32 checksum

Nu kan je je eigen regels aanmaken gebaseerd op bovenstaande vlaggen door deze als volgt te combineren:

Codevoorbeeld 1.1: Instellen van AIDE-regel

All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160

Het laatste wat we nu moeten doen is kijken hoe je regels toevoegt voor een bestand of directorie. Eenvoudig gezegd geef je gewoon de bestandsnaam of directorie naam in en dan de regel. Aide zal dan alle bestanden recursief toevoegen tenzij je iets anders specifieert:

Flag Uitleg
! Voeg dit bestand of directorie niet toe
= Voeg deze directorie toe, maar niet recursief

Laten we eens een volledig voorbeeld beschouwen:

Codevoorbeeld 1.1: /etc/aide/aide.conf

@@ifndef TOP DIR 
@@define TOPDIR /
@@endif

@@ifndef AIDEDIR 
@@define AIDEDIR /etc/aide
@@endif

@@ifhost smbserv
@@define smbactive
@@endif

# De locatie van de database waarvan gelezen moet worden
database=file:@@{AIDEDIR}/aide.db

# De locatie van de database waarnaartoe geschreven moet worden
database_out=file:aide.db.new

verbose=20
report_url=stdout

# Regel definities
All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160

@@{TOPDIR} Norm
!@@{TOPDIR}etc/aide
!@@{TOPDIR}dev
!@@{TOPDIR}proc
!@@{TOPDIR}root
!@@{TOPDIR}tmp
!@@{TOPDIR}var/log
!@@{TOPDIR}var/run
!@@{TOPDIR}usr/portage
@@ifdef smbactive
!@@{TOPDIR}etc/smb/private/secrets.tdb
@@endif
=@@{TOPDIR}home Norm

In bovenstaand voorbeeld specifieren we enkele macro's alsook waar de hoofddirectorie is en waar de aide-directorie is. Aide controleert /etc/aide/aide.db voor de bestandsintegriteit. Maar wanneer er geupdate moet worden of wanneer een nieuw bestand aangemaakt wordt wordt deze opgeslagen in /etc/aide/aide.db.new. Dit is omdat het eerste db-bestand niet zou overschreven worden. De optionele report_URL is een "nog te implementeren" feature dat nu nog geen resultaat geeft, maar de bedoeling is dat er in de toekomst de URL komt van een e-mailadres of van een script waarnaartoe gemaild kan worden of welke uitgevoerd kan worden.

Na de configuratie moet je je eigen db-bestand aanmaken door aide -i uit te voeren, en dan het bestand /etc/aide/aide.db.new naar /etc/aide/aide.db te kopieren. Daarna voeg je de controle toe aan cron door crontab -e als root uit te voeren.

Nota: Afhankelijk van je CPU en de vlaggen die gebruikt hebt kan de controle een tijdje duren.

Codevoorbeeld 1.1: aide -u als een cronjob instellen

0 3   * * * /usr/bin/aide -u

Nota: Herinner je eraan om je mailserver te configureren zodat je de root's mail krijgt. Anders zal je nooit Aides rapporten ontvangen.

In bovenstaand geval wordt aide om 3am uitgevoerd. Dit is omdat ik niet de gebruikers wil lastig vallen wanneer deze werken. Ik gebruik tevens de -u (Update) optie in plaats van de -C (Check). De reden daartoe is dat -u de bestanden controleert en niet de originele database overschrijft waardoor je tijd wint aangezien het enige wat je moet doen wanneer een bestand veranderd is is het aidebestand kopieren. Controleer gewoon de aanpassingen om te zien of jij het wel bent die de verandering heeft doorgevoerd in plaats van een hacker alvorens je aide aanpast aan de nieuwe situatie.

Nu is er een probleem met het opslaan van de database op je bestandssysteem aangezien de hacker (als hij weet dat aide geinstalleerd is) waarschijnlijk zal proberen om de db-bestanden aan te passen of te verwijderen. Dus is het belangrijk dat deze bestanden op een CD of een ander medium staan (origineel of als kopie) alsook de aide binaire bestanden (want die kan een hacker ook aanpassen). Dus maak je best een CD of een ander medium en maak je het best een kopie van de .db bestanden en de aide binaire bestanden.

Meer informatie vind je op aide's projectpagina (Engels).

1.  Snort

Codevoorbeeld 1.1: Aanmaken van de gebruiker snort

# user add snort -d /var/log/snort -s /dev/null
# chown -R snort /var/log/snort

Codevoorbeeld 1.1: /etc/conf.d/snort

PID FILE=/var/run/snort_eth0.pid
MODE="full"
NETWORK="10.0.0.0/24"
LOG DIR="/var/log/snort"
CO NF=/etc/snort/snort.Cong
SNORT_OPTS="-D -s -u snort -dev -l $LOGDIR -h $NETWORK -c $CONF"

Codevoorbeeld 1.1: /etc/snort/snort.conf

(Stap 1)
var HOME_NET 10.0.0.0/24
var EXTERNAL_NET any
var SMTP $HOME_NET
var HTTP_SERVERS $HOME_NET
var SQL_SERVERS $HOME_NET
var DNS_SERVERS [10.0.0.2/32,212.242.40.51/32]
var RULE_PATH ./

(Stap 2)
preprocessor frag2
preprocessor stream4: detect_scans detect_state_problems detect_scans disable_evasion_alerts
preprocessor stream4_reassemble: ports all
preprocessor http_decode: 80 8080 unicode iis_alt_unicode double_encode iis_flip_slash full_whitespace 
preprocessor rpc_decode: 111 32771
preprocessor bo: -nobrute
preprocessor telnet_decode

(Stap 3)
include classification.config

(Stap 4)
include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/exploit.rules
include $RULE_PATH/scan.rules
include $RULE_PATH/finger.rules
include $RULE_PATH/ftp.rules
include $RULE_PATH/telnet.rules
include $RULE_PATH/smtp.rules
include $RULE_PATH/rpc.rules
include $RULE_PATH/rservices.rules
include $RULE_PATH/dos.rules
include $RULE_PATH/ddos.rules
include $RULE_PATH/dns.rules
include $RULE_PATH/tftp.rules
include $RULE_PATH/web-cgi.rules
include $RULE_PATH/web-coldfusion.rules
include $RULE_PATH/web-iis.rules
include $RULE_PATH/web-frontpage.rules
include $RULE_PATH/web-misc.rules
include $RULE_PATH/web-attacks.rules
include $RULE_PATH/sql.rules
include $RULE_PATH/x11.rules
include $RULE_PATH/icmp.rules
include $RULE_PATH/netbios.rules
include $RULE_PATH/misc.rules
include $RULE_PATH/attack-responses.rules
include $RULE_PATH/backdoor.rules
include $RULE_PATH/shellcode.rules
include $RULE_PATH/policy.rules
include $RULE_PATH/porn.rules
include $RULE_PATH/info.rules
include $RULE_PATH/icmp-info.rules
include $RULE_PATH/virus.rules
# include $RULE_PATH/experimental.rules
include $RULE_PATH/local.rules

Codevoorbeeld 1.1: /etc/snort/classification.config

config classification: not-suspicious,Not Suspicious Traffic,3
config classification: unknown,Unknown Traffic,3
config classification: bad-unknown,Potentially Bad Traffic, 2
config classification: attempted-recon,Attempted Information Leak,2
config classification: successful-recon-limited,Information Leak,2
config classification: successful-recon-largescale,Large Scale Information Leak,2
config classification: attempted-dos,Attempted Denial of Service,2
config classification: successful-dos,Denial of Service,2
config classification: attempted-user,Attempted User Privilege Gain,1
config classification: unsuccessful-user,Unsuccessful User Privilege Gain,1
config classification: successful-user,Successful User Privilege Gain,1
config classification: attempted-admin,Attempted Administrator Privilege Gain,1
config classification: successful-admin,Successful Administrator Privilege Gain,1

# Nieuwe classificaties
config classification: rpc-portmap-decode,Decode of an RPC Query,2
config classification: shellcode-detect,Executable code was detected,1
config classification: string-detect,A suspicious string was detected,3
config classification: suspicious-filename-detect,A suspicious filename was detected,2
config classification: suspicious-login,An attempted login using a suspicious username was detected,2
config classification: system-call-detect,A system call was detected,2
config classification: tcp-connection,A TCP connection was detected,4
config classification: trojan-activity,A Network Trojan was detected, 1
config classification: unusual-client-port-connection,A client was using an unusual port,2
config classification: network-scan,Detection of a Network Scan,3
config classification: denial-of-service,Detection of a Denial of Service Attack,2
config classification: non-standard-protocol,Detection of a non-standard protocol or event,2
config classification: protocol-command-decode,Generic Protocol Command Decode,3
config classification: web-application-activity,access to a potentially vulnerable web application,2
config classification: web-application-attack,Web Application Attack,1
config classification: misc-activity,Misc activity,3
config classification: misc-attack,Misc Attack,2
config classification: icmp-event,Generic ICMP event,3
config classification: kickass-porn,SCORE! Get the lotion!,1

Meer informatie kan je vinden op Snorts website (Engels).

1.  Het ontdekken van slecht werkende software met chkrootkit

HIDS zoals AIDE zijn een goede manier om veranderingen op te merken in jouw systeem, maar het zal nooit pijn doen om nog een andere beveiliging voor je pc te gebruiken. chkrootkit is een programma dat gewone system files controleert op hun aanwezigheid van rootkits (software die gemaakt is om aanvalacties wegsteekt en hem toelaat andere slecht-werkende software te instaleren. Waar chkrootkit en alternativen zoals rkhunter) zijn handige gebruiksinstrumenten, bijde voor systeemonderhoud en opsporen van invallen na een aanva, ze kunnen niet verzekeren dat je systeem veilig is.

De beste manier om chkrootkit te gebruiken aanvallen te ondekken is gewoon het te starten en best ook regelmatig via cron. Om te starten; emerge app-admin/chkrootkit. chkrootkit kan ook in de command line worden opgestart met het gelijknamige command, of via cron met zo'n uitzicht.

Codevoorbeeld 1.1: Plan chkrootkit als een cronjob

0 3 * * * /usr/sbin/chkrootkit

Upgedate op 23 november 2005

De originele versie van dit document was laatst geupdate om 10 april 2014

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.