· 2 min de leitura · hardening · ssh
As 12 verificações de SSH no hardening do atalince
O que cada diretiva do sshd confere, por que importa e como olhar o valor que está valendo de verdade.
O hardening do atalince tem 36 verificações. Doze delas são sobre o servidor SSH, a porta de entrada mais atacada de qualquer servidor Linux exposto. Este texto passa por cada uma.
Antes: veja o valor efetivo
O sshd_config não conta a história toda. Arquivos em sshd_config.d/, blocos Match e valores padrão mudam o resultado final. Para ver o que está valendo de fato:
sudo sshd -T | grep -Ei 'permitrootlogin|passwordauthentication|permitemptypasswords|x11forwarding|strictmodes|pubkeyauthentication|hostbasedauthentication|ignorerhosts|permituserenvironment|maxauthtries|logingracetime|maxsessions'
O agente do atalince faz exatamente isso: lê a saída do sshd -T, e cada item no painel mostra o valor que foi lido. Abaixo, o que cada verificação espera e a severidade que ela tem no painel.
Acesso e autenticação
PermitRootLogin. Login direto como root dá ao atacante o alvo mais valioso com um nome de usuário já conhecido. O atalince espera no. Severidade alta.
PasswordAuthentication. Senhas podem ser adivinhadas; chaves, na prática, não. Com chaves configuradas, no elimina a força bruta por senha de uma vez. Espera no, severidade alta.
PermitEmptyPasswords. Uma conta sem senha não deveria abrir sessão remota em hipótese alguma. Espera no, a única verificação de SSH com severidade crítica.
PubkeyAuthentication. É o que permite desligar senhas sem perder o acesso. Espera yes, severidade média.
HostbasedAuthentication. Confiar no host de origem em vez do usuário é um modelo antigo. Espera no, severidade alta.
IgnoreRhosts. Ignora os arquivos .rhosts e .shosts, herança do rsh. Espera yes, severidade alta.
Ambiente e sessão
X11Forwarding. Encaminhar a interface gráfica raramente faz sentido num servidor e amplia a superfície de ataque. Espera no, severidade baixa.
StrictModes. Faz o sshd conferir as permissões dos arquivos do usuário antes de aceitar a chave. Espera yes, severidade média.
PermitUserEnvironment. Permitir que o usuário defina variáveis de ambiente pelo SSH abre caminho para contornar restrições. Espera no, severidade alta.
Limites
MaxAuthTries. Quantas tentativas por conexão antes de desconectar. Valores baixos tornam a força bruta mais lenta e mais visível. Espera de 1 a 4, severidade média.
LoginGraceTime. Quanto tempo uma conexão pode ficar sem autenticar. Prazos curtos reduzem o número de conexões penduradas. Espera de 1 a 60 segundos, severidade média.
MaxSessions. Quantas sessões podem compartilhar uma mesma conexão. Espera de 1 a 10, severidade baixa.
A nota só aparece com cobertura total
As 36 verificações formam uma nota de A a F, mas só quando todas puderam ser conferidas. Se o agente não conseguiu ler uma delas, a nota não aparece. Uma nota calculada com buracos seria um número inventado.
E as outras 24?
Oito são permissões de arquivos sensíveis, como /etc/shadow e o authorized_keys do root. Oito são parâmetros do kernel e do sistema de arquivos, como ASLR e links protegidos. E oito são da pilha IPv4, como SYN cookies e redirects. Veja tudo em Avaliações de segurança.
O atalince aponta o que está fora do recomendado e mostra a evidência. A mudança fica com você: o hardening é somente leitura.