Gentoo Logo

[ << ] [ < ] [ Home ] [ > ] [ >> ]


13. Rilevare le intrusioni

Indice:

13.a. 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.2: /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.

13.b. Snort

Snort è un sistema di rilevamento di intrusioni da rete (NIDS). Per installarlo e configurarlo usare i seguenti esempi:

Codice 2.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 2.2: /etc/snort/snort.conf

(Passo 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 ./

(Passo 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

(Passo 3)
include classification.config

(Passo 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

Codice 2.3: /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.

13.c. 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 3.1: Progammare chkrootkit come un cronjob

0 3 * * * /usr/sbin/chkrootkit

[ << ] [ < ] [ Home ] [ > ] [ >> ]


Stampa

Visualizza tutto

Aggiornato il 19 luglio 2010

La versione originale di questo documento è più recente ed è stata aggiornata il 10 aprile 2014

Oggetto: Rilevare gli intrusi.

Kim Nielsen
Autore

John P. Davis
Redazione

Eric R. Stockbridge
Redazione

Carl Anderson
Redazione

Jorge Paulo
Redazione

Sven Vermeulen
Redazione

Benny Chuang
Redazione

Sune Jeppesen
Redazione

Tiemo Kieft
Redazione

Zack Gilburd
Redazione

Dan Margolis
Redazione

Joshua Saddler
Redazione

Stefano Pacella
Traduzione

Cristiano Chiucchiolo
Traduzione

Donate to support our development efforts.

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