Jump Server: O Guia para Amplificar sua Segurança — Como Construir, Proteger e Não Transformar Seu Bastion na Porta dos Fundos Como um servidor pequeno e dedicado pode ser a diferença entre suporte organizado e a próxima manchete sobre ransomware. E como, se mal configurado, pode ser também a porta exata por onde o atacante entra.
Como um servidor pequeno e dedicado pode ser a diferença entre suporte organizado e a próxima manchete sobre ransomware. E como, se mal configurado, pode ser também a porta exata por onde o atacante entra.
Se você leu o post anterior sobre acesso remoto seguro, já sabe a regra de ouro: nunca exponha RDP, SSH ou qualquer serviço administrativo diretamente na internet. Mas então surge a pergunta prática: como o time de suporte, os DBAs, os sysadmins e os fornecedores acessam os servidores quando precisam?
A resposta tradicional é o jump server — também chamado de bastion host, stepping stone server, jump box. É um conceito que tem mais de 30 anos e continua relevante porque resolve um problema fundamental: centralizar e controlar todo o acesso administrativo a uma infraestrutura.
Mas aqui está o paradoxo: um jump server mal configurado é pior que não ter jump server nenhum. Por quê? Porque ele cria uma falsa sensação de segurança. Você acha que está protegido porque tem "aquele bastion", quando na verdade ele virou exatamente o que deveria evitar — uma porta única, conhecida, exposta, e cheia de privilégios.
Um jump server é uma máquina dedicada, endurecida (hardened) ao máximo, posicionada como único ponto de passagem entre o mundo externo e os recursos internos críticos.
Em vez de cada servidor expor SSH ou RDP, só o jump server aceita conexões. Quem precisa administrar qualquer coisa, primeiro entra no jump server, e dali alcança os destinos.
A analogia: se sua infraestrutura é um prédio, o jump server é a portaria com catraca. Ninguém entra direto nas salas — todo mundo passa pela portaria, mostra crachá, é registrado.
O que NÃO é jump server:
Por que existir:
Internet → [Firewall] → [Jump] → [Servidores]
Pra equipes pequenas. Limitação: ponto único de falha e comprometimento.
Internet → [FW ext] → [Jump 1 DMZ] → [FW int] → [Jump 2 interno] → [Servidores]
Pra ambientes regulados. Atacante precisa comprometer dois servidores.
Broker valida tudo, busca credenciais temporárias do cofre, estabelece a sessão sem mostrar a senha. Soluções: CyberArk, BeyondTrust, Delinea, HashiCorp Boundary, Teleport.
Centraliza acesso a múltiplos clientes. Cuidado: vira alvo dos sonhos. Idealmente, cada cliente deveria ter seu próprio jump segregado.
Jump server não é estação de trabalho. Sem Office, sem navegador, sem aplicação, sem nada não-essencial.
# 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: use Server Core sempre que possível.
Linux jump tipicamente tem: OpenSSH, cliente RDP (xfreerdp), mysql/psql client, nmap, dig, traceroute, tcpdump, vim, tmux, ansible.
Windows jump tipicamente tem: mstsc, PuTTY, RSAT, PowerShell modules, SSMS.
O que NÃO deve ter: navegador, e-mail, Office, Adobe Reader, Java client, software pessoal, compiladores.
Regra: se não consegue justificar, não precisa estar ali.
Entrada:
Saída:
Se atacante comprometer o jump, primeira coisa será baixar ferramentas e conectar em C2. Bloqueando saída, você quebra a cadeia.
# /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:
*****************************************************************
ACESSO RESTRITO E MONITORADO
Este sistema é de uso exclusivo de pessoal autorizado.
Todas as atividades são registradas e monitoradas.
O uso não autorizado pode resultar em ações disciplinares
e/ou processo criminal.
Ao continuar, você concorda com essas condições.
*****************************************************************
Sem exceção. Pra todo mundo. Sempre.
Linux com 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
A diretiva AuthenticationMethods publickey,keyboard-interactive força chave e TOTP.
Hardware tokens FIDO2 (mais seguro):
ssh-keygen -t ed25519-sk -f ~/.ssh/id_ed25519_sk
A chave privada fica dentro do token físico (YubiKey). Mesmo malware na máquina não consegue extrair.
dba-mysql, sysadmin-linux, support-tier1, vendor-acme)ALLrbash, lshell)Exemplo /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
Não use contas locais. Integre com AD/LDAP/Azure AD/Okta/Google Workspace.
Vantagens:
# Linux com AD via SSSD
sudo apt install sssd realmd adcli krb5-user samba-common-bin
sudo realm join dominio.empresa.local --user=admin
Usuário não tem acesso permanente. Solicita, justifica, é aprovado, expira.
Soluções: CyberArk, Teleport, HashiCorp Boundary + Vault, Azure PIM, AWS Session Manager.
Versão simples com script:
#!/bin/bash
USER=$1
HOURS=$2
usermod -a -G jump-users $USER
echo "gpasswd -d $USER jump-users" | at now + $HOURS hours
Linux com 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
Centralize tudo num SIEM (Wazuh, Graylog, ELK, Splunk). Logs locais não servem se atacante deletar.
Feature mais poderosa de jump server bem feito. Gravar tudo que cada admin faz.
Por que é poderoso:
tlog (Red Hat, open-source):
sudo apt install tlog
# /etc/tlog/tlog-rec-session.conf
{
"shell": "/bin/bash",
"notice": "\nATENÇÃO: Esta sessão está sendo gravada para auditoria.\n",
"writer": "journal",
"log": {
"input": true,
"output": true,
"window": true
}
}
sudo usermod -s /usr/bin/tlog-rec-session usuario
Reproduz com:
tlog-play -r journal -M TLOG_USER=usuario
Outras ferramentas:
Importante:
Logs locais são logs descartáveis. Atacante apaga primeiro.
# /etc/rsyslog.d/forward.conf
*.* @@siem.empresa.local:6514 # TCP com TLS
Forward em tempo real, não em batch.
Reconstrução periódica: a cada 3-12 meses, destrua e reconstrua do zero via Ansible/Terraform/Packer. Elimina drift, lixo acumulado, qualquer backdoor não detectada. É como trocar a fechadura da porta da frente periodicamente.
wget ou curl (tentativa de baixar payload)/tmp, /var/tmp, /dev/shm/etc/passwd, /etc/shadow, /etc/ssh/sshd_configNotificação imediata (pager, SMS) pros eventos críticos. Não relatório no dia seguinte.
Runbook pronto para "jump server foi comprometido":
Cloudflare One, Tailscale, Twingate, Teleport substituem jump server tradicional. Sem porta exposta, acesso por aplicação, controles centralizados.
CyberArk, BeyondTrust, Delinea, HashiCorp Boundary + Vault. Vão além: gerenciam senhas, rotacionam credenciais, just-in-time, gravam sessões, SIEM, dashboards de compliance.
Cloud provider mantém o bastion por você.
SISTEMA OPERACIONAL
[ ] Instalação minimal
[ ] Apenas ferramentas estritamente necessárias
[ ] Patches em dia
[ ] Snapshot/backup antes de alterações
[ ] Imagem dourada documentada
[ ] Reconstrução periódica programada
REDE
[ ] Segmento dedicado
[ ] Whitelist de IPs de origem
[ ] Bloqueio geográfico
[ ] Saída pra internet bloqueada
[ ] Saída pra interna restrita
[ ] DNS interno confiável
SSH
[ ] Porta não-padrão
[ ] PermitRootLogin no
[ ] PasswordAuthentication no
[ ] Chaves ED25519 ou FIDO2
[ ] AuthenticationMethods publickey,keyboard-interactive
[ ] AllowGroups restritivo
[ ] X11/Agent forwarding desabilitados
[ ] Limites configurados
[ ] Algoritmos modernos
[ ] Banner legal
[ ] fail2ban ativo
WINDOWS
[ ] Server Core
[ ] NLA habilitado
[ ] SMB v1 desabilitado
[ ] Defender + Credential Guard + Device Guard
[ ] AppLocker / WDAC
[ ] LAPS
[ ] PowerShell Constrained Language Mode
[ ] CIS Benchmark via GPO
AUTENTICAÇÃO
[ ] MFA obrigatório
[ ] Identity provider central
[ ] Sem contas locais (exceto break-glass)
[ ] Menor privilégio
[ ] Sudo granular
[ ] Just-in-time onde possível
[ ] Revisão trimestral
LOGS E AUDITORIA
[ ] auditd / Audit Policy
[ ] Forward em tempo real pro SIEM
[ ] Gravação de sessão
[ ] Retenção definida (≥1 ano)
[ ] Logs criptografados em trânsito
[ ] Acesso restrito
MONITORAMENTO
[ ] SIEM recebendo eventos
[ ] Regras de alerta
[ ] Notificação imediata
[ ] Dashboard de health
[ ] Drift detection
RESPOSTA A INCIDENTES
[ ] Runbook documentado
[ ] Procedimento de isolamento testado
[ ] Plano de reconstrução
[ ] Comunicação definida
[ ] Postmortem após incidente
GOVERNANÇA
[ ] Documentação atualizada
[ ] Inventário de quem tem acesso
[ ] Política aprovada formalmente
[ ] Revisões periódicas agendadas
[ ] Treinamento dos administradores
Jump server parece simples até você começar a fazer direito. A versão "rápida" — VM com SSH aberto que todo mundo usa — leva meia hora. A versão "certa" — hardening completo, MFA, gravação de sessão, SIEM, segmentação, JIT — leva semanas e exige processos contínuos.
Mas a versão certa é a única que efetivamente protege. A versão rápida é só mais um servidor exposto com privilégios elevados.
Comece pelo essencial: hardening básico, MFA, logs centralizados, segmentação. Vá evoluindo. Cada controle reduz a superfície de ataque um pouco mais.
E monitore continuamente. O jump configurado perfeitamente hoje pode ter regressões amanhã quando alguém "só pra resolver um problema rápido" reabre uma porta. Sem monitoramento contínuo, hardening é foto, não filme.
O SentinelHub varre exatamente isso: monitora seus IPs públicos, identifica portas e serviços expostos (incluindo o jump server), alerta quando algo novo aparece, identifica versões vulneráveis, em português. Se seu jump reaparece com porta 22 padrão amanhã porque alguém esqueceu, você fica sabendo.
Achou útil? Compartilha com seu time de infra. Especialmente com aquele cara que falou "ah, jump server é firula".