|
1.
AIDE (Advanced Intrusion Detection Environment)
AIDE è un sistema Host-Based per il rilevamento delle intrusioni (HIDS), una
alternativa libera a Tripwire (se si conosce già Tripwire non si ha
difficoltà con il file di configurazione di AIDE). Gli HIDS sono usati per
rilevare cambiamenti ad importanti file di configurazione del sistema e binari,
e generalmente funzionano producendo un hash crittografico unico per i file da
controllare, che poi custodiscono in un luogo sicuro. A intervalli regolari (ad
esempio una volta al giorno), l'hash memorizzato, ritenuto buono, viene
comparato con quello generato dalla copia attuale di ogni file, per determinare
se il file sia stato modificato. Gli HIDS sono un ottimo strumento per rilevare
modifiche non autorizzate al sistema, ma necessitano di un po' di lavoro
per essere configurati in modo da poter funzionare al meglio.
Il file di configurazione è basato su espressioni regolari, macro e regole per
i file e le directory. Si hanno le seguenti macro:
| Macro |
Descrizione |
Sintassi |
| ifdef |
Se definito |
@@ifdef "nome" |
| ifndef |
Se non definito |
@@ifndef "nome" |
| define |
Definisce una variabile |
@@define "nome" "valore" |
| undef |
Cancella una variabile |
@@undef "nome" |
| ifhost |
se "nome host" |
@@ifhost "nome host" |
| ifnhost |
se non "nome host" |
@@ifnhost "nome host" |
| endif |
Endif deve essere usato dopo ognuna delle macro elencate sopra, tranne define
e undef.
|
@@endif |
Queste macro diventano molto comode se si ha più di una macchina Gentoo e
si vuole usare AIDE su ognuna di esse. Ma non tutte le macchine eseguono gli
stessi servizi, e spesso non hanno neppure gli stessi utenti.
Poi si hanno una serie di flag per controllare i file e le directory. Esse sono
una combinazione di permessi, proprietà dei file e hash crittografici (es.
checksums).
| Flag |
Descrizione |
| p |
permessi |
| i |
inode |
| n |
numero di link |
| u |
utente |
| g |
gruppo |
| s |
dimensione |
| b |
block count |
| m |
mtime |
| a |
atime |
| c |
ctime |
| S |
controlla se la dimensione è in aumento |
| 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 |
Gruppo vuoto |
| > |
Logfile in aumento p+u+g+i+n+S |
Se AIDE è compilato con il supporto mhash, avrà alcune funzioni aggiuntive:
| Flag |
Descrizione |
| haval |
haval checksum |
| gost |
gost checksum |
| crc32 |
crc32 checksum |
Ora si possono creare le regole personali, combinando le flag elencate sopra.
Ecco un esempio:
Codice 1.1: Creare un set di regole per AIDE |
All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160
|
L'ultima cosa di cui si ha bisogno per creare il file di
configurazione personale è sapere come aggiungere una regola a un file o a una
directory. Per inserire una regola, combinare il nome del file o della
directory e la regola. AIDE aggiungerà tutti i file ricorsivamente, a meno che
non si specifica una regola diversa.
| Flag |
Descrizione |
| ! |
Non aggiungere questo file o directory. |
| = |
Aggiungere questa directory, ma non ricorsivamente |
Vediamo un esempio completo:
Codice 1.1: /etc/aide/aide.conf |
@@ifndef TOPDIR
@@define TOPDIR /
@@endif
@@ifndef AIDEDIR
@@define AIDEDIR /etc/aide
@@endif
@@ifhost smbserv
@@define smbactive
@@endif
# La posizione del database da leggere.
database=file:@@{AIDEDIR}/aide.db
# La posizione del database da scrivere.
database_out=file:aide.db.new
verbose=20
report_url=stdout
# Definizione regola
All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160
@@{TOPDIR} Norm
!@@{TOPDIR}etc/aide
!@@{TOPDIR}dev
!@@{TOPDIR}media
!@@{TOPDIR}mnt
!@@{TOPDIR}proc
!@@{TOPDIR}root
!@@{TOPDIR}sys
!@@{TOPDIR}tmp
!@@{TOPDIR}var/log
!@@{TOPDIR}var/run
!@@{TOPDIR}usr/portage
@@ifdef smbactive
!@@{TOPDIR}etc/smb/private/secrets.tdb
@@endif
=@@{TOPDIR}home Norm
|
Nell'esempio sopra si è specificato con alcune macro dove inizia la
directory superiore e dove si trova la directory AIDE. AIDE controlla il file
/etc/aide/aide.db quando controlla l'integrità di un file. Ma
quando aggiorna o crea un nuovo file, salva le informazioni in
/etc/aide/aide.db.new. Questo serve a far sì che il vecchio file
db non venga sovrascritto automaticamente. L'opzione report_URL non è
ancora implementata, ma l'intenzione dell'autore è che essa sia in grado di
inviare script via e-mail, o forse perfino di eseguirli.
L'ebuild di AIDE comprende un file di configurazione di default funzionante,
uno script di aiuto e uno script crontab. Lo script di aiuto esegue
automaticamente un gran numero di operazioni e fornisce un'interfaccia un po'
più amichevole. Per vedere tutte le opzioni disponibili, provare con
aide --help. Per iniziare, tutto ciò che si deve fare è
aide -i, e lo script crontab dovrebbe rilevare il database e
inviare ogni giorno le email appropriate. Si raccomanda di rivedere il file
/etc/aide/aide.conf, per assicurarsi che la configurazione
rifletta accuratamente le caratteristiche del sistema.
Nota:
A seconda della CPU, della velocità di accesso al disco, e delle flag
che sono impostate sui file, questa operazione può durare diversi minuti.
|
Nota:
Ricordarsi di impostare un alias in modo che si possa ricevere la posta
dell'utente root, altrimenti non saprà mai ciò che AIDE comunica.
|
In verità c'è qualche rischio nel salvare i file db localmente, in quanto chi
vuole compiere un attacco probabilmente cercherà (se sa che AIDE è
installato) di alterare o aggiornare il file db, oppure modificherà
/usr/bin/aide. Per questo si deve creare un cd o un altro
supporto contenente una copia del file .db e i binari di AIDE.
Si possono trovare informazioni nella pagina del progetto AIDE.
1.
Snort
Snort è un sistema di rilevamento di intrusioni da rete (NIDS). Per
installarlo e configurarlo usare i seguenti esempi:
Codice 1.1: /etc/conf.d/snort |
PIDFILE=/var/run/snort_eth0.pid
MODE="full"
NETWORK="10.0.0.0/24"
LOGDIR="/var/log/snort"
CONF=/etc/snort/snort.conf
SNORT_OPTS="-D -s -u snort -dev -l $LOGDIR -h $NETWORK -c $CONF"
|
Codice 1.1: /etc/snort/snort.conf |
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 ./
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
include classification.config
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
|
Codice 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
# NEW CLASSIFICATIONS
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
|
Maggiori informazioni sul sito di Snort.
1.
Rilevare malware con chkrootkit
Gli HIDS come AIDE sono un ottimo strumento per rilevare le modifiche al
sistema, ma avere un'altra linea di difesa non guasta mai. chkrootkit è
una utility che analizza i comuni file di sistema cercando la presenza di
rootkit--software progettati per nascondere l'azione di un intruso,
consentendogli di mantenere l'accesso al sistema--e scandaglia il
sistema alla ricerca di tracce di key loggers e altri "malware". Sebbene
chkrootkit e altri programmi, come rkhunter, siano strumenti
utili, sia per la manutenzione del sistema che per rilevare le tracce di un
intruso dopo un attacco, essi non possono garantire la sicurezza del
sistema.
Il modo migliore di usare chkrootkit per rilevare un'intrusione è quello
di eseguirlo regolarmente da cron. Per iniziare, emergere
app-forensics/chkrootkit. chkrootkit può essere eseguito
dalla linea di comando con lo stesso nome, oppure da cron in questo modo:
Codice 1.1: Progammare chkrootkit come un cronjob |
0 3 * * * /usr/sbin/chkrootkit
|
|
Aggiornato il 19 luglio 2010 |
|
Donate to support our development efforts.
|
|
|