🔐 Cómo exponer tu servidor a Internet sin que te lo hackeen (guía real de seguridad básica)


Tener un servidor web funcionando en local es fácil.

👉 Lo difícil es esto:

hacerlo accesible desde Internet sin comprometer su seguridad

Porque en cuanto abres tu servidor al mundo…

💀 empiezan los ataques automáticos.



🧠 Lo primero que debes entender


Cuando expones un servidor:

👉 cualquiera puede intentar conectarse

No importa si tu web es pequeña o desconocida.



📊 Lo que pasa en la realidad


En minutos tendrás intentos como:

  • acceso a /wp-admin
  • intentos de login SSH
  • escaneo de puertos
  • bots buscando vulnerabilidades

👉 Esto es NORMAL.



🎯 ¿Qué significa “exponer un servidor”?


Es permitir acceso desde Internet a un servicio.

Por ejemplo:

  • puerto 80 → HTTP
  • puerto 443 → HTTPS
  • puerto 22 → SSH

⚠️ ERROR típico


Abrir TODO:

ufw allow 1:65535/tcp

👉 Esto es una locura.



🔐 Regla básica


👉 abre solo lo que necesitas



🛡️ Paso 1: Firewall (UFW)


Si usas Linux (Ubuntu en Raspberry Pi en tu caso):



Instalar UFW


sudo apt update
sudo apt install ufw


Estado inicial


sudo ufw status


Política segura


sudo ufw default deny incoming
sudo ufw default allow outgoing

👉 Esto bloquea TODO por defecto.



🔓 Paso 2: Abrir solo puertos necesarios


🌐 Web


sudo ufw allow 80
sudo ufw allow 443


🔐 SSH (opcional)


sudo ufw allow 22


👉 Mejor aún:


sudo ufw allow from TU_IP to any port 22

🚀 Activar firewall


sudo ufw enable

🧪 Verificar


sudo ufw status numbered

🧠 Paso 3: Cambiar puerto SSH (opcional pero recomendado)


Archivo:

sudo nano /etc/ssh/sshd_config


Cambiar:

Port 22


Por ejemplo:

Port 2222


Reiniciar:

sudo systemctl restart ssh

👉 Reduce ataques automáticos.



🛡️ Paso 4: Instalar Fail2Ban


Esto es CLAVE.



¿Qué hace?


Bloquea IPs que intentan atacar.



Instalar


sudo apt install fail2ban


Activar


sudo systemctl enable fail2ban
sudo systemctl start fail2ban


Ver estado


sudo fail2ban-client status

👉 Ya tienes protección básica automática.



🌐 Paso 5: Exposición correcta (puertos + servicios)


Arquitectura correcta

Internet → Cloudflare → Reverse Proxy → Servidor


👉 Nunca expongas servicios innecesarios.



⚠️ Cosas que NUNCA debes exponer


  • MySQL (3306)
  • paneles admin sin protección
  • phpMyAdmin sin seguridad
  • APIs sin autenticación

🔐 Paso 6: HTTPS obligatorio


Con Cloudflare puedes activar:

👉 SSL gratuito

O usar:

certbot

🧠 Paso 7: Logs (tu mejor aliado)


Revisa:

/var/log/auth.log
/var/log/apache2/access.log
/var/log/apache2/error.log


👉 Aquí ves ataques en tiempo real.



🚨 Ejemplo real de ataque


GET /.env
GET /wp-login.php
GET /.git/config

👉 Bots buscando errores comunes.



🧪 Paso 8: Test rápido de seguridad


Desde otra máquina:

nmap TU_IP


👉 Solo deberían verse:

  • 80
  • 443
  • (opcional) SSH

🧠 Paso 9: Protección extra con Cloudflare


Ya lo viste en el post anterior:

👉 Cloudflare actúa como escudo



Beneficios:

  • oculta tu IP real
  • bloquea bots
  • filtra tráfico

Tu stack ideal:

Usuario → Cloudflare → Apache → App


Y protección:

  • UFW ✅
  • Fail2Ban ✅
  • Logs ✅

👉 Esto ya es nivel producción básica.




💡 Nota final

La diferencia entre:

👉 un servidor amateur

👉 y uno profesional

no es el hardware…

👉 es la seguridad.



📚 Lectura recomendada




🔙 Volver al post pilar:


👉 Cómo montar una infraestructura web real desde cero