Introdução ao SSH e `sshd`
O Secure Shell (SSH) é um protocolo de rede fundamental para acessar e gerenciar servidores Linux remotamente de forma segura. Ao contrário de protocolos mais antigos como Telnet, o SSH criptografa toda a comunicação, protegendo dados sensíveis contra interceptação.
O serviço que roda no lado do servidor, responsável por aceitar conexões SSH, é o sshd (SSH daemon). Uma configuração adequada do sshd é crucial para a segurança e a eficiência do acesso remoto.
Instalação e Verificação do `sshd`
Na maioria das distribuições Linux modernas, o servidor SSH já vem pré-instalado. Para verificar se ele está instalado e em execução, você pode usar os seguintes comandos:
sudo systemctl status ssh
# ou
sudo systemctl status sshd
Se o serviço não estiver ativo, você pode instalá-lo (o nome do pacote pode variar entre distribuições, mas geralmente é openssh-server) e iniciá-lo:
# Para Debian/Ubuntu:
sudo apt update
sudo apt install openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh
# Para CentOS/RHEL/Fedora:
sudo yum update
sudo yum install openssh-server
sudo systemctl start sshd
sudo systemctl enable sshd
Configurando o `sshd` para Segurança
O arquivo principal de configuração do sshd é /etc/ssh/sshd_config. É altamente recomendável fazer um backup deste arquivo antes de realizar qualquer alteração:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
A seguir, algumas configurações importantes para aumentar a segurança:
1. Alterar a Porta Padrão
A porta padrão do SSH é a 22. Alterá-la pode ajudar a reduzir o tráfego de varreduras automatizadas. No entanto, isso não é uma medida de segurança completa por si só, mas sim uma forma de 'obscurecer' o serviço.
Edite o arquivo /etc/ssh/sshd_config e procure pela linha #Port 22. Descomente-a (remova o #) e altere o número da porta para um valor não utilizado (por exemplo, 2222):
Port 2222
Após alterar a porta, lembre-se de reiniciar o serviço sshd e ajustar suas regras de firewall para permitir tráfego na nova porta.
2. Desabilitar o Login do Usuário Root
Permitir o login direto como root via SSH é um grande risco de segurança. É preferível fazer login com um usuário comum e, em seguida, usar sudo para obter privilégios de root.
No arquivo /etc/ssh/sshd_config, localize a linha PermitRootLogin e altere-a para:
PermitRootLogin no
3. Usar Autenticação por Chave SSH
A autenticação por chave SSH é mais segura do que a autenticação por senha, pois utiliza um par de chaves criptográficas (pública e privada). A senha pode ser forçada por ataques de força bruta, enquanto as chaves são muito mais difíceis de comprometer.
Para configurar a autenticação por chave:
- Gere um par de chaves no seu computador local (onde você se conectará):
ssh-keygen -t rsa -b 4096. - Copie a chave pública para o servidor:
ssh-copy-id usuario@seu_servidor. Substituausuariopelo seu nome de usuário no servidor eseu_servidorpelo endereço IP ou hostname. - No servidor, edite
/etc/ssh/sshd_confige certifique-se de quePasswordAuthenticationesteja definido comonoapós ter confirmado que o login por chave funciona corretamente.
Aviso de segurança: Antes de desabilitar a autenticação por senha, teste exaustivamente o login com a chave SSH para garantir que você não perca o acesso ao servidor.
4. Limitar Usuários e Grupos
Você pode restringir quais usuários ou grupos têm permissão para fazer login via SSH.
Para permitir apenas usuários específicos:
AllowUsers usuario1 usuario2
Para permitir apenas membros de um grupo específico:
AllowGroups grupo1 grupo2
5. Desabilitar Protocolos Antigos
Certifique-se de que apenas o protocolo SSH versão 2 esteja habilitado, pois a versão 1 é considerada insegura.
No arquivo /etc/ssh/sshd_config, verifique se:
Protocol 2
Aplicando as Mudanças e Reiniciando o `sshd`
Após fazer as modificações no arquivo /etc/ssh/sshd_config, é essencial testar a sintaxe do arquivo antes de reiniciar o serviço. Isso evita que você se bloqueie caso haja um erro de digitação:
sudo sshd -t
Se o comando não retornar nenhuma saída, a sintaxe está correta. Em seguida, reinicie o serviço sshd para que as novas configurações entrem em vigor:
sudo systemctl restart ssh
# ou
sudo systemctl restart sshd
É crucial ter uma sessão SSH aberta e funcionando enquanto você aplica essas mudanças, para que, caso algo dê errado, você ainda possa reverter as alterações através da sessão existente.
Monitoramento e Logs do SSH
O sshd registra todas as tentativas de login e outras atividades relevantes em arquivos de log. O local desses logs pode variar dependendo da sua distribuição, mas geralmente são encontrados em:
/var/log/auth.log(Debian/Ubuntu)/var/log/secure(CentOS/RHEL/Fedora)
Você pode usar o comando journalctl para visualizar os logs do systemd, que incluem as entradas do SSH:
sudo journalctl -u ssh -f
# ou
sudo journalctl -u sshd -f
O uso de -f (follow) permite que você veja os logs em tempo real. Analisar esses logs regularmente pode ajudar a identificar tentativas de acesso não autorizado e outros problemas de segurança.
Considerações Adicionais e Boas Práticas
Firewall: Certifique-se de que seu firewall (como ufw ou firewalld) esteja configurado para permitir conexões apenas na porta SSH que você definiu e, se possível, apenas de endereços IP confiáveis.
Fail2ban: Instalar e configurar o fail2ban é uma excelente prática. Ele monitora os logs de acesso e bane automaticamente endereços IP que exibem comportamento malicioso, como múltiplas tentativas de login falhas.
Atualizações: Mantenha sempre o pacote openssh-server e o sistema operacional atualizados para corrigir vulnerabilidades de segurança conhecidas.
VPN: Para um nível extra de segurança, considere acessar seus servidores via VPN antes de se conectar via SSH. Isso adiciona outra camada de criptografia e restringe o acesso à rede interna.
Conclusão
Uma configuração segura do sshd é um passo essencial para proteger seus servidores Linux contra acessos não autorizados. Ao seguir estas diretrizes, você pode fortalecer significativamente a segurança do seu ambiente de rede, garantindo que o acesso remoto seja realizado de forma eficiente e protegida.
Foto de Brett Sayles no Pexels.