Sem Agente · Sem Instalação

Jump Server: Guía de Seguridad

Jump Server: La Guía para Amplificar tu Seguridad — Cómo Construir, Proteger y No Convertir Tu Bastión en la Puerta Trasera Cómo un servidor pequeño y dedicado puede ser la diferencia entre soporte organizado y el próximo titular sobre ransomware. Y cómo, si está mal configurado, puede ser también la puerta exacta por donde entra el atacante.

Jump Server: La Guía para Amplificar tu Seguridad — Cómo Construir, Proteger y No Convertir Tu Bastión en la Puerta Trasera

Cómo un servidor pequeño y dedicado puede ser la diferencia entre soporte organizado y el próximo titular sobre ransomware. Y cómo, si está mal configurado, puede ser también la puerta exacta por donde entra el atacante.

Introducción

Si leíste el post anterior sobre acceso remoto seguro, ya sabes la regla de oro: nunca expongas RDP, SSH o ningún servicio administrativo directamente en internet. Pero entonces surge la pregunta práctica: ¿cómo acceden el equipo de soporte, los DBAs, los sysadmins y los proveedores a los servidores cuando lo necesitan?

La respuesta tradicional es el jump server — también llamado bastion host, stepping stone server, jump box. Es un concepto que tiene más de 30 años y sigue siendo relevante porque resuelve un problema fundamental: centralizar y controlar todo el acceso administrativo a una infraestructura.

Pero aquí está la paradoja: un jump server mal configurado es peor que no tener jump server. ¿Por qué? Porque crea una falsa sensación de seguridad. Crees que estás protegido porque tienes "ese bastión", cuando en realidad se convirtió exactamente en lo que deberías evitar — un único punto, conocido, expuesto, y lleno de privilegios.

Parte 1: Qué es (y qué no es) un jump server

Un jump server es una máquina dedicada, endurecida al máximo, posicionada como único punto de paso entre el mundo externo y los recursos internos críticos.

En lugar de que cada servidor exponga SSH o RDP, solo el jump server acepta conexiones. Quien necesita administrar cualquier cosa, primero entra en el jump server, y desde allí alcanza los destinos.

La analogía: si tu infraestructura es un edificio, el jump server es la portería con torniquete. Nadie entra directo a las salas — todo el mundo pasa por la portería, muestra su credencial, se registra.

Lo que NO es jump server:

  • Servidor "cualquiera" con TeamViewer
  • VPN (VPN te coloca en la red; jump te da acceso a una máquina específica)
  • Servidor de producción
  • Sustituto para gestión de identidades
  • "Seguro por existir"

Por qué existe:

  1. Reduce superficie de ataque (1 punto vs N)
  2. Centraliza autenticación y autorización
  3. Centraliza logs y auditoría
  4. Permite grabación de sesión
  5. Aplica políticas uniformes
  6. Funciona como punto de cuarentena
  7. Permite soporte a proveedores sin dolor
  8. Costo bajo

Parte 2: Arquitecturas

2.1 Jump server simple

Internet → [Firewall] → [Jump] → [Servidores]

Para equipos pequeños. Limitación: punto único de fallo y comprometimiento.

2.2 Jump server dual (chained)

Internet → [FW ext] → [Jump 1 DMZ] → [FW int] → [Jump 2 interno] → [Servidores]

Para ambientes regulados. El atacante necesita comprometer dos servidores.

2.3 Jump server con broker / PAM

El broker valida todo, obtiene credenciales temporales del cofre, establece la sesión sin mostrar la contraseña. Soluciones: CyberArk, BeyondTrust, Delinea, HashiCorp Boundary, Teleport.

2.4 Jump server multi-tenant (MSPs)

Centraliza acceso a múltiples clientes. Cuidado: se convierte en el objetivo de los sueños. Idealmente, cada cliente debería tener su propio jump segregado.

Parte 3: Lo que necesita tener dentro

3.1 Sistema operacional minimalista

Jump server no es una estación de trabajo. Sin Office, sin navegador, sin aplicación, sin nada no-esencial.

# Ubuntu/Debian minimal
sudo apt install --no-install-recommends openssh-server ufw fail2ban auditd rsyslog
sudo apt purge -y telnetd rsh-server xinetd nis ypbind tftp tftpd talk talkd snmpd
sudo apt autoremove -y

sudo ss -tulpn
sudo systemctl list-units --type=service --state=running

Windows: usa Server Core siempre que sea posible.

3.2 Solo herramientas necesarias

Linux jump típicamente tiene: OpenSSH, cliente RDP (xfreerdp), mysql/psql client, nmap, dig, traceroute, tcpdump, vim, tmux, ansible.

Windows jump típicamente tiene: mstsc, PuTTY, RSAT, PowerShell modules, SSMS.

