Auditorias automatizadas con nessus
Nessus es una herramienta para hacer auditorias de seguridad que funciona en modo cliente-servidor. Dentro de linux se inicia como un servicio, y para realizar auditorias debemos conectarnos a el con un programa cliente. Ese programa cliente puede estar en la propia maquina donde se ejecuta nessus o en una maquina remota. Por ejemplo existen clientes nessus para windows que pueden conectarse a servidores remotos.

La instalacion es sencilla. Si lo que queremos es automatizar el proceso de hacer autidorias habra que ejecutar determinados comandos y luego crear una tarea periodica. Una vez instalado nessus disponemos de estos comandos:
  • /usr/local/sbin/nessus-adduser : añadir usuarios para nessus
  • /usr/local/sbin/nessusd -D : inicia el demonio nessus
  • /usr/local/sbin/nessus-mkcert : crea certificados para el demonio de nessus
  • /usr/local/bin/nessus : cliente nessus
  • /usr/local/sbin/nessus-update-plugins : actualiza los test de nessus. Es importante.
Lo primero que debemos hacer es crear un usuario para nessus
[root@grison]# nessus-adduser
Using /var/tmp as a temporary file holder

Add a new nessusd user
----------------------


Login : auditor
Authentication (pass/cert) [pass] :   (por defecto autenticacion con password)
Login password :
Login password (again) :

User rules
----------
nessusd has a rules system which allows you to restrict the hosts
that auditor has the right to test. For instance, you may want
him to be able to scan his own host only.

Please see the nessus-adduser(8) man page for the rules syntax

Enter the rules for this user, and hit ctrl-D once you are done :
(the user can have an empty rules set)

-pasando, pulsamos Ctrl-D-


Login             : auditor
Password          : ***********
DN                :
Rules             :



Is that ok ? (y/n) [y] y
user added.
[root@grison]#
Con este sencillo script se pueden automatizar las tareas de auditar.
#!/bin/sh

# auditoria.sh
# Pello Xabier Altadill Izura
# Script para automatizar las auditorias de sistema y enviar reportes.
# El script espera encontrar en /etc/auditorias ficheros target que va procesando
# y por cada uno genera un informe y envia un aviso a determinada cuenta de correo
# el informe se guarda por ftp automaticamente, pero se puede enviar tambien.

## Supuestos: ##################################################################
# El script esta en un directorio: /etc/auditorias
# Cada auditoria esta en un fichero *.target donde hay una lista de ips o rangos
################################################################################

# Variables
TARGET=/etc/auditorias
OUTPUT=/etc/auditorias/informes
AUDITOR=pello@dondesea.com
CCAUDITOR=grison@csi.com
NESSUS=/usr/local/bin/nessus
NESSUSRC=/etc/auditorias/nessusrc
#VERBOSE="-V"
VERBOSE=
NESSUS_OPT="-c ${NESSUSRC} ${VERBOSE} -T html -q localhost 1241 auditor password"
PREFIX=`date +%s`

cd ${TARGET}

echo Actualizamos el NESSUS
/usr/local/sbin/nessus-update-plugins

for i in *.target
do

echo Auditando con fichero ${i}
echo Ejecutando ${NESSUS} ${NESSUS_OPT} ${i} ${OUTPUT}/${i}.${PREFIX}.html
${NESSUS} ${NESSUS_OPT} ${i} ${OUTPUT}/${i}.${PREFIX}.html
date >> tmp.txt

# enviamos un correo para avisar
mail ${AUDITOR} -c ${CCAUDITOR} -s "Auditoria: ${i}" < tmp.txt
cat tmp.txt >> /root/auditorias.txt
rm -f tmp.txt

# Guardamos el report.
ftp -in << EOF
open www.almacenauditorias.com
user auditor password
hash
lcd ${OUTPUT}
put ${i}.${PREFIX}.html
exit

EOF

done