[Linux] Escaneando la red en busca de puertos abiertos

En la informática, cuando queremos ofrecer un servicio en red, necesitamos un servidor, el cual se comunica con los clientes a través de un puerto. Hay una grandísima variedad de servicios que podamos ofrecer: web, FTP, SSH, correo… Todos los servicios tienen un puerto por defecto, y por suerte podemos escanear la red en busca de qué equipos ofrecen esos servicios con una herramienta llamada nmap (Network Mapper). Es gratuita, y es open source, por lo cual no tendréis que piratear nada.

Para instalarlo sólo tendréis que poner en el terminal:

sudo apt-get install nmap
o si no usas apt…
sudo yum install nmap

Dependiendo de tu distribución, deberás usar Aptitude o Yellowdog Manager para instalar el paquete. Algunas distribuciones especializadas, como Kali Linux, lo llevan incluido por defecto.

Una vez lo tenemos instalado, tendremos que ejecutar el comando idóneo para poder obtener los resultados.

Ejemplo práctico: Buscaremos servidores HTTP en una red guardando el resultado del fichero en un archivo de texto.

nmap -p 80 --open -sV 192.168.1.0/24 > web.txt

Notaréis que el terminal se cuelga. Es normal. Puede tardar un rato dependiendo de lo grande que sea la red. Una vez acabe el comando, podremos abrir el archivo de texto con un editor gráfico como gedit o des del terminal con cat o bien nano. Un resultado de ejemplo podría ser:

Nmap scan report for 192.168.1.60
Host is up (0.00061s latency).
PORT    STATE SERVICE VERSION
80/tcp  open  http    apache
MAC Adress: AB:CD:EF:12:34:56 (Manufacturer)

Una vez visto el comando y el resultado que puede ofrecer, toca explicar ambos para que los podáis usar.

  • p 80 –open – El argumento -p permite indicar un puerto a escanear en cada equipo de red. El argumento –open indica que el puerto a escuchar debe estar ABIERTO. Los servidores HTTP tienen por defecto el puerto 80, aunque éste puede cambiar.
  • -sV – Nos indica la versión de servicio que está utilizando ese puerto. Por ejemplo, Apache, Nginx, IIS o micro_httpd, entre otros..
  • 192.168.1.0/24 – Ésta es la red y su máscara por defecto usadas en el tutorial. En casas la máscara suele ser de 24 bits, por eso ponemos después de la IP el /24. Para escanear la red entera hay que indicar una IP que acabe en 0, debido a que 0 es el identificador de esa red. Más adelante haré un tutorial de cómo calcular una máscara de red.
  • > web.txt – Poner eso al final de cualquier comando hará que todo lo que se vaya a mostrar se guarde en un archivo de texto, para poder verlo luego con más calma.

Puede que tengáis dudas sobre el puerto, así que aquí os dejo una pequeña lista con puertos que pueden ser interesantes.

  • 20 – FTP (datos)
  • 21 – FTP (control)
  • 22 – SSH
  • 23 – Telnet
  • 25 – SMTP
  • 53 – DNS
  • 67, 68 – DHCP
  • 80 – HTTP
  • 110 – POP
  • 161 – SNMP
  • 443 – HTTPS

Espero que este tutorial os sea útil. ¡Saludos!

Deja un comentario