Cómo Comprobar y Asegurar Puertos Abiertos en Linux

Published:

Gestionar los puertos abiertos en un sistema Linux es fundamental para garantizar la seguridad y el correcto funcionamiento de las aplicaciones. Los puertos abiertos permiten la comunicación entre servicios, pero también pueden representar un riesgo si no se gestionan adecuadamente. En esta guía, explicaremos cómo verificar los puertos abiertos y asegurar el sistema mediante reglas de firewall y mejores prácticas.

Cómo Comprobar Puertos Abiertos en Linux

Existen varias herramientas para identificar los puertos abiertos y en escucha en un sistema Linux:

1. Usando netstat

netstat permite visualizar los puertos activos y sus servicios asociados:

sudo netstat -tulnp

Parámetros clave:

  • -t: Muestra puertos TCP.
  • -u: Muestra puertos UDP.
  • -l: Muestra puertos en escucha.
  • -n: Muestra direcciones numéricas en lugar de resolver nombres de host.
  • -p: Muestra los ID y nombres de los procesos.

Ejemplo de salida:

tcp6       0      0 :::8006                 :::*                    LISTEN      1826/pveproxy       
tcp6       0      0 :::8080                 :::*                    LISTEN      4744/syncthing      
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1022/cupsd  

Para verificar puertos inesperados:

sudo netstat -tulnp | grep LISTEN

2. Usando ss (Recomendado)

ss es una alternativa más rápida y eficiente a netstat:

sudo ss -tulnp

Muestra información similar pero con mejor rendimiento.

3. Usando lsof

lsof lista archivos abiertos, incluyendo sockets de red:

lsof -i -P -n

Parámetros:

  • -i: Muestra conexiones de red.
  • -P: No resuelve números de puerto a nombres.
  • -n: No resuelve direcciones IP a nombres de host.

4. Usando nmap (Para Escaneo Remoto)

Para comprobar puertos abiertos en un sistema remoto:

nmap -p- <IP-DEL-SERVIDOR>
  • -p-: Escanea todos los 65535 puertos.

Cómo Asegurar Puertos Abiertos en Linux

1. Cerrar Puertos No Necesarios

Si un servicio no es necesario, se debe detener y deshabilitar:

sudo systemctl stop <servicio>
sudo systemctl disable <servicio>

2. Usar un Firewall

Los firewalls controlan el tráfico permitiendo o bloqueando puertos.

Usando ufw (Ubuntu/Debian)

Permitir un puerto:

sudo ufw allow 22/tcp

Bloquear un puerto:

sudo ufw deny 23/tcp

Habilitar el firewall:

sudo ufw enable

Usando firewalld (Sistemas Basados en RHEL)

Permitir un puerto:

sudo firewall-cmd --add-port=22/tcp --permanent
sudo firewall-cmd --reload

Bloquear un puerto:

sudo firewall-cmd --remove-port=23/tcp --permanent
sudo firewall-cmd --reload

Usando iptables

Permitir acceso SSH solo desde una IP específica:

sudo iptables -A INPUT -p tcp --dport 22 -s <IP-PERMITIDA> -j ACCEPT

Bloquear todo el tráfico entrante excepto SSH:

sudo iptables -P INPUT DROP
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Guardar reglas del firewall:

sudo iptables-save > /etc/iptables.rules

3. Implementar Port Knocking

¿Qué es Port Knocking?

Port Knocking es una técnica de seguridad que permite abrir puertos de red solo cuando se recibe una secuencia específica de intentos de conexión. Funciona como una «cerradura oculta» para los servicios en red, lo que ayuda a proteger el acceso contra ataques de escaneo de puertos y accesos no autorizados.

En lugar de mantener un puerto abierto permanentemente (como el 22 para SSH), el servidor solo abrirá el puerto después de que el usuario envíe una serie de intentos de conexión a puertos predefinidos en un orden específico.

¿Cómo Funciona Port Knocking?

  1. El servidor está configurado para bloquear los puertos sensibles (como SSH).
  2. El cliente envía una secuencia de «golpes» a diferentes puertos en un orden específico (por ejemplo, primero al puerto 3000, luego al 4000 y finalmente al 5000).
  3. El servidor detecta la secuencia correcta y abre el puerto deseado temporalmente, permitiendo el acceso al cliente.
  4. Después de un tiempo o cuando el usuario se desconecta, el puerto se cierra nuevamente.

Conclusión

Comprobar y asegurar los puertos abiertos es una práctica fundamental en la administración de sistemas Linux. La supervisión regular y la configuración adecuada del firewall ayudarán a proteger el sistema contra amenazas y accesos no autorizados.

- Advertisement -
Jorge
Jorgehttps://nksistemas.com
Soy Jorge, Sr Sysadmin Linux/DevOps/SRE y creador de NKSistemas.com Trabajo con plataformas: Linux, Windows, AWS, GCP, VMware, Helm, kubernetes, Docker, etc.

Related articles