AIDE es una aplicación tipo IDS (Intrusion Detection System),  substituta del conocido Tripwire, que permite tomar una “foto” a la integridad del sistema de archivos en linux y ayuda a identificar cuales fueron modificados desde un punto inicial.

Para  instalar la aplicacion en Ubuntu, ejecutamos el siguiente comando:

sudo apt-get install aide exim4

Por defult AIDE instala postfix como servidor de correo, pero en este caso preferimos utilizar Exim4.

En /etc/aide.conf agregamos una linea con  verbose = 5 para ajustar el nivel de detalle de los informes.

En la instalación por default AIDE genera una carpeta (/etc/aide/aide.conf.d/) con varios archivos de configuración que permiten realizar multiples chequeos. Estos son “armados” mediante una serie de reglas basadas en los siguientes parámetros:

p:      permissions
ftype:  file type
i:      inode
n:      number of links
l:      link name
u:      user
g:      group
s:      size
b:      block count
m:      mtime
a:      atime
c:      ctime
S:      check for growing size
I:      ignore changed filename
md5:    md5 checksum
sha1:   sha1 checksum
sha256: sha256 checksum
sha512: sha512 checksum
rmd160: rmd160 checksum
tiger:  tiger checksum
haval:  haval checksum
crc32:  crc32 checksum
R:      p+ftupe+i+l+n+u+g+s+m+c+md5
L:      p+ftype+i+l+n+u+g
E:      Empty group
>:      Growing logfile p+ftype+l+u+g+i+n+S
acl:    access control list
selinux SELinux security context
xattrs:  extended file attributes
e2fsattrs: file attributes on a second extended file system


A partir de estas, se pueden armar reglas propias como:

MyRule = p+i+n+u+g+s+b+m+c+md5+sha1

Muchas ya vienen generadas en el archivo /etc/aidse/aide.conf

Checksums = sha256+sha512+rmd160+haval+gost+crc32+tiger
OwnerMode = p+u+g+ftype
Size = s+b
InodeData = OwnerMode+n+i+Size+l+acl+xattrs+e2fsattrs+selinux
StaticFile = m+c+Checksums
RamdiskData = InodeData-i
Full = InodeData+StaticFile
VarTime = InodeData+Checksums
VarInode = VarTime-i
VarFile = OwnerMode+n+l+acl+xattrs+e2fsattrs+selinux
VarDir = OwnerMode+n+i+acl+xattrs+e2fsattrs+selinux
VarDirInode = OwnerMode+n+acl+xattrs+e2fsattrs+selinux
VarDirTime = InodeData
Log = OwnerMode+n+S+acl+xattrs+e2fsattrs+selinux
FreqRotLog = Log-S
LowLog = Log-S
SerMemberLog  = Full+I
LoSerMemberLog = SerMemberLog+ANF
HiSerMemberLog = SerMemberLog+ARF
LowDELog = SerMemberLog+ANF+ARF
SerMemberDELog = Full+ANF
LinkedLog = Log-n

Nosotros preferimos eliminar el contenido de la carpeta /etc/aide/aide.conf.d y crear un archivo con las siguientes reglas:

cat /etc/aide/aide.conf.d/60_aide_custom
 
/etc/init.d/firewall Full
/etc/passwd Full

Con ello podemos verificar si nuestro archivo que inicia las reglas de firewall o el passwd fueron modificados. Los chequeos realizados sobre dichos archivos corresponden a la regla:
Full = InodeData + StaticFile
donde:
InodeData = OwnerMode + n + i + Size + l + acl + xattrs + e2fsattrs + selinux
StaticFile = m + c + Checksums
y donde:
OwnerMode = p + u + g + ftype
Size = s + b
Checksums = sha256 + sha512 + rmd160 + haval + gost + crc32 + tiger

Luego editamos el archivo /etc/default/aide agregando/modificando los siguientes parámetros:

CONFIG_FILE=/etc/aide/aide.conf
MAILSUBJ="Cambios de configuración en: $FQDN"
MAILTO=pablo@mailserver.com
MAILFROM=aide-noreply@mailserver.com

