Tabla de Contenidos

¿Qué es PortSentry?

PortSentry es parte del conjunto de herramientas de seguridad del Proyecto Abacus. Es un programa diseñado para detectar y responder escaneos de puertos contra un host objetivo en tiempo real.

PortSentry detectará escaneos ocultos de SYN / half-open, FIN, NULL, X-MAS…

PortSentry informará todas las violaciones a los demonios syslog locales o remotos que indiquen el nombre del sistema, la hora de ataque, la IP del host atacante y el puerto TCP o UDP en el que se realizó un intento de conexión. Una vez que se detecta un escaneo, su sistema se convertirá en un agujero negro y desaparecerá del atacante.

Requisito previo

Instalación de Ubuntu Desktop 12.04 LTS Instalación de BackTrack 5 R1

Notas de la practica

Verificamos que tenemos conexión

root@ubuntu12:/# ifconfig -a

Si no tenemos conexion

root@ubuntu12:/# dhclient -v
root@ubuntu12:/# /etc/init.d/networking restart

Actualización del indice de paquetes

root@ubuntu12:/# apt-get update

Buscamos denyhosts

root@ubuntu12:/# apt-cache search portsentry

Instalamos los paquetes necesarios

root@ubuntu12:/# apt-get install portsentry 

Verificamos que se está ejecutando

root@ubuntu12:/# ps -eaf | grep -v grep | grep portsentry

ps -eaf, muestra todos los procesos.
grep -v grep, filtra el proceso grep.
grep denyhosts, muestra solo el proceso portsentry.

ver los ficheros de configuracion

root@ubuntu12:/etc/init.d# ls -l /etc/portsentry/

observamos 3 ficheros portsentry.conf que es el fichero de configuración
portsentry.ignore es el fichero donde añadimos las ips que PortSentry ignora si es escaneado
portsentry-ogmpre-statcc es el script para empezar el demonio

Para ver los mensajes de PortSentry en /grep/log/syslog

root@ubuntu12:/etc/init.d# grep portsentry /var/log/syslog

Nos indica que está instalado y está monitoreando varios puertos tanto TCP como UDP

Observamos si el script de portsentry se encuenta en init.d

root@ubuntu12:/etc# ls -l /etc/init.d/portsentry
root@ubuntu12:/etc# find /etc/rc*.d/* -print | xargs ls -l | grep portsentry

Nivel de ejecución Identifica las secuencias de comandos de inicio y finalización para denyhosts
Identifica el nivel de ejecución actual.
0 System Halt
1 usuario individual
2 Modo multiusuario completo (predeterminado)
3-5 Igual que 2
6 Reinicio del sistema

Detenemos el servicio y volvemos a arrancarlo con /etc/init.d/portsentry

root@ubuntu12:/etc# cd /etc/init.d
root@ubuntu12:/etc/init.d# ./portsentry stop
root@ubuntu12:/etc/init.d# ps -eaf | grep -v grep | grep portsentry

No devuelve nada, el servicio está parado

root@ubuntu12:/etc/init.d# ./portsentry start
root@ubuntu12:/etc/init.d# ps -eaf | grep -v grep | grep portsentry

Ahora nos devuelve 1 linea porque el servicio está ejecutandose

Parar e iniciar el servico squid3 con el comando "service"

root@ubuntu12:/etc/init.d# service portsentry status

Nos muestra el numero de proceso o PID, en mis caso es 3386.

root@ubuntu12:/etc/init.d# ps -eaf | grep -v grep | grep 3386

Tienes que reemplazar el PID por el tuyo

root@ubuntu12:/etc/init.d# service portsentry stop

este comando parara el demonio

root@ubuntu12:/etc/init.d# ps -eaf | grep -v grep | grep portsentrys

No muestra nada porque el proceso está detenido

root@ubuntu12:/etc/init.d# service portsentry start

Iniciamos el servicio

root@ubuntu12:/etc/init.d# ps -eaf | grep -v grep | grep portsentry

Abrimos el BackTrack y corremos un nmap con portsentry sin configurar

root@bt:~# nmap -p 1-65535 -T4 -A -v -PE -PS22,25,80 -PA21,23,80 192.168.153.47

