Voltar ao Diminua Blog

Artigo

Dominando o `sshd` no Linux: Configuração Segura e Acesso Remoto Eficiente

Um guia completo para configurar e proteger o servidor SSH, garantindo conexões remotas seguras e confiáveis em seus sistemas Linux.

Dominando o `sshd` no Linux: Configuração Segura e Acesso Remoto Eficiente

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:

  1. Gere um par de chaves no seu computador local (onde você se conectará): ssh-keygen -t rsa -b 4096.
  2. Copie a chave pública para o servidor: ssh-copy-id usuario@seu_servidor. Substitua usuario pelo seu nome de usuário no servidor e seu_servidor pelo endereço IP ou hostname.
  3. No servidor, edite /etc/ssh/sshd_config e certifique-se de que PasswordAuthentication esteja definido como no apó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.