Para realizar esta práctica, previamente hemos tenido que haber estudiado NMAP e IPTABLES
Os recomiendo leer este artículos de Nmap, en breve pondré el de IPTABLES.
Existen varias técnicas de escaneo de puertos, las cuales varían según las necesidades y habilidades del atacante. Antes de hablar de cada una de ellas, se debe de comprender lo que significa el intercambio en tres vías del protocolo TCP.
Se debe de tener presente que el protocolo TCP es un protocolo que trabaja en la capa de trasporte (Capa 4) del modelo de referencia OSI y es un protocolo orientado a conexiones, es decir que antes de comenzar a trasmitir información entre dos host, estos primero deben de sincronizarse y realizar de forma completa lo que se conoce como intercambio de tres vías.
A continuación se van a simular las tres posibilidades que se pueden encontrar al realizar un escaneo con Nmap SYN scan viendo el tránsito de paquetes entre ambas máquinas.
El escaneo se va a realizar al puerto 80 únicamente para poder analizar bien los paquetes. Se usarán los siguientes comandos para escanear en una máquina y para escuchar las conexiones en la otra:
nmap -sS -p 80 172.16.2.128
tcpdump -i eth0 ‘host 172.16.2.129’
Posibles estados de los puertos:
➢ Open: puerto abierto a la espera de una conexión con un servicio tras él a la escucha.
➢ Closed: puerto accesible pero sin ninguna aplicación escuchando tras él.
➢ Filtered: Nmap no recibe respuestas y por tanto no puede establecer el estado, probablemente por la presencia de algún tipo de filtrado (firewall, IDS, etc.).
Posibles respuestas:
Nos ponemos en situación, el servidor tiene arrancado el servidor Apache. El cliente pregunta, ¿tienes el puerto 80 abierto?, el servidor contesta con otro SYN, diciéndole que SI lo tiene abierto, pero el cliente envía un RESET diciéndole a servidor, que en ese momento no quiere nada con ese puerto 80.
De esta forma se está realizando un escaneo TCP SYN (-sS) y se intercambian los paquetes SYN, la conexión no queda establecida porque no se manda el ACK del SYNC que envía el cliente sino que se envía un RESET.
Cliente:
#nmap -sS -p 80 172.16.2.128
Aquí lo que hacemos es escanear el Puerto 80 en el servidor cuya IP es 172.16.2.128
Servidor:
#tcpdump -i eth0 ‘host 172.16.2.129’
Aquí lo que hacemos es escuchar en la eth0 y filtrar al equipo cliente por la IP que tiene que sería 172.16.2.129
En este último caso el cliente preguntaría, ¿tienes el puerto 80 abierto? Y el servidor NO respondería.
En el FILTERED no se recibe respuesta alguna. Para provocarlo se puede introducir la siguiente regla.
En Cliente:
#nmap -sS -p 80 172.16.2.128
El borrado de reglas iptables -F
Para ver las reglas iptables -L
Servidor:
#iptables -A INPUT -i eth0 -p tcp -m tcp –dport 80 -j DROP
La máquina cliente envía una segunda vez un SYN puesto que en el primer SYN no ha obtenido respuesta.
En este caso la situación sería la siguiente, el cliente preguntaría con un SYN, ¿tienes el puerto 80 abierto?, y el servidor respondería con un RESET, NO tengo el puerto 80 abierto.
En el CLOSED devuelve un RESET y deberá realizarse con la siguiente regla.
En Cliente:
#nmap -sS -p 80 172.16.2.128
El borrado de reglas iptables -F
Para ver las reglas iptables -L
En servidor:
# iptables -A INPUT -i eth0 -p tcp -m tcp –dport 80 -j REJECT –reject-with tcp-reset
# tcpdump -i eth0 ‘host 172.16.2.129’