hacemos un ping

root@bt:~# ping -c 5 192.168.153.47

Y observamos la respuesta

Volvemos al Ubuntu y observamos que se ha registrado alguna acción

root@ubuntu12:/# grep "attackalert" /var/log/syslog

Ha detectado el BackTrack, ahora vamos a configurar el PortSentry en el Ubuntu

root@ubuntu12:/# grep -n "BLOCK_UDP=" /etc/portsentry/portsentry.conf

En mi cado da la linea 135, abro con la sentencia nano

root@ubuntu12:/# nano +135 /etc/portsentry/portsentry.conf

y cambio los valores de BLOCK_UDP Y BLOCK_TCP de 0 a 1

Guardo los cambios y reinicio el servicio

root@ubuntu12:/# service portsentry stop
root@ubuntu12:/# service portsentry start

Vuelvo al BackTrack y ejecuto el nmap

root@bt:~# nmap -p 1-65535 -T4 -A -v -PE -PS22,25,80 -PA21,23,80 192.168.153.47

Hacemos un ping

root@bt:~# ping -c 5 192.168.153.47

Hacemos un telnet ssh

root@bt:~# telnet 192.168.153.47 22

Intentamos ver el puerto 80

root@bt:~# telnet 192.168.153.47 80

Todo inaccesible, nos ha bloqueado 8-)

Ahora volvemos al ubuntu y vamos a estudiar los resultados

root@ubuntu12:/# grep -n DENY /etc/hosts.deny

Ahora vamos a ver el fichero que contien las ips bloqueadas por escaneo

root@ubuntu12:/# grep -n Blocked /var/lib/portsentry/portsentry.blocked.tcp

Para ver las ips bloqueadas por puerto tcp

root@ubuntu12:/# grep -n Blocked /var/lib/portsentry/portsentry.history

Para ver las ips bloqueadas por puerto tcp y udp

root@ubuntu12:/# grep -n Blocked /var/lib/portsentry/portsentry.blocked.udp

Para ver las ips bloqueadas por puerto udp

root@ubuntu12:/# netstat -rn | grep "192.168.153.43"

Para desploquear el BackTrack tenemos que quitarlo del fichero hosts.deny

root@ubuntu12:/# service portsentry stop
root@ubuntu12:/# cd /etc/
root@ubuntu12:/etc# grep -v "192.168.153.43" hosts.deny > hosts.deny.new
root@ubuntu12:/etc# grep "192.168.153.43" hosts.deny.new | wc -l
root@ubuntu12:/etc# mv hosts.deny hosts.deny.old
root@ubuntu12:/etc# mv hosts.deny.new hosts.deny

Para borrar el historial

root@ubuntu12:/var/lib/portsentry# grep -v "192.168.153.43" portsentry.history > portsentry.history.new
root@ubuntu12:/var/lib/portsentry# 
root@ubuntu12:/var/lib/portsentry# grep "192.168.153.43" portsentry.history.new | wc -l
root@ubuntu12:/var/lib/portsentry# mv portsentry.history.new portsentry.history

Para borrar el tcp

root@ubuntu12:/var/lib/portsentry# grep -v "192.168.153.43" portsentry.blocked.tcp > portsentry.blocked.tcp.new
root@ubuntu12:/var/lib/portsentry# grep "192.168.153.43" portsentry.blocked.tcp.new | wc -l
root@ubuntu12:/var/lib/portsentry# mv portsentry.blocked.tcp.new portsentry.blocked.tcp

Para eliminar la ruta de rechazo

root@ubuntu12:/var/lib/portsentry# netstat -rn
root@ubuntu12:/var/lib/portsentry# route del -host 192.168.153.43 reject
root@ubuntu12:/var/lib/portsentry# netstat -rn

Volvemos a iniciar el servicio y hacemos un ping desde el Backtrack

Ya nos vuelve a aceptar LOL

Print de pantalla que hay que entregar desde el Ubuntu

root@ubuntu12:/var/lib/portsentry# cd /var/log
root@ubuntu12:/var/log# grep portsentry syslog | awk '{print $6}' | sort | uniq -c
root@ubuntu12:/var/log# date
root@ubuntu12:/var/log# echo "tu nombre"