Lo que NO debe tener: navegador, correo, Office, Adobe Reader, cliente Java, software personal, compiladores.

Regla: si no puedes justificarlo, no necesita estar allí.

3.3 Red y segmentación

Entrada:

  • Solo puerto de acceso (SSH, RDP o HTTPS vía ZTNA)
  • Whitelist de IPs de origen
  • Bloqueo geográfico

Salida:

  • Solo puertos necesarios para destinos permitidos
  • Bloqueo de salida sin restricción a internet — crítico

Si el atacante compromete el jump, lo primero será descargar herramientas y conectarse a C2. Bloqueando la salida, rompes la cadena.

3.4 Hardening del SSH

# /etc/ssh/sshd_config

Port 52281
AddressFamily inet
ListenAddress 0.0.0.0

PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
KbdInteractiveAuthentication no
UsePAM yes
PubkeyAuthentication yes

AllowGroups jump-users

X11Forwarding no
AllowAgentForwarding no
AllowStreamLocalForwarding no
GatewayPorts no
PermitTunnel no
AllowTcpForwarding yes

MaxAuthTries 3
MaxSessions 4
MaxStartups 10:30:60
LoginGraceTime 30
ClientAliveInterval 300
ClientAliveCountMax 2

KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com

LogLevel VERBOSE
SyslogFacility AUTH

Banner /etc/ssh/banner.txt

Banner legal:

*****************************************************************
                    ACCESO RESTRINGIDO Y MONITOREADO

Este sistema es para uso exclusivo de personal autorizado.
Todas las actividades se registran y monitorean.
El uso no autorizado puede resultar en acciones disciplinarias
y/o proceso penal.

Al continuar, aceptas estas condiciones.
*****************************************************************

3.5 Hardening Windows

  • Server Core sin GUI
  • NLA habilitado
  • SMB v1 deshabilitado
  • Defender + Credential Guard + Device Guard
  • AppLocker o WDAC para whitelist de ejecución
  • LAPS para rotación automática de contraseña local
  • Audit Policies completas con forwarding al SIEM
  • PowerShell v2 deshabilitado
  • PowerShell Constrained Language Mode
  • CIS Benchmark aplicado vía GPO

Parte 4: Autenticación y autorización

4.1 MFA obligatorio

Sin excepción. Para todos. Siempre.

Linux con Google Authenticator:

sudo apt install libpam-google-authenticator
google-authenticator

# /etc/pam.d/sshd
auth required pam_google_authenticator.so

# /etc/ssh/sshd_config
ChallengeResponseAuthentication yes
KbdInteractiveAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive

La directiva AuthenticationMethods publickey,keyboard-interactive fuerza clave y TOTP.

Hardware tokens FIDO2 (más seguro):

ssh-keygen -t ed25519-sk -f ~/.ssh/id_ed25519_sk

La clave privada está dentro del token físico (YubiKey). Incluso malware en la máquina no puede extraerla.

4.2 Principio del menor privilegio

  • Grupos por función (dba-mysql, sysadmin-linux, support-tier1, vendor-acme)
  • Sudo granular, nunca ALL
  • Shell restringido cuando sea posible (rbash, lshell)
  • ACLs del sistema de archivos

Ejemplo /etc/sudoers.d/dba-mysql:

%dba-mysql ALL=(root) NOPASSWD: /bin/systemctl restart mysql
%dba-mysql ALL=(root) NOPASSWD: /bin/systemctl status mysql
%dba-mysql ALL=(root) NOPASSWD: /bin/journalctl -u mysql *
%dba-mysql ALL=(mysql) /usr/bin/mysql

4.3 Autenticación centralizada

No uses cuentas locales. Integra con AD/LDAP/Azure AD/Okta/Google Workspace.

Ventajas:

  • ¿Despediste a alguien? Desactiva en AD, el acceso al jump desaparece
  • MFA centralizado
  • Logs centralizados
  • Sin cuentas huérfanas
# Linux con AD vía SSSD
sudo apt install sssd realmd adcli krb5-user samba-common-bin
sudo realm join dominio.empresa.local --user=admin

4.4 Acceso just-in-time (JIT)

El usuario no tiene acceso permanente. Solicita, justifica, se aprueba, expira.

Soluciones: CyberArk, Teleport, HashiCorp Boundary + Vault, Azure PIM, AWS Session Manager.

Versión simple con script:

#!/bin/bash
USER=$1
HOURS=$2

usermod -a -G jump-users $USER
echo "gpasswd -d $USER jump-users" | at now + $HOURS hours

Parte 5: Logs, grabación de sesión y auditoría

5.1 Logs detallados

Linux con auditd:

sudo apt install auditd audispd-plugins

# /etc/audit/rules.d/jump-server.rules
-w /etc/passwd -p wa -k passwd_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes
-w /etc/sudoers.d/ -p wa -k sudoers_changes
-w /etc/ssh/sshd_config -p wa -k sshd_config