En nuestro caso modificamos la línea del  envío de mail editando el archivo /etc/cron.daily/aide agregando -a “From: $MAILFROM” entre el asunto y el mailto

"$MAILFILE" /usr/bin/mail -s "$MAILSUBJ" -a "From: $MAILFROM"  "$MAILTO"

Para configurar el Exim4 ejecutamos dpkg-reconfigure exim4-config donde nos guiará un asistente. Luego de finalizar la configuración, la podemos verificar de la siguiente manera:

cat /etc/exim4/update-exim4.conf.conf
 
dc_eximconfig_configtype='satellite'
dc_other_hostnames='server'
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost='mailserver.com'
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='smtp.mailserver.com'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

Lo único que resta es inicializar la base de datos de AIDE, con el siguiente comando:

sudo aideinit

Este comando genera la base de conocimiento ubicada en /var/lib/aide/ y es la “foto” contra la que se compara cada día (por el cron.daily) nuestro sistema. Ante un cambio de firmas, se nos enviará la notificación por mail, y quedará registrado en los logs ubicados en /var/log/aide/aide.log

Si por ejemplo, modificamos el archivo firewall, recibiremos un mail similar a este:

This is an automated report generated by the Advanced Intrusion Detection
Environment on MISERVIDOR started at 2014-10-23 13:16:28.
 
AIDE returned with exit code 4. Changed files detected!
AIDE produced no errors.
 
Output of the daily AIDE run (15 lines):
AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2014-10-23 13:16:28
 
Summary:
  Total number of files:        14
  Added files:                  0
  Removed files:                0
  Changed files:                1
 
 
---------------------------------------------------
Changed files:
---------------------------------------------------
 
f >.... mc..C.. .: /etc/init.d/firewall
 
End of truncated AIDE output.
 
The full output can be found in /var/log/aide/aide.log.
sha256sum: f6c427a4d929c92a3ea9dba5a5835bb21efccf44f12599fdce3b6b30d1fa0472  /var/log/aide/aide.log
 
The check was done against /var/lib/aide/aide.db with the following characteristics:
 Size     : 2754
 Bcount   : 8
 Mtime    : 2014-10-23 11:00:42
 Ctime    : 2014-10-23 11:00:42
 Inode    : 397505
 RMD160   : OllQD5FWPYOUbSO30bYCg5eLsh0=
 TIGER    : c1A9ydM6/K9iKktyfAdfoKaFil+4aMoD
 SHA256   : x+t8B1aOzpIlrWEoCJv8ijW3pvBIOQTh
 SHA512   : BXHVekA1IkcV0KRtES6CFTnffs1o1bPB
 CRC32    : TH0bcg==
 HAVAL    : WKs6jHEakzOxVe+2Az8TS6mFPmZqq9Mn
 GOST     : dDtQsq6PoPEGFq7jxz/t6744uTKmGlpE
 
The AIDE run created a new database /var/lib/aide/aide.db.new with the following characteristics:
 Size     : 2756
 Bcount   : 8
 Mtime    : 2014-10-23 13:16:28
 Ctime    : 2014-10-23 13:16:28
 Inode    : 391812
 RMD160   : 3WE1eu701xV/vjg0FxFPZoVKJfE=
 TIGER    : jafohtkCmOASKCgK9obJG2tdB+CNztK/
 SHA256   : OW/t343tGx7Mb7mNxIz2i50wvcA7qrDr
 SHA512   : im1WeB3b1tb9NhICwcMMRHByHhVNYrIU
 CRC32    : j+mtHQ==
 HAVAL    : x/9q2R7JlsH0g1kb4A6bDdlgC+/Qe0IP
 GOST     : Cejkg+EGQcZKUxHEqU+oF28Umt1MvwoC
 
End of AIDE daily cron job at 2014-10-23 13:16, run time 1 seconds

Ref: http://aide.sourceforge.net/stable/manual.html