Gentoo Logo

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

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

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

(Step 3)
include classification.config

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

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.

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