-a always,exit -F arch=b64 -S execve -F euid=0 -F auid>=1000 -F auid!=4294967295 -k privileged_exec
-a always,exit -F arch=b64 -S connect -k network_connect
-a always,exit -F arch=b64 -S execve -k command_exec

sudo systemctl enable auditd
sudo systemctl start auditd

Centraliza todo en un SIEM (Wazuh, Graylog, ELK, Splunk). Los logs locales no sirven si el atacante los borra.

5.2 Grabación de sesión

La característica más poderosa de un jump server bien hecho. Graba todo lo que hace cada admin.

Por qué es poderoso:

  • Investigación forense: ves, no adivinas
  • Compliance: PCI-DSS, ISO 27001, SOX, LGPD
  • Entrenamiento: revisar malas prácticas
  • Disuasión: los admins actúan con más cuidado cuando saben que se están siendo grabados
  • Resolución de disputas: "yo no hice eso" deja de funcionar

tlog (Red Hat, open-source):

sudo apt install tlog

# /etc/tlog/tlog-rec-session.conf
{
    "shell": "/bin/bash",
    "notice": "\nADVERTENCIA: Esta sesión está siendo grabada para auditoría.\n",
    "writer": "journal",
    "log": {
        "input": true,
        "output": true,
        "window": true
    }
}

sudo usermod -s /usr/bin/tlog-rec-session usuario

Reproduce con:

tlog-play -r journal -M TLOG_USER=usuario

Otras herramientas:

  • auditd con ttyaudit
  • asciinema (escenarios informales)
  • CyberArk PAM (comercial)
  • BeyondTrust
  • Teleport (open-source con características comerciales)
  • Apache Guacamole (gateway HTML5 con grabación en video)

Importante:

  1. Avisa a los usuarios (banner explícito; en algunos países grabar sin aviso es ilegal)
  2. Protege las grabaciones (acceso restringido, encriptación)
  3. Define retención (PCI-DSS pide 1 año mínimo)
  4. Cuidado con datos sensibles en las grabaciones

5.3 Centralización de logs

Los logs locales son logs desechables. El atacante los borra primero.

# /etc/rsyslog.d/forward.conf
*.* @@siem.empresa.local:6514  # TCP con TLS

Forward en tiempo real, no en lotes.

Parte 6: Patches y ciclo de vida

  • Patches críticos: hasta 48 horas
  • Patches normales: ciclo semanal/quincenal
  • Reboot: cuando sea necesario
  • Snapshot/backup: siempre antes
  • Imagen de oro: mantenla endurecida, reconstruye periódicamente

Reconstrucción periódica: cada 3-12 meses, destruye y reconstruye desde cero vía Ansible/Terraform/Packer. Elimina drift, basura acumulada, cualquier backdoor no detectada. Es como cambiar la cerradura de la puerta delantera periódicamente.

Parte 7: Monitoreo y respuesta

7.1 Qué monitorear

  • Múltiples intentos de login fallidos
  • Login en horario atípico
  • Login desde IP geográficamente atípica
  • Login de usuario que normalmente no usa el jump
  • wget o curl (intento de descargar payload)
  • Ejecución en /tmp, /var/tmp, /dev/shm
  • Modificación de /etc/passwd, /etc/shadow, /etc/ssh/sshd_config
  • Creación de nuevos usuarios
  • Cambios en sudoers
  • Conexiones de salida inesperadas
  • Aumento súbito de tráfico
  • Procesos ejecutándose como root sin motivo
  • Escalada de privilegio sin aprobación

7.2 Alertas en tiempo real

Notificación inmediata (pager, SMS) para eventos críticos. No reportes al día siguiente.

7.3 Respuesta a incidentes

Runbook listo para "jump server fue comprometido":

  1. Aislamiento inmediato (desconectar de la red en 30 segundos)
  2. Preservación de evidencia (snapshot, dump de memoria, copia de logs)
  3. Comunicación (a quién avisar, en qué orden)
  4. Investigación (quién, con qué herramientas)
  5. Recuperación (reconstruir desde cero — NUNCA limpiar in-place)
  6. Postmortem y lecciones aprendidas

Parte 8: Alternativas modernas

8.1 ZTNA

Cloudflare One, Tailscale, Twingate, Teleport reemplazan el jump server tradicional. Sin puerto expuesto, acceso por aplicación, controles centralizados.

8.2 PAM completo

CyberArk, BeyondTrust, Delinea, HashiCorp Boundary + Vault. Van más allá: gestionan contraseñas, rotan credenciales, just-in-time, graban sesiones, SIEM, dashboards de compliance.

8.3 Cloud-native

  • AWS Systems Manager Session Manager
  • Azure Bastion
  • Google Cloud IAP

