GNU/Linux >> Tutoriales Linux >  >> Linux

Exploraciones efectivas de puertos de Linux para el administrador de la red

¿Está buscando una manera de mejorar la seguridad de su red? ¿Por qué no aprender a realizar un escaneo de puertos de Linux como un profesional?

En este tutorial, aprenderá sobre algunas de las herramientas y técnicas más populares y anticipará los posibles riesgos y recompensas asociados con el escaneo de puertos.

¿Suena prometedor? ¡Comience a escanear puertos para proteger su red hoy mismo!

Requisitos

Este tutorial será una demostración práctica. Si desea continuar, asegúrese de tener un sistema Linux:este tutorial usa Ubuntu 20.04, pero cualquier distribución moderna de Linux funcionará.

Escaneo de puertos abiertos con Nmap

Hay varias formas de escanear puertos, y Nmap es una excelente herramienta para el descubrimiento de redes y la auditoría de seguridad. Nmap le permite encontrar hosts y servicios en una red informática mediante el envío de paquetes y el análisis de las respuestas.

Nmap está disponible de forma gratuita y es compatible con Windows, Linux y OS X.

El escaneo de puertos le permite sondear un servidor o host en busca de puertos abiertos, lo que resulta útil por varios motivos:

  • Descubrir qué servicios se ejecutan en un host.
  • Descubriendo vulnerabilidades
  • Enumeración de un sistema.

Pero antes de aprovechar Nmap, primero deberá instalar Nmap en su máquina:

1. Ejecute el siguiente comando apt update para actualizar el índice de paquetes del sistema.

apt update -y

2. A continuación, ejecute el siguiente comando apt install para instalar Nmap.

apt install nmap -y

3. Ejecute el siguiente comando nmap –version para verificar la versión de Nmap instalada en su máquina.

nmap --version

A continuación, la versión instalada de Nmap es 7.80, la última versión de este escrito.

4. Ahora, ejecute el siguiente comando nmap para escanear el nombre de host o la dirección IP de destino (scanme.nmap.org). Solo necesita un mínimo de opciones para comenzar.

nmap scanme.nmap.org

A continuación se muestra el desglose de la salida del escaneo:

  • La dirección IPv4 del objetivo:45.33.32.156 .
  • La dirección IPV6 del objetivo (si está disponible):2600:3c01::f03c:91ff .
  • Nombre de DNS inverso (si está disponible).

También puede ver cada puerto y su estado en la salida:

  • abrir – Indica que el puerto está abierto y escucha las conexiones entrantes.
  • cerrado – Indica que el puerto está cerrado y no escucha las conexiones entrantes.
  • filtrado – Indica que el puerto se está filtrando y Nmap no puede determinar si el puerto está abierto o cerrado. Nmap envía sondeos al puerto pero no obtiene respuesta.

Escaneo de puertos específicos

Nmap hace muchas cosas en segundo plano para tratar de determinar el estado de cada puerto. Puede personalizar aún más su escaneo agregando opciones de CLI para un mayor control, como el -p opción. Esta opción le permite especificar qué puertos escanear.

1. Ejecute el siguiente comando para escanear el puerto 80 en su nombre de host de destino (scanme.nmap.org). Este comando le permite saber si el puerto 80 del host de destino está abierto o cerrado.

nmap -p 80 scanme.nmap.org

A continuación, puede ver que el puerto 80 está abierto. Este estado le indica que el servidor web se está ejecutando en el puerto 80.

2. Luego, ejecute el siguiente comando para usar los servidores DNS públicos de Google (8.8.8.8 y 8.8.4.4) para escanear el puerto 80 del nombre de host (scanme.nmap.org).

La opción –dns-servers le permite especificar qué servidores DNS usar para escanear. Esta opción es útil cuando desea escanear un host en una red diferente. Mientras que el indicador -v le brinda más información sobre el escaneo.

nmap --dns-servers -p 80 8.8.8.8,8.8.4.4 -v scanme.nmap.org

Puede ver a continuación que Nmap utiliza los servidores DNS públicos de Google para resolver el nombre de host y que la exploración es exitosa.

3. Por último, ejecute el siguiente comando para escanear el puerto 80 del nombre de host (scanme.nmap.org) como lo hizo en el paso uno. Pero esta vez, agregue la opción -d para aumentar el nivel de depuración a 3. Esta opción es útil para solucionar problemas con Nmap.

La opción -d toma un número entero (entre 0 y 9) como argumento. Cuanto mayor sea el número, más resultados de depuración verás.

El nivel 9 es para resultados muy detallados, lo que resulta útil para los desarrolladores que trabajan en Nmap.

nmap -d 3 -p 80 scanme.nmap.org

Escaneo de puertos usando Netcat (Ncat)

Netcat (nc ) es una herramienta de línea de comandos para la exploración de redes, auditorías de seguridad y pruebas de penetración. Puede usar Netcat para crear conexiones TCP y UDP simples y proxies SOCKS y HTTP más complejos. Pero en este tutorial, usará Netcat para escanear puertos abiertos en sistemas remotos.

1. Ejecute el siguiente comando nc para buscar puertos abiertos sin enviar ningún dato (-z) desde los puertos 20 al 1000 en 159.89.176.25. La opción -v le dice a Netcat que sea detallado para que pueda ver lo que sucede durante el escaneo.

nc -z -v 159.89.176.25 20-1000

