Puertos Abiertos: Riesgos y Proteccion

Cada puerto abierto en tu servidor es una puerta potencial para atacantes. Los servicios expuestos a internet como bases de datos, FTP, SSH o paneles de administracion amplian significativamente la superficie de ataque. Muchas brechas de seguridad comienzan con un escaneo de puertos que revela servicios mal configurados o innecesariamente expuestos.

Estadisticas en tiempo real

68%

Tasa de aprobacion

229

Sitios analizados

86/100

Puntuacion media

Datos basados en escaneos reales de EscanearVulnerabilidades

Que es

Los puertos de red son puntos finales de comunicacion identificados por numeros del 0 al 65535. Cada servicio que se ejecuta en un servidor escucha en uno o mas puertos: HTTP usa el puerto 80, HTTPS el 443, SSH el 22, FTP el 21, MySQL el 3306, PostgreSQL el 5432, etc. Un puerto abierto significa que hay un servicio activo aceptando conexiones en ese puerto. Los atacantes utilizan herramientas como Nmap, Masscan o Shodan para descubrir que puertos estan abiertos en un servidor e identificar los servicios y versiones que se ejecutan, en un proceso conocido como escaneo de puertos o port scanning. Este reconocimiento es normalmente el primer paso de cualquier ataque dirigido.

Por que importa

Cada servicio expuesto a internet es un potencial punto de entrada para atacantes. Un servidor MySQL accesible desde internet (puerto 3306) puede sufrir ataques de fuerza bruta contra credenciales. Un servidor FTP abierto (puerto 21) transmite credenciales en texto plano y puede tener vulnerabilidades de escalacion de privilegios. Un servicio SSH con autenticacion por contrasena (puerto 22) es objetivo constante de ataques automatizados: un servidor tipico recibe miles de intentos de login SSH por dia. Servicios como Redis (6379) o MongoDB (27017) a menudo se despliegan sin autenticacion y, si estan expuestos, permiten acceso total a los datos. Segun reportes de seguridad, bases de datos expuestas a internet son responsables de miles de brechas de datos cada ano.

Problemas comunes

  • Puertos de base de datos expuestos (3306, 5432, 27017): MySQL, PostgreSQL y MongoDB accesibles desde internet, frecuentemente con credenciales debiles o sin autenticacion.

  • SSH con autenticacion por contrasena (puerto 22): vulnerable a ataques de fuerza bruta automatizados. Deberia usar solo autenticacion por clave publica.

  • FTP abierto (puerto 21): protocolo sin cifrado que transmite credenciales en texto plano. Debe reemplazarse por SFTP o SCP.

  • Paneles de administracion expuestos (8080, 8443, 9090): interfaces de gestion como phpMyAdmin, Webmin o cPanel accesibles sin restriccion de IP.

  • Servicios de cache expuestos (6379, 11211): Redis y Memcached sin autenticacion son vectores de ataque conocidos para exfiltracion de datos y mineria de criptomonedas.

  • Puertos de correo abiertos (25, 587, 143, 993): si no gestionas correo en tu servidor, estos puertos son superficie de ataque innecesaria.

Como solucionarlo

Aplica el principio de minimo privilegio: solo abre los puertos estrictamente necesarios para tu servicio (normalmente 80 y 443 para un servidor web). Usa un firewall como iptables, nftables o ufw para bloquear todo el trafico entrante excepto los puertos permitidos. Para servicios de administracion como SSH, restringe el acceso a IPs especificas o usa una VPN. Cambia los puertos por defecto de servicios sensibles cuando sea posible. Desactiva servicios que no uses. Realiza escaneos periodicos de tus propios servidores para detectar puertos abiertos inesperados.

bash Ejemplo de configuracion
# UFW (Ubuntu/Debian) - Configuracion basica de firewall
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 80/tcp    # HTTP
sudo ufw allow 443/tcp   # HTTPS
sudo ufw allow from 203.0.113.50 to any port 22  # SSH solo desde IP especifica
sudo ufw enable

# iptables - Bloquear todo excepto web y SSH desde IP
iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 203.0.113.50 -j ACCEPT

# SSH - Deshabilitar login por contrasena (/etc/ssh/sshd_config)
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
MaxAuthTries 3

Comprueba la seguridad de tu sitio web

Nuestro escaner analiza automaticamente la configuracion de puertos abiertos junto con otros 9 checks de seguridad. Recibe un informe completo con recomendaciones en minutos.

Escanea tu sitio web gratis

Guias relacionadas