Documente Academic
Documente Profesional
Documente Cultură
1 Introduccin
Los IDS han sido usados ampliamente a lo largo de estos ltimos aos por muchas
compaas porque han proporcionado una capa adicional de seguridad, sin embargo se
ha encontrado que estos elementos proporcionan una seguridad reactiva, es decir, para
que haya proteccin debe existir primero un ataque.
Ante estos hechos han surgido los IPS como resultado de la evolucin de los IDS.
Los IPS no se limitan a escuchar y monitorear el trfico de la red sino que intervienen
activamente ya que el trfico circula a travs del sistema y cualquier intento de ataque
ser bloqueado por el IPS.
Un buen sistema IPS debe cumplir como mnimo con caractersticas tales como
bloqueo automtico de ataques, proteccin de sistemas no parcheados, y optimizacin
del rendimiento de la red. Sin estas condiciones la operabilidad y productividad del
sistema no se podra garantizar.
2 Utilizacin de Sistemas de Deteccin de Intrusos como Elemento de Seguridad Perimetral
2 Arquitectura de red
A continuacin se pretende poner en funcionamiento un esquema bsico de red que
utilice un Sistema de Prevencin de Intrusos (IPS) para que proteja a la red interna y
los servidores de cualquier tipo de ataque.
3 SnortSam
Como se ha mencionado anteriormente, SnortSam consta de un agente y de un
parche que se aplica al propio Snort. SnortSam, funciona junto con iptables para obtener
un NIDS con respuesta activa que realice en ocasiones la solucin de cortafuegos. En
esencia, cuando el Snort detecte un ataque de determinada relevancia enva un comando
al IPTables para que ste bloquee, durante un tiempo determinado, la direccin IP de
donde proviene el ataque. La comunicacin entre ambas herramientas se hace a travs
del Snortsam.
Ejemplos:
accept 10.10.0.0/16, officepassword
accept snort1, hostpassword
accept 192.168.1.1
Ejemplos:
dontblock a.root-servers.net
dontblock 192.168.10.0/24
Tambin se tienen que especificar las opciones especficas del firewall, con el
que SnortSam se comunicar para realizar las acciones de bloqueo/desbloqueo.
Entre estas opciones se puede especificar los siguientes firewall:
4 Utilizacin de Sistemas de Deteccin de Intrusos como Elemento de Seguridad Perimetral
o Fwexec. SnortSam puede llamar al ejecutable fw.exe para crear los bloqueos
en el Firewall-1.
o Fwsam. Esta opcin comunica a SnortSam el uso del paquete OPSEC para
iniciar los bloqueso. Se tiene que especificar el nombre o la direccin IP del
firewall al cual se enviarn los bloqueos.
o opsec <file>. Esta opcin habilita a SnortSam para usar las funciones
OPSEC API del plugin OPSEC, configurado a travs del archivo de
configuracin especificado por file.
o Plugin pix. Este plugin habilita SnortSam para usar el plugin PIX.
o Cisconullroute. SnortSam har uso del plugin the CISCO Null-Route para
bloquear las direcciones IP en un router Cisco.
o Ipchains. El plugin ipchains usar una llamada setsockopt para controlar las
opciones del ipchains para bloquear el host aadiendo una regla para el
conjunto de reglas.
Otra opcin que se puede aadir es la opcin daemon, que permite ejecutar
snortsam en modo daemon.
Captulo 6. Puesta en marcha de un IPS 5
En primer lugar, dado que la versin actual de parche de SnortSam para Snort es
la 2.8.0.1, se recomienda tener instalado la misma versin de Snort. As pues se
puede descargar la versin de Snort 2.8.0.1 desde la pgina:
http://www.snort.org/dl/old/, dnde se encuentran versiones anteriores a la
actual y se instala y configura como se ha hecho anteriormente.
Una vez que se tiene instalado y configurado Snort, se procede al parcheo del
mismo para que pueda funcionar con Snortsam. Para ello, se descarga el parche
desde: http://www.snortsam.net/files/snort-2.8-plugin/snortsam-2.8.0.1.diff.
Para ello se debe de modificar en primer lugar, el archivo snort.conf para aadir
el plugin de salida fwsam aadiendo la siguiente lnea:
output alert_fwsam: DireccionIp:Puerto:/Snortpass
Donde:
3.5 Ejecucin
Tras haber configurado el agente SnortSam y haber aadido el plugin de salida al
Snort, se mostrar el funcionamiento del sistema.
Como se puede observar en primer lugar se muestran los plugins que SnortSam
utilizar para realizar el bloqueo/desbloqueo y comienza a escuchar las conexiones
provenientes de los plug-in de salida de los sensores Snort.
3.6 Prueba
Para comprobar el funcionamiento de SnortSam como IPS, se ha instalado el Agente
de SnortSam en el mismo computador donde reside el Snort y se ha utilizado como
plugin iptables para bloquear a las direcciones IP atacantes.
A pesar de que SnortSam permite una instalacin separada del agente y de los
sensores snort, para la realizacin de este ejemplo sencillo se implementarn en el
mismo host, puesto que slo se posee un sensor Snort y nos interesa ver simplemente su
funcionamiento.
Se listan todos los sensores Snort de los cuales SnortSam aceptar paquetes. En
este caso como slo tenemos un sensor de Snort se pone simplemente:
accept 192.168.1.179
En cuanto a las opciones del firewall, con el que SnortSam se comunicar para
realizar las acciones de bloqueo/desbloqueo se ha escogido fwsam, indicndole
la direccin IP del firewall que en este caso es la misma que la del IPS:
fwsam 192.168.1.179
iptables eth0
Los cambios que habr que realizar en la configuracin de Snort son los siguientes:
De esta forma cuando se detecte un ataque que coincida con cualquier regla de
Snort, se activar el plugin fwsam para bloquear la direccin IP atacante origen
(indicado por src) durante un tiempo de 5 minutos.
cd /etc/snort/rules
for file in $(ls -1 *.rules)
do
cat $file |sed "s/;)$/; fwsam:src,5 minutes;)/g" > $file.new
mv $file.new $file -f
done
Seguidamete se puede ver en la figura 6-3, la ejecucin del sensor Snort y del agente
SnortSam.
Por otro lado, desde otro ordenador con direccin IP 192.168.1.34 se enva un
ataque al IPS 192.168.1.179 como se puede ver en la figura 6-4, con idswakeup,
ejecutando:
Si se ejecuta iptables L se puede ver las reglas de iptables una vez que se ha
realizado el ataque y ha sido bloqueado en la figura 6-6.
Si se miran las alertas del Snort en la figura 6-7, se pueden ver alertas de ICMP de
destino inalcanzable ya que SnortSam ha bloqueado al atacante.
4 Snort_inline
Snort Inline toma paquetes desde iptables, entonces usa nuevos tipos de reglas
basados en snort para ayudar a iptables a decidir si el paquete debe atravesar la red o
debe ser descartado en base al conjunto de reglas snort. Se trata de un IPS basado en
red, que posee dos interfaces de red, una interna y otra externa. Los paquetes que se
detectan como sospechosos se descartan antes de que pasen a la interfaz interna y a la
red protegida, para realizar est accin Snort_inline va encolando los paquetes para
analizarlos utilizando las reglas de iptables.
4.1 Instalacin
Seguidamente se describen los pasos para la instalacin de SnortInline:
Iptables
Libnet
Pcre
o Se descomprime el paquete:
tar xvfz pcre-7.4.tar.gz.
Snort_Inline
4.2 Configuracin
Para configurar snort_inline se siguen los siguientes pasos:
o Drop. El tipo de regla drop comunicar a iptables que descarte los paquetes
y lo comunique a travs de log.
Esta regla descartar toda la actividad con destino el puerto 80. Esta regla se
puede aadir al archivo de reglas web-attacks.rules.
As pues habr que modificar las reglas de snort que son de tipo alert, para
convertirlas a las reglas de tipo snort_inline.
Se pueden convertir todas las reglas de Snort a modo inline ejecutando las
siguientes sentencias en lnea de comando que hacen uso de la funcin sed para
reemplazar la palabra alert por drop de la siguiente forma:
Captulo 6. Puesta en marcha de un IPS 15
cd /etc/snort_inline/rules/
for file in $(ls -1 *.rules)
do
sed -e 's:^alert:drop:g' ${file} > ${file}.new
mv ${file}.new ${file} -f
done
4.3 Ejecucin
A continuacin se explican los pasos necesarios para la ejecucin de snort_inline:
Snort_Inline debe interceptar todo el trfico que pasa por el kernel y redirigirlo
al espacio de usuario para comprobar los posibles paquetes de red maliciosos. El
kernel logra realizar esto poniendo los datos dentro de una cola usando el
mdulo ip_queue. Se puede cargar ip_queue y verificar su presencia como se
indica a continuacin:
modprobe ip_queue
lsmod | grep ip_queue
Para parar snort_inline habr en primer lugar que matar el proceso como sigue:
ps aux | grep snort_inline Devolver el num_proceso
kill num_proceso
# Inicio de daemons.
echo -n $"Starting ip_queue module:"
lsmod | grep ip_queue >/dev/null || /sbin/modprobe ip_queue;
echo -e '\t\t\t\t [ \033[32mOK\033[37m ]'
echo -n $"Starting iptables rules:"
iptables -N ip_queue
iptables -I INPUT -p tcp -j ip_queue
iptables -X ip_queue
echo -e '\t\t\t\t [ \033[32mOK\033[37m ]'
echo -n $"Unloading ip_queue module:"
rmmod ip_queue
echo -en '\t\t\t\t [ \033[32mOK\033[37m ]'
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/snort_inline
}
restart() {
stop
start
}
# Argumentos pasados.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|restart|}"
exit 1
esac
exit $RETVAL
4.4 Prueba
Para comprobar el funcionamiento de snort_inline se ha utilizado el esquema de red
que se puede ver en la figura 6-10.
Configuracin
Servidor Web. El servidor web consta de una interfaz de red eth1 con IP
privada 192.168.1.32. Este servidor deber de ejecutar el servidor web apache.
Tambin posee instalado Snort, para comprobar el nmero de alertas que le
llegan a dicho servidor cuando se produce el ataque.
Captulo 6. Puesta en marcha de un IPS 19
IPS. Posee dos interfaces de red: eth0 con direccin IP pblica 192.168.228.10 y
eth1 con direccin IP privada 192.168.1.1. El host que realiza la funcin de IPS,
deber de ejecutar snort_inline, iptables y deber de actuar como router.
Primero se habilita el forwarding para que el IPS pueda actuar como router. Para
ello se edita el fichero /proc/sys/net/ipv4/ip_forward:
less /proc/sys/net/ipv4/ip_forward
Seguidamente se redirige el trfico que entra por la interfaz eht0 al servidor web
de la red interna:
iptables -t nat -A PREROUTING -i eth0 -p TCP -j DNAT --to 192.168.1.32
Si se ejecuta iptables t nat L se pueden ver las reglas que se han aadido como
se puede ver en la figura 6-11.
Con estas modificaciones, sin tener snort_inline funcionando an, se puede ver que
si el atacante (192.168.228.128) intenta acceder al IPS mediante su direccin IP pblica
20 Utilizacin de Sistemas de Deteccin de Intrusos como Elemento de Seguridad Perimetral
Esto quiere decir que el IPS, est redirigiendo correctamente el trfico al servidor
web.
Funcionamiento
Para ello, en primer lugar se realizan los siguientes pasos en el host del IPS:
Se modifican todas las reglas de snort_inline para convertirlas a reglas tipo drop,
para que se descarten los paquetes cuya firma coincidan con las rules de snort.
En el servidor web, se ejecuta snort para comprobar el nmero de alertas que deja
pasar snort_inline. Para ello se ejecuta snort de la siguiente forma:
snort c /etc/snort/snort.conf i eth0 v
Captulo 6. Puesta en marcha de un IPS 21
Se enva un ataque con direccin origen la direccin IP del atacante, con direccin
IP destino la direccin pblica del IPS (192.168.228.10), se ejecutan 10000 con un TTL
de 100. El tiempo de vida del paquete debe ser alto para que le d tiempo de llegar al
destino.
[**] [116:46:1] (snort_decoder) WARNING: TCP Data Offset is less than 5! [**]
10/30-21:51:51.481968 192.168.228.128:0 -> 192.168.228.10:0
TCP TTL:100 TOS:0xE ID:9500 IpLen:20 DgmLen:63 DF
TCP header truncated
[**] [116:46:1] (snort_decoder) WARNING: TCP Data Offset is less than 5! [**]
10/30-21:51:51.481969 192.168.228.128:0 -> 192.168.228.10:0
TCP TTL:100 TOS:0xE ID:9500 IpLen:20 DgmLen:63 DF
TCP header truncated
[**] [116:46:1] (snort_decoder) WARNING: TCP Data Offset is less than 5! [**]
10/30-21:51:51.481969 192.168.228.128:0 -> 192.168.228.10:0
TCP TTL:100 TOS:0xE ID:9500 IpLen:20 DgmLen:63 DF
TCP header truncated
Por otro lado, en el servidor web donde se est ejecutando snort, mientras se
produce el ataque, se pueden ver el nmero de alertas que se han producido en la figura
6-13.
Esto quiere decir que snort_inline ha dejado pasar 1683 alertas al servidor web. El
hecho de que snort_inline no haya podido retener todas las alertas, se debe entre otras
posibles causas (como el rendimiento de la red donde se est llevando a cabo el
ejemplo), a que snort_inline no posee ciertos preprocesadores como ftp_telnet, dcerp,
dns, entre otros, y los ataques que idswakeup manda y que seran detectados por estos
preprocesadores no podrn ser descartados por snort_inline.
Otra prueba que se ha realizado es que mientras, se estn enviando los ataques desde
el host Atacante 192.168.228.128, se puede realizar actividad normal sobre el servidor
web, al que se estn enviando los paquetes que no descarta el snort_inline.
En la figura 6-14, se puede ver cmo se descarga el fichero desde el servidor web
mientras se enva el ataque.
Figura 6-14. Envo del ataque y descarga de fichero desde el servidor web
Para ello, se para el proceso snort_inline ejecutando: service snort_inline stop. Esto
limpiar las reglas de iptables que estn includas en el conjunto ip_queue creado
anteriormente, pero no las reglas de iptables t nat. Las reglas de iptables t nat que se
Captulo 6. Puesta en marcha de un IPS 23
En este caso, sin ejecutar snort_inline, han pasado ms ataques al servidor web, en
concreto han pasado 1054 ataques ms.