Detalhamento da configuração do OpenSSH (sshd_config)
Esta documentação fornece uma análise detalhada e estruturada da política de segurança e dos parâmetros aplicados no arquivo de configuração do servidor SSH (/etc/ssh/sshd_config).
A configuração analisada adota uma postura de segurança robusta (hardening), implementando autenticação de múltiplos fatores (MFA), restrição estrita do usuário administrador e isolamento de usuários em ambiente fechado (Chroot Jail).
Resumo da política de segurança
- MFA obrigatório: exige chave pública + senha/código interativo para autenticação.
- Acesso root: bloqueado diretamente via SSH.
- Usuário admin: restrito exclusivamente a conexões com origem no próprio servidor (
localhost). - Grupo jail: usuários isolados dentro de um diretório chroot dedicado.
Autenticação e controle de acesso
Bloqueio do usuário root
PermitRootLogin no
- Descrição: impede que o usuário
rootfaça login direto via SSH. - Impacto de segurança: reduz a superfície de ataque para tentativas de força bruta contra a conta superusuária. Administradores devem se autenticar com uma conta comum e elevar privilégios via
sudo.
Desativação de mecanismos legados e senhas vazias
IgnoreRhosts yes
PermitEmptyPasswords no
IgnoreRhosts yes: ignora arquivos.rhostse.shosts, prevenindo autenticações baseadas na confiança fraca legada do protocolorlogin.PermitEmptyPasswords no: impede o acesso de qualquer conta de usuário que não possua uma senha definida.
Integração com PAM e GSSAPI (Kerberos)
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
UsePAM yes
GSSAPIAuthentication yes: habilita suporte à autenticação centralizada, como Kerberos ou Active Directory.GSSAPICleanupCredentials yes: garante que os privilégios e tickets do Kerberos sejam removidos ao encerrar a sessão.UsePAM yes: ativa a integração com o Pluggable Authentication Modules (PAM) do Linux para gerenciamento centralizado de regras de autenticação, políticas de senha e módulos de segurança adicionais.
Requisito de múltiplos fatores (MFA/2FA)
Esta seção define a regra mais crítica de acesso ao servidor:
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,password publickey,keyboard-interactive
Detalhamento dos mecanismos
PasswordAuthentication no: desativa a autenticação tradicional que exige apenas a senha do usuário.PubkeyAuthentication yes: habilita a autenticação via pares de chaves SSH (id_rsa,id_ed25519, etc.).ChallengeResponseAuthentication yes: habilita a autenticação interativa baseada em desafios, necessária para módulos OTP/PAM como Google Authenticator.
Aplicação de MFA (AuthenticationMethods)
A linha AuthenticationMethods publickey,password publickey,keyboard-interactive estabelece que o cliente deve fornecer dois fatores sequenciais para obter acesso:
- Fator 1: uma chave pública (pubkey) válida.
- Fator 2: uma senha ou um desafio interativo (keyboard-interactive/OTP).
Nota operacional: Embora
PasswordAuthenticationesteja desativado isoladamente, o uso emAuthenticationMethodspermite que a senha seja solicitada exclusivamente como segundo fator, após a validação bem-sucedida da chave pública.
Sessão, ambiente e mensagens
X11Forwarding yes
PrintMotd no
ClientAliveInterval 1800
ClientAliveCountMax 3
Banner /etc/ssh/ssh_banner
AcceptEnv LANG LC_*
X11Forwarding yes: permite o redirecionamento da interface gráfica de aplicações do servidor para a máquina do cliente. (Recomendação: desativar se não for utilizado).PrintMotd no: impede que o próprio serviçosshdexiba a mensagem do dia (Message of the Day), delegando essa exibição ao módulo PAM.ClientAliveInterval 1800&ClientAliveCountMax 3:- o servidor envia uma sondagem a cada 1800 segundos (30 minutos) para verificar a presença do cliente;
- caso o cliente não responda por 3 vezes consecutivas, a sessão é encerrada por inatividade, com tempo total sem resposta de 1,5 hora.
Banner /etc/ssh/ssh_banner: exibe o texto do arquivo/etc/ssh/ssh_bannerantes da autenticação, utilizado para avisos legais de privacidade e autorização.AcceptEnv LANG LC_*: permite a transferência das variáveis de ambiente de idioma e codificação do cliente para o servidor.
Subsistema SFTP e bloco condicional (Match)
Subsystem sftp /usr/lib/openssh/sftp-server
Define o executável encarregado de processar as conexões de transferência de arquivos via SFTP.
Restrição do usuário administrador
Match User admin
AllowUsers admin@localhost admin@127.0.0.1 admin@::1
- Descrição: aplica uma regra condicional para a conta
admin. - Efeito: o usuário
adminfica estritamente restrito a conexões com origem na própria máquina local (localhost,127.0.0.1ou::1em IPv6). Conexões diretas da rede externa para essa conta serão rejeitadas.
Isolamento em chroot (grupo jail)
Match Group jail
ChrootDirectory /home/Secure/Jail/%u
- Descrição: aplica uma regra condicional para qualquer usuário pertencente ao grupo
jail. - Efeito: redireciona a raiz do sistema de arquivos (
/) do usuário para o diretório/home/Secure/Jail/<nome_do_usuario>no momento do login. O usuário fica restrito à sua pasta e impedido de navegar na estrutura do sistema operacional.
Verificação e aplicação das alterações
Antes de reiniciar o serviço em produção, recomenda-se validar a sintaxe das configurações para prevenir interrupções de acesso:
# Validar a sintaxe do arquivo de configuração
sudo sshd -t
# Recarregar as configurações do serviço sem derrubar conexões ativas
sudo systemctl reload sshd
Durante o teste:
- manter sessão administrativa já autenticada;
- testar novo login com usuário controlado;
- validar autenticação por chave;
- validar solicitação de TOTP, que depende da configuração MFA explicada em seção própria;
- validar aplicação do chroot, que depende de ambiente chroot já preparado;
- revisar logs do serviço SSH.