Acceso remoto a un servidor Linux: SSH, UFW, port forwarding y DDNS paso a paso

Cuando montas un servidor Linux en casa o en la oficina (en este caso Debian 12 con osTicket), tarde o temprano necesitas poder llegar a él desde fuera de tu red local. Esta guía recoge el flujo completo: endurecer el acceso SSH, configurar el firewall UFW, abrir los puertos en el router con port forwarding y dejar el servidor accesible por un nombre estable con DDNS, aunque tu IP pública cambie.

1. SSH: configuración básica

Diferencia entre los dos archivos de configuración

  • sshd_config: cómo se comporta tu equipo cuando otros se conectan a él (servidor).
  • ssh_config: cómo se comporta tu equipo cuando te conectas a otros (cliente).

Cambiar el puerto SSH (de 22 a 2235)

El puerto 22 recibe miles de intentos automatizados al día. Moverlo a un puerto alto no es seguridad real, pero reduce mucho el ruido en los logs.

Edita el archivo de configuración del servidor SSH:

sudo nano /etc/ssh/sshd_config

Busca la línea #Port 22 y cámbiala por Port 2235. Después guarda y reinicia el servicio:

sudo systemctl restart sshd

Aviso: antes de reiniciar el servicio, abre el nuevo puerto en el firewall o perderás el acceso a la máquina.

Conectarse especificando puerto

ssh -p 2235 usuario@ip_del_servidor

Simplificar conexiones con ssh_config

En lugar de escribir siempre todos los parámetros, guárdalos en ~/.ssh/config (en el equipo cliente):

Host miservidor
    HostName 192.168.1.50
    User tu_usuario
    Port 2235

Y conéctate simplemente con ssh miservidor. Puedes definir varios servidores en el mismo archivo, cada uno con su bloque Host.

2. Firewall UFW

UFW es la forma más sencilla de gestionar reglas de firewall en Debian/Ubuntu sin pelearse con iptables.

Instalación y estado

sudo apt install ufw
sudo ufw status

Importante: permitir SSH antes de activar

Aviso: si activas UFW sin abrir antes el puerto SSH, perderás el acceso al servidor si estás conectado en remoto.

sudo ufw allow 2235
sudo ufw enable

Permitir y denegar puertos

sudo ufw allow 80
sudo ufw allow 443
sudo ufw deny 3306

El primer comando abre HTTP, el segundo HTTPS y el tercero cierra MySQL al exterior (debe quedar accesible solo desde la red local).

Borrar reglas

La forma más cómoda es por número:

sudo ufw status numbered
sudo ufw delete 2

También puedes borrar por nombre de regla, por ejemplo sudo ufw delete allow 80. Para desactivar el firewall por completo: sudo ufw disable.

3. Acceso desde fuera: port forwarding

El router recibe las conexiones del exterior y las redirige al servidor interno. Los pasos en el router son siempre los mismos:

  • Entrar al panel de administración del router.
  • Buscar la sección Port Forwarding o Redirección de puertos.
  • Crear una regla del tipo: puerto externo 80 → IP interna del servidor → puerto interno 80 (o 8080, ver siguiente apartado).

Aviso: el servidor debe tener IP fija en la red local para que el port forwarding funcione siempre. Si la IP cambia, la regla deja de apuntar al sitio correcto.

4. DDNS: acceder por nombre aunque cambie la IP

La mayoría de conexiones domésticas tienen IP pública dinámica, es decir, cambia cada cierto tiempo. Un servicio de DDNS asocia un nombre de dominio a tu IP y lo va actualizando automáticamente.

Opción A: DDNS integrado en el router

Muchos routers incluyen soporte para DynDNS o equivalentes. Revisa en el panel del router la sección DDNS.

Opción B: No-IP (si el router no tiene DDNS)

  • Crear cuenta en noip.com con su plan gratuito.
  • Crear un hostname, por ejemplo miservidor.ddns.net.
  • Instalar el cliente en el servidor Debian.
sudo apt install noip2
sudo noip2 -C
sudo noip2
sudo systemctl enable noip2

Aviso: el plan gratuito de No-IP requiere confirmar el hostname cada 30 días o lo desactivan. Si lo usas en producción real, conviene moverse a un plan de pago o a un dominio propio con DNS dinámico.

5. Cambiar el puerto de Nginx (de 80 a 8080)

Algunos routers usan el puerto 80 para su propio panel y no permiten redirigirlo hacia dentro. La solución habitual es que el servidor escuche en el 8080 y que el router redirija el puerto 80 externo al 8080 interno.

1. Editar la configuración de Nginx

sudo nano /etc/nginx/sites-available/osticket

Cambia listen 80; por listen 8080;.

2. Abrir el nuevo puerto en UFW

sudo ufw allow 8080
sudo ufw delete allow 80

3. Verificar y recargar Nginx

sudo nginx -t
sudo systemctl reload nginx

4. Ajustar el port forwarding en el router

Puerto externo 80 → puerto interno 8080. Para los usuarios, la URL sigue siendo la normal, sin tener que escribir el puerto.

Resumen del flujo completo

PasoAcción
1. Servidor localosTicket corriendo en Debian 12.
2. IP fija internaEl servidor tiene siempre la misma IP en la red local.
3. UFWPuertos 8080 (web) y 2235 (SSH) abiertos.
4. Port forwardingEl router redirige el puerto 80 externo al 8080 del servidor.
5. DDNSNo-IP actualiza el nombre de dominio con la IP pública.
6. AccesoEl usuario entra desde cualquier sitio escribiendo miservidor.ddns.net.

Con este esquema tienes un servidor casero o de oficina accesible desde internet de forma controlada: con el puerto SSH movido para reducir ruido, el firewall filtrando lo que no debe entrar y un nombre estable aunque tu operador te cambie la IP pública.


Publicado

en

por

Etiquetas:

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *