**¿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** * En esta practica veremos cómo hacer lo siguiente: * Instalaremos PortSentry en Ubuntu. * Probamos NMAP en un PortSentry no configurado * Configuraremos PortSentry. * Probaremos NMAP en un PortSentry configurado * Le mostraremos cómo desbloquear un atacante. **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 {{:sad:ubuntu:p14:01.png?500|}} 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 \\ {{:sad:ubuntu:p14:02.png?500|}} 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 {{:sad:ubuntu:p14:03.png?500|}} **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 {{:sad:ubuntu:p14:04.png?500|}} 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 {{:sad:ubuntu:p14:05.png?500|}} 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 {{:sad:ubuntu:p14:07.png?500|}} Guardo los cambios y reinicio el servicio root@ubuntu12:/# service portsentry stop root@ubuntu12:/# service portsentry start {{:sad:ubuntu:p14:08.png?500|}} 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 {{:sad:ubuntu:p14:09.png?500|}} 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-) {{:sad:ubuntu:p14:10.png?500|}} 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" {{:sad:ubuntu:p14:11.png?500|}} ** 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 {{:sad:ubuntu:p14:12.png?500|}} **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 {{:sad:ubuntu:p14:13.png?500|}} **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 {{:sad:ubuntu:p14:14.png?500|}} **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 {{:sad:ubuntu:p14:15.png?500|}} Volvemos a iniciar el servicio y hacemos un ping desde el Backtrack {{:sad:ubuntu:p14:16.png?500|}} 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"