O método de Usuário e Senha (password authentication) é a forma mais elementar de identificação de usuário no protocolo SSH. Embora seja o método menos seguro em comparação ao uso de chaves assimétricas, ele permanece como o mecanismo de contingência padrão em quase todas as distribuições Linux e sistemas Unix, permitindo o acesso inicial antes da configuração de métodos mais robustos.
1. O Fluxo de Autenticação por Senha
Diferente de protocolos inseguros como o Telnet, onde a senha viaja em texto claro, no SSH o envio da senha só ocorre após o estabelecimento do túnel cifrado.
O processo técnico segue estes passos:
-
Requisição: O cliente envia uma mensagem
SSH_MSG_USERAUTH_REQUESTespecificando o método"password". -
Prompt: O cliente solicita ao usuário local que digite a senha.
-
Envio Cifrado: A senha é encapsulada em um pacote SSH, cifrada com a Chave de Sessão Simétrica (gerada no KEX) e enviada ao servidor.
-
Validação: O servidor recebe o pacote, decifra-o e compara o conteúdo com o banco de dados de autenticação do sistema.
2. Integração com o PAM (Pluggable Authentication Modules)
Em sistemas modernos como Ubuntu, Debian ou CentOS, o servidor SSH (sshd) não verifica o arquivo /etc/shadow diretamente. Ele delega essa tarefa ao PAM.
-
Flexibilidade: O PAM permite que o servidor SSH autentique o usuário contra diversas fontes: arquivos locais, servidores LDAP, Active Directory ou bancos de dados SQL.
-
Controle de Acesso: Através do PAM, o sistema pode impor restrições adicionais, como proibir logins de senha para determinados usuários ou exigir que a senha seja trocada no primeiro acesso.
3. Vulnerabilidades e Riscos
O uso de senhas expõe o servidor a vetores de ataque específicos que não afetam as chaves privadas:
-
Brute Force (Força Bruta): Atacantes utilizam bots para tentar milhares de combinações de usuários (como
admin,root,user) e senhas comuns. -
Dictionary Attacks: Uso de listas de palavras e senhas vazadas em outros sites.
-
Shoulder Surfing / Keylogging: Como a senha é algo que o usuário “sabe” e precisa digitar, ela pode ser capturada por observação física ou malware no computador do cliente.
4. Mitigação e Hardening
Para manter o uso de senhas minimamente seguro, administradores aplicam técnicas de endurecimento (Hardening):
-
Fail2Ban: Um serviço que monitora os logs de erro (
/var/log/auth.log) e bane temporariamente o endereço IP que exceder um número X de tentativas de senha inválidas. -
Complexidade de Senha: Uso de módulos como
pam_pwqualitypara exigir letras maiúsculas, números e caracteres especiais. -
Desativação do Root: Configurar
PermitRootLogin prohibit-passwordounono arquivosshd_configobriga o atacante a adivinhar também o nome de um usuário comum, dobrando o esforço necessário.
5. Configuração no sshd_config
O comportamento deste método é controlado por diretivas específicas no servidor:
Bash
PasswordAuthentication yes # Habilita o uso de senhas
PermitEmptyPasswords no # Proíbe usuários sem senha (crítico!)
MaxAuthTries 3 # Número de tentativas antes de derrubar a conexão
6. Transição para MFA (Multi-Factor Authentication)
Muitas organizações utilizam o método de senha apenas como o primeiro fator de uma autenticação interativa. Após a senha ser validada, o servidor envia um segundo desafio (via keyboard-interactive) solicitando um código OTP (One-Time Password), elevando significativamente o nível de segurança do acesso.