El rango de puertos se puede aumentar o disminuir según sea necesario. Pero los puertos 20-1000 cubren una amplia gama de puertos de uso común.

El siguiente resultado muestra qué puertos están abiertos y su estado de conexión es el siguiente:

  • Conexión rechazada – Indica que la conexión ha sido rechazada por el puerto correspondiente, lo que probablemente se deba a la falta de un servicio ejecutándose en ese puerto:el puerto está cerrado.
  • ¡Conseguido! – Indica que la conexión es exitosa:el puerto está abierto.

Además del puerto 22 (SSH), que está abierto en el sistema remoto, también verá muchos otros mensajes que pueden ser molestos. Entonces, vaya al siguiente paso para filtrar la salida.

2. Ejecute el comando grep a continuación para escanear los puertos 20 a 100 en 159.89.176.25, y solo muestre los puertos abiertos de cada resultado de escaneo que tenga la palabra exitosa en ellos.

La parte 2>&1 le dice al shell que redirija stderr (descriptor de archivo 2) a stdout (descriptor de archivo 1), por lo que verá el mensaje de error en la salida si hay uno.

nc -z -v 159.89.176.25 20-100 2>&1 | grep succeeded

Como puede ver a continuación, solo está abierto el puerto 22, que también tiene el mensaje de éxito.

3. Por último, ejecute el mismo comando que en el paso dos. Pero esta vez, agregue la opción -u para buscar puertos UDP, como se muestra a continuación.

nc -z -v -u 159.89.176.25 20-100 2>&1 | grep succeeded

Tenga en cuenta que el análisis tarda mucho más en buscar puertos UDP que TCP:

  • Un escaneo TCP intenta establecer una conexión con el host de destino, escaneando los 65 535 puertos para ver cuáles están abiertos.
  • Un escaneo UDP no intenta establecer una conexión, sino que envía un paquete UDP a cada uno de los puertos del host de destino para ver cuáles están abiertos. Un escaneo UDP es más bajo que un escaneo TCP porque envía un paquete y completa el manejo de errores y el protocolo de enlace de 3 vías.

Puede ver a continuación que la salida está en blanco ya que no se están ejecutando servicios UDP en el sistema remoto.

Comprobar si un puerto está abierto mediante un script Bash

Hasta ahora, ha visto cómo usar Netcat y Nmap para buscar puertos abiertos en un sistema. Si bien estas herramientas son útiles, no son confiables cuando se automatiza la tarea de escanear puertos.

Por ejemplo, planea buscar puertos abiertos en 1000 hosts. En ese caso, la exploración manual de puertos se vuelve tediosa y tarda mucho tiempo en finalizar. Pero, ¿cómo automatizas las tareas de escaneo de puertos en Linux? Escribir un script Bash hará el truco.

Para crear un script Bash para automatizar el escaneo de puertos:

1. Abra un archivo nuevo en su editor de texto favorito. Nombra el archivo como quieras, pero el archivo se llama ports.sh para este tutorial.

nano ports.sh

2. Agregue el siguiente código a ports.sh archivo, pero asegúrese de reemplazar los valores SERVIDOR y PUERTO con su propia dirección IP o nombre de host y puerto para escanear.

Después de cambiar los valores, guarde los cambios y cierre el editor.

# Defines the server you want to scan. 
SERVER=adamtheautomator.com
# Defines the port to scan.
PORT=443
# Runs the nmap command and assigns the output to the state variable. 
# The grep command filters and displays the output of the nmap command
# with the lines containing the "open" keyword.
state=`nmap -p $PORT $SERVER | grep "$PORT" | grep open`
# Checks if the state variable is blank (port is closed).
if [ -z "$state" ]; then
	# Displays a message if the connection fails.
  echo "Connection to $SERVER on port $PORT has failed"
else
	# Displays a message if the connection succeeded.
  echo "Connection to $SERVER on port $PORT was successful"
	# Exits the script with an exit code of 1 
	# to determine if the script was successful or not.
  exit 1
fi # Ends the if statement

3. Finalmente, ejecute el siguiente comando bash para ejecutar su secuencia de comandos ports.sh.

bash ports.sh

Si todo va bien, verá el siguiente resultado que indica que el puerto 443 está abierto en adamtheautomator.com.

Conclusión

En este tutorial, ha aprendido a buscar puertos abiertos en un sistema con Netcat y Nmap. Además de estas herramientas, ha escrito un script Bash para automatizar el escaneo de puertos para que pueda realizar otras tareas en su plato.

En este punto, ya tiene una buena comprensión de cómo usar estas herramientas para buscar puertos abiertos en un sistema para que pueda mantener su red segura. Pero para automatizar aún más las tareas de escaneo de puertos, ¿por qué no crear trabajos cron para programar la ejecución de sus scripts Bash?


Linux
  1. Una guía de la terminal de Linux para principiantes

  2. 10 comandos de Linux para diagnóstico de red

  3. Ejemplos útiles de excavación de Linux para el administrador de red

  4. Encontrar paquetes para Kali Linux

  5. Kali en el subsistema de Windows para Linux

GalliumOS:la distribución de Linux para Chromebooks

Los 50 comandos IP útiles de Linux para administradores de red

Los 10 mejores escáneres de puertos Linux para administradores de red

Comandos prácticos de Linux y Unix Tee para el administrador de Linux

Ejemplos útiles de tcpdump Linux para el administrador de red

Comandos Nmap - 17 comandos básicos para la red Linux