El proveedor de cloud mantiene el bastión por ti.

8.4 Cuándo aún usar jump tradicional

  • On-premise sin cloud
  • Soberanía/compliance que requiere sin dependencia SaaS
  • Presupuesto cero
  • Equipamiento legado
  • Control total de la pila requerido

Parte 9: Errores comunes

  1. Jump con salida sin restricción a internet — el atacante descarga herramientas y exfiltra
  2. Mismo jump para "todo" — soporte, DBA, dev, proveedor compartiendo
  3. Sin MFA porque "interfiere con el trabajo"
  4. Compartición de credenciales — cuando se daña, nadie sabe quién fue
  5. Patches retrasados — "funciona, no voy a tocar"
  6. Logs locales sin centralización
  7. Sin monitoreo activo — logs centralizados pero nadie mira
  8. Jump en red plana — comprometiste el jump, comprometiste todo
  9. Sin rotación de credenciales — contraseña que no cambió en 5 años
  10. Sin revisión periódica — el practicante que se fue hace 2 años sigue en el grupo

Checklist final

SISTEMA OPERACIONAL
[ ] Instalación minimal
[ ] Solo herramientas estrictamente necesarias
[ ] Patches al día
[ ] Snapshot/backup antes de cambios
[ ] Imagen de oro documentada
[ ] Reconstrucción periódica programada

RED
[ ] Segmento dedicado
[ ] Whitelist de IPs de origen
[ ] Bloqueo geográfico
[ ] Salida a internet bloqueada
[ ] Salida a interna restringida
[ ] DNS interno confiable

SSH
[ ] Puerto no-estándar
[ ] PermitRootLogin no
[ ] PasswordAuthentication no
[ ] Claves ED25519 o FIDO2
[ ] AuthenticationMethods publickey,keyboard-interactive
[ ] AllowGroups restrictivo
[ ] X11/Agent forwarding deshabilitados
[ ] Límites configurados
[ ] Algoritmos modernos
[ ] Banner legal
[ ] fail2ban activo

WINDOWS
[ ] Server Core
[ ] NLA habilitado
[ ] SMB v1 deshabilitado
[ ] Defender + Credential Guard + Device Guard
[ ] AppLocker / WDAC
[ ] LAPS
[ ] PowerShell Constrained Language Mode
[ ] CIS Benchmark vía GPO

AUTENTICACIÓN
[ ] MFA obligatorio
[ ] Identity provider central
[ ] Sin cuentas locales (excepto break-glass)
[ ] Menor privilegio
[ ] Sudo granular
[ ] Just-in-time donde sea posible
[ ] Revisión trimestral

LOGS Y AUDITORÍA
[ ] auditd / Audit Policy
[ ] Forward en tiempo real al SIEM
[ ] Grabación de sesión
[ ] Retención definida (≥1 año)
[ ] Logs encriptados en tránsito
[ ] Acceso restringido

MONITOREO
[ ] SIEM recibiendo eventos
[ ] Reglas de alerta
[ ] Notificación inmediata
[ ] Dashboard de salud
[ ] Drift detection

RESPUESTA A INCIDENTES
[ ] Runbook documentado
[ ] Procedimiento de aislamiento probado
[ ] Plan de reconstrucción
[ ] Comunicación definida
[ ] Postmortem después del incidente

GOBERNANZA
[ ] Documentación actualizada
[ ] Inventario de quién tiene acceso
[ ] Política aprobada formalmente
[ ] Revisiones periódicas agendadas
[ ] Entrenamiento de administradores

Consideraciones finales

Jump server parece simple hasta que comienzas a hacerlo correctamente. La versión "rápida" — VM con SSH abierto que todos usan — toma media hora. La versión "correcta" — hardening completo, MFA, grabación de sesión, SIEM, segmentación, JIT — toma semanas y requiere procesos continuos.

Pero la versión correcta es la única que efectivamente protege. La versión rápida es solo otro servidor expuesto con privilegios elevados.

Comienza con lo esencial: hardening básico, MFA, logs centralizados, segmentación. Ve evolucionando. Cada control reduce la superficie de ataque un poco más.

Y monitorea continuamente. El jump configurado perfectamente hoy puede tener regresiones mañana cuando alguien "solo para resolver un problema rápido" reabre un puerto. Sin monitoreo continuo, hardening es foto, no película.

El SentinelHub examina exactamente esto: monitorea tus IPs públicas, identifica puertos y servicios expuestos (incluyendo el jump server), alerta cuando algo nuevo aparece, identifica versiones vulnerables, en español. Si tu jump reaparece con el puerto 22 estándar mañana porque alguien olvidó, te enteras.

¿Te pareció útil? Comparte con tu equipo de infraestructura. Especialmente con ese tipo que dijo "ah, jump server es floritura".