|
1.
AIDE (Entorno Avanzado de Detección de Intrusos)
AIDE es un sistema de detección de intrusos basado en host (HIDS,
Host-Based Intrusion Detection System), una alternativa libre a
Tripwire (si usted ya conoce Tripwire no debería tener dificultades
para aprender a configurar AIDE). Los HIDS se usan para detectar
cambios en los ficheros de configuración y binarios importantes,
generalmente generando un resumen cifrado ("hash") único de
los ficheros a ser verificados, y almacenándolos en un lugar
seguro. Con un procedimiento regular (tal que una vez al día), los
resúmenes "buenos" se comparan con los generados a partir de
la copia actual de cada fichero, para determinar si el fichero ha
cambiado. Los HIDS son una gran herramienta para detectar cambios no
permitidos en un sistema, pero necesitan un poco de trabajo para
implementarlos adecuadamente y hacer un buen uso de ellos.
El fichero de configuración está basado en expresiones regulares,
macros y reglas para ficheros y directorios. Tenemos la macros
siguientes:
| Macro |
Descripción |
Sintaxis |
| ifdef |
Si está definido |
@@ifdef "name" |
| ifndef |
Si no está definido |
@@ifndef "name" |
| define |
Define una variable |
@@define "name" "value" |
| undef |
Elimina la definición de una variable |
@@undef "name" |
| ifhost |
Si "hostname" |
@@ifhost "hostname" |
| ifnhost |
Si no "hostname" |
@@ifnhost "hostname" |
| endif |
Endif puede ser usado después de cualquiera de las macros
anteriores excepto define y undef |
@@endif |
Esas macros se convierten en algo muy práctico si usted tiene más de
un sistema Gentoo y quiere usar AIDE en todos ellos, pero no todas las
máquinas ejecutan los mismos servicios o incluso tienen los mismos
usuarios.
A continuación tenemos conjuntos de marcas ("flags") para
comprobar en ficheros y directorios. Son una combinación de permisos,
propiedades de archivos y resúmenes criptográficos (es decir, sumas de
control).
| Flag |
Descripción |
| p |
permisos |
| i |
inode |
| n |
número de enlaces |
| u |
usuario |
| g |
grupo |
| s |
tamaño |
| b |
'block count' |
| m |
mtime |
| a |
atime |
| c |
ctime |
| S |
verifica el tamaño creciente |
| md5 |
suma de control md5 |
| sha1 |
suma de control sha1 |
| rmd160 |
suma de control rmd160 |
| tiger |
suma de control tiger |
| R |
p+i+n+u+g+s+m+c+md5 |
| L |
p+i+n+u+g |
| E |
Grupo vacío |
| > |
Crecimiento del fichero de log p+u+g+i+n+S |
Y si AIDE se compila con soporte para mhash también soporta otras
características:
| Flag |
Descripción |
| haval |
suma de control haval |
| gost |
suma de control gost |
| crc32 |
suma de control crc32 |
Ahora puede crear sus propias reglas basadas en los indicadores
anteriores, combinándolas tal que así:
Listado de Código 1.1: Creación de un conjunto de reglas para AIDE |
All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160
|
Lo último que necesita para crear su propio fichero de configuración
es ver cómo añadir una regla a un fichero o directorio. para
introducir una regla, combine el nombre de fichero o directorio y la
regla. AIDE añadirá todos los archivos recursivamente a no ser que
usted especifique alguna regla alternativa.
| Flag |
Descripción |
| ! |
No añadir este fichero o directorio. |
| = |
Añadir este directorio, pero sin recursividad. |
Veamos, pues, un ejemplo completo:
Listado de Código 1.1: /etc/aide/aide.conf |
@@ifndef TOPDIR
@@define TOPDIR /
@@endif
@@ifndef AIDEDIR
@@define AIDEDIR /etc/aide
@@endif
@@ifhost smbserv
@@define smbactive
@@endif
# La ubicación de la base de datos a ser leída
database=file:@@{AIDEDIR}/aide.db
# La ubicación de la base de datos donde escribir
database_out=file:aide.db.new
verbose=20
report_url=stdout
# Definición de reglas
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
|
En el ejemplo anterior especificamos con algunas macros donde comienza
el directorio de nivel superior y donde está el directorio de
AIDE. AIDE comprueba el fichero /etc/aide/aide.db cuando
comprueba la integridad de un fichero. Pero cuando actualiza o crea un
nuevo fichero almacena la información en
/etc/aide/aide.db.new. Esto se hace porque no se puede
sobrescribir automáticamente el antiguo fichero de base de datos. La
opción report_URL no está todavía implementada, pero la
intención del autor es que sea capaz de enviar correo electrónico o
quizá también ejecutar guiones ("scripts").
El ebuild AIDE incluye ahora un fichero de configuración funcional, un
guión de ayuda ("helper") y un guión de programación de trabajos
("crontab"). El guión de ayuda realiza ciertas tareas por nosotros y
proporciona una interfaz que resulta ser un pequeño guión más
amigable. Para ver todas las opciones disponibles, puede ejecutarse
aide --help. Para empezar, todo lo que se necesita hacer es
aide -i y el guión de programación de trabajos debería detectar
la base de datos y enviar los mensajes apropiados cada día. Es
recomendable revisar el fichero /etc/aide/aide.conf y
asegurarse que la configuración recoge escrupulosamente que todo está
en su lugar en la máquina.
Nota:
Dependiendo de su CPU, velocidad de acceso a disco y los indicadores
configurados para los ficheros, el proceso puede llevar algún tiempo.
|
Nota:
Recuerde establecer una alias para leer los mensajes de correo para
root. En caso contrario nunca conocerá lo que está informando AIDE.
|
Note que almacenar localmente los ficheros de base de datos tiene
algunos riesgos, puesto que los atacantes (si conocen que AIDE está
instalado) intentarán sin duda alterar el fichero de base de datos,
actualizarlo o modificar /usr/bin/aide. Por esto, debería
crear un CD o otro medio donde dejar una copia del fichero .db y los
binarios de AIDE.
Puede encontrar más información en la página del proyecto AIDE.
1.
Snort
Snort es un Sistema de Detección de Intrusiones de Red (Network
Intrusion Detection System, NIDS). Para instalarlo y configurarlo use
los ejemplos siguientes.
Listado de Código 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"
|
Listado de Código 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
|
Listado de Código 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
|
Más información en el sitio web de Snort.
1.
Detección de malware con chkrootkit
Tanto HIDS como AIDE son una gran forma de detectar cambios en su
sistema, pero nunca perjudica tener otra línea de
defensas. chkrootkit es una utilidad que que examina los
ficheros de sistema comunes buscando rootkits --software diseñado para
esconder las acciones de un intruso y permitirle conservar el acceso--
y examina el sistema buscando trazas de registradores de teclados
("keyloggers") y otro "malware". chkrootkit
y alternativas como rkhunter son herramientas prácticas, tanto
para el mantenimiento del sistema como seguimiento de un intruso tras
un ataque, sin embargo no garantizan que su sistema sea seguro.
La mejor manera para emplear chkrootkit como detección de
intrusos es ejecutarlo rutinariamente desde cron. Para empezar,
instale app-forensics/chkrootkit. chkrootkit puede
ejecutarse desde la línea de comandos con el comando homónimo,
o desde cron con un línea como ésta:
Listado de Código 1.1: Programar chkrootkit como un cronjob |
0 3 * * * /usr/sbin/chkrootkit
|
|
Página actualizada 19 de julio, 2010 |
|
Donate to support our development efforts.
|
|
|