Hardening de SSH 2026: Algoritmos, Certificados e Bastion Hosts
Configuracao moderna de SSH com CA interna, algoritmos resistentes e bastion hosts auditaveis para reduzir superficie de ataque em ambientes corporativos.
Toda vez que abrimos um shodan.io e filtramos por port:22, descobrimos algumas centenas de milhares de servidores ainda aceitando ssh-rsa com SHA-1, password authentication exposta na internet e MACs como hmac-sha1. Em 2026, isso nao e configuracao legada esquecida: e divida tecnica que paga juros em forma de incidente. Hardening de SSH deixou de ser uma checklist de seis linhas no sshd_config e virou um pequeno subsistema que envolve CA interna, bastion auditavel, rotacao de chaves e telemetria centralizada. Este post mostra como a equipe Basilisk monta esse stack em laboratorio antes de levar para producao, com numeros concretos e ferramentas que voce pode testar hoje.
Comece pelo basico, mas faca direito. No /etc/ssh/sshd_config moderno, force Protocol 2 (implicito), PasswordAuthentication no, KbdInteractiveAuthentication no, PermitRootLogin no e UsePAM yes. Para algoritmos, restrinja KexAlgorithms para sntrup761x25519-sha512@openssh.com,curve25519-sha256, Ciphers para chacha20-poly1305@openssh.com,aes256-gcm@openssh.com e MACs para hmac-sha2-512-etm@openssh.com. O sntrup761 ja entrega resistencia hibrida pos-quantica desde o OpenSSH 9.0, e em 2026 nao ha razao para nao habilitar. Rode ssh-audit contra o host antes e depois: a diferenca entre nota C+ e A e basicamente desabilitar diffie-hellman-group14-sha1 e similares. Trate isso como pre-requisito, nao como entrega. Hardening de Linux Servidor: CIS Benchmark Aplicado sem Quebrar Producao
O salto real de maturidade vem ao trocar authorized_keys espalhadas por uma CA SSH interna. Voce gera um par de chaves de CA (ed25519, sem passphrase apenas se estiver em um HSM ou em um host offline), assina certificados de usuario com TTL curto (4 a 12 horas) e distribui apenas a chave publica da CA via TrustedUserCAKeys nos servidores. O usuario passa a se autenticar com um certificado emitido por uma ferramenta como step-ca, Vault SSH ou Teleport, amarrada ao SSO corporativo. Resultado: revogar acesso de um ex-funcionario deixa de ser caca a authorized_keys em 400 hosts e vira simplesmente nao reemitir o certificado. Em pentests internos, essa unica mudanca quebra metade dos caminhos de movimentacao lateral baseados em chaves orfas. Active Directory Pentest: Kerberoasting Passo a Passo em Lab GOAD Lateral Movement em Lab: SMB, WMI e WinRM com Foco em Deteccao
O bastion host nao deve ser um Linux qualquer com SSH aberto. Pense nele como um proxy de identidade: ele recebe a conexao do usuario, valida o certificado contra a CA, registra a sessao inteira (incluindo input e output) e abre um segundo SSH para o alvo via ProxyJump. Teleport, Boundary e a combinacao step-ca + auditd + tlog cobrem esse caso. Numa configuracao tipica que testamos para um cliente de fintech, o bastion ficava em uma VPC isolada com Security Group permitindo apenas porta 22 da VPN corporativa, e os servidores internos recusavam qualquer SSH que nao viesse do CIDR do bastion. Isso colapsa a superficie de ataque de centenas de IPs para um unico ponto monitorado. Pivoting com Chisel e Ligolo-ng: Redes Segmentadas em Lab de Pentest
Logging centralizado fecha o ciclo. Habilite LogLevel VERBOSE no sshd, envie /var/log/auth.log via journald-remote ou Fluent Bit para um Elastic ou Loki, e crie regras Sigma para detectar padroes como multiplas falhas seguidas de sucesso, login com certificado expirando em menos de uma hora ou execucao de comandos suspeitos via session recording. Em uma simulacao de red team, demoramos 11 minutos para sermos pegos tentando reaproveitar uma chave roubada porque o principal do certificado nao batia com o usuario do SSO. Sem essa correlacao, levariamos dias. Quem ja escreveu deteccao sabe que SSH e uma das fontes mais ricas e mais subutilizadas. Threat Hunting com Sigma e Elastic: Do Indicador a Regra de Deteccao Hunting de Living-off-the-Land Binaries no Windows com KQL
Nao esqueca do lado cliente. Force ~/.ssh/config com HashKnownHosts yes, VerifyHostKeyDNS yes quando aplicavel, e use ssh-agent com confirmacao por toque em uma YubiKey (sk-ed25519). Para chaves de servico em pipelines, nada de chaves estaticas em CI: emita certificados curtos via OIDC do GitHub Actions ou GitLab para o seu Vault. Isso elimina a classe inteira de incidentes onde uma chave vazada em log fica valida por anos. Em paralelo, audite agendamentos: AllowAgentForwarding e StreamLocalBindUnlink quase sempre podem ser desligados. Supply Chain Security: Assinatura com Sigstore e SBOM Real em CI/CD Senhas e MFA: Migrando para Passkeys sem Quebrar sua Recuperacao
Takeaway pratico: monte um laboratorio com tres VMs (CA + bastion + alvo) usando step-ca, configure TTL de 8 horas, force os algoritmos modernos, rode ssh-audit ate tirar A e depois tente se autenticar com uma chave antiga. Se conseguir entrar, sua configuracao ainda nao esta hardenizada. Repita o exercicio uma vez por trimestre, rotacione a chave da CA anualmente e mantenha um runbook de emergencia para revogar e reemitir tudo em menos de uma hora. SSH continua sendo a porta de entrada predileta de atacantes em 2026 justamente porque tratamos como infraestrutura invisivel. Pare de tratar.