Pesquisa de site

5 melhores práticas de segurança para servidores OpenSSH


SSH (Secure Shell) é um protocolo de rede de código aberto usado para conectar servidores Linux locais ou remotos para transferir arquivos, fazer backups remotos, execução remota de comandos e outras tarefas relacionadas à rede por meio do comando scp ou do comando sftp entre dois servidores que se conectam em um canal seguro pela rede.

Neste artigo, mostrarei algumas ferramentas e truques simples que o ajudarão a aumentar a segurança do seu servidor ssh. Aqui você encontrará algumas informações úteis sobre como proteger e prevenir servidores ssh contra ataques de força bruta e ataques de dicionário.

1. Negar hosts

DenyHosts é um script de segurança de prevenção de intrusões baseado em log de código aberto para servidores SSH que foi escrito em uma linguagem de programação python e deve ser executado por administradores de sistema Linux e usuários para monitorar e analisar o acesso ao servidor SSH registros de tentativas de login malsucedidas, conhecidos como ataques baseados em dicionário e ataques de força bruta.

O script funciona banindo endereços IP após um determinado número de tentativas de login malsucedidas e também evitando que tais ataques obtenham acesso ao servidor.

Recursos do DenyHosts
  • Mantém um registro de /var/log/secure para encontrar todas as tentativas de login bem-sucedidas e malsucedidas e as filtra.
  • Fica de olho em todas as tentativas de login malsucedidas do usuário e do host infrator.
  • Continua monitorando cada usuário existente e inexistente (por exemplo, xyz) quando uma tentativa de login falha.
  • Mantém o controle de cada usuário infrator, host e tentativas de login suspeitas (se houver uma série de falhas de login) proíbe o endereço IP do host adicionando uma entrada em /etc/hosts.deny arquivo.
  • Opcionalmente, envia uma notificação por e-mail sobre hosts recentemente bloqueados e logins suspeitos.
  • Também mantém todas as tentativas de login de usuário com falha, válidas e inválidas, em arquivos separados, para facilitar a identificação de qual usuário válido ou inválido está sob ataque. Assim, podemos deletar essa conta ou alterar a senha, ou desabilitar o shell desse usuário.

2. Fail2Ban

Fail2ban é uma das estruturas de detecção/prevenção de intrusão de código aberto mais populares, escrita em uma linguagem de programação python. Ele opera verificando arquivos de log como /var/log/secure, /var/log/auth.log, /var/log/pwdfail etc. para muitas tentativas de login malsucedidas.

Fail2ban é usado para atualizar o arquivo Netfilter/iptables ou hosts.deny do TCP Wrapper, para rejeitar o endereço IP de um invasor por um determinado período de tempo. Ele também tem a capacidade de cancelar o banimento de um endereço IP bloqueado por um determinado período de tempo definido pelos administradores. No entanto, um certo minuto de cancelamento do banimento é mais que suficiente para impedir tais ataques maliciosos.

Recursos Fail2Ban
  • Multithreaded e altamente configurável.
  • Suporte para rotação de arquivos de log e pode lidar com vários serviços como (sshd, vsftpd,apache, etc).
  • Monitora arquivos de log e procura padrões conhecidos e desconhecidos.
  • Usa a tabela Netfilter/Iptables e TCP Wrapper (/etc/hosts.deny) para banir o IP dos invasores.
  • Executa scripts quando um determinado padrão é identificado para o mesmo endereço IP mais de X vezes.

3. Desative o login raiz

Por padrão, os sistemas Linux são pré-configurados para permitir logins remotos ssh para todos, incluindo o próprio usuário root, o que permite que todos façam login diretamente no sistema e obtenham acesso root. Apesar do servidor ssh permitir uma forma mais segura de desabilitar ou habilitar logins root, é sempre uma boa ideia desabilitar o acesso root, mantendo os servidores um pouco mais seguros.

Há tantas pessoas tentando fazer uso de força bruta em contas root por meio de ataques SSH simplesmente fornecendo nomes de contas e senhas diferentes, um após o outro. Se você for um administrador de sistema, poderá verificar os logs do servidor ssh, onde encontrará diversas tentativas de login malsucedidas. A principal razão por trás de uma série de tentativas de login malsucedidas é ter senhas fracas o suficiente e isso faz sentido para hackers/invasores tentarem.

Se você tiver senhas fortes, provavelmente estará seguro; no entanto, é melhor desativar o login root e ter uma conta normal separada para fazer login e, em seguida, usar sudo ou su para obter acesso root sempre que necessário.

4. Exibir banner SSH

Este é um dos recursos mais antigos disponíveis desde o início do projeto ssh, mas quase não o vi sendo usado por alguém. De qualquer forma, acho que é um recurso importante e muito útil que usei em todos os meus servidores Linux.

Isso não tem nenhuma finalidade de segurança, mas o maior benefício deste banner é que ele é usado para exibir mensagens de aviso ssh para acesso autorizado pela ONU e mensagens de boas-vindas para usuários autorizados antes da solicitação da senha e depois que o usuário efetuou login.

5. Login SSH sem senha

Um login SSH sem senha com keygen SSH estabelecerá uma relação de confiança entre dois servidores Linux, o que torna a transferência de arquivos e sincronização muito mais fácil.

Isso é muito útil se você estiver lidando com backups automatizados remotos, execução remota de scripts, transferência de arquivos, gerenciamento remoto de scripts, etc., sem inserir a senha todas as vezes.

Para proteger ainda mais seu servidor SSH, leia nosso artigo sobre Como proteger e proteger o servidor OpenSSH