Red Hat Training

A Red Hat training course is available for RHEL 8

12.5. Tornando o OpenSSH mais seguro

As seguintes dicas o ajudam a aumentar a segurança ao usar o OpenSSH. Note que as mudanças no arquivo de configuração /etc/ssh/sshd_config OpenSSH requerem o recarregamento do daemon sshd para ter efeito:

# systemctl reload sshd
Importante

A maioria das mudanças de configuração de endurecimento de segurança reduz a compatibilidade com clientes que não suportam algoritmos atualizados ou conjuntos de cifras.

Desabilitando protocolos de conexão inseguros

  • Para tornar o SSH verdadeiramente eficaz, evite o uso de protocolos de conexão inseguros que são substituídos pela suíte OpenSSH. Caso contrário, a senha de um usuário pode ser protegida usando SSH para apenas uma sessão, a ser capturada posteriormente ao fazer o login usando Telnet. Por este motivo, considere desativar protocolos inseguros, tais como telnet, rsh, rlogin e ftp.

Habilitação da autenticação baseada em chave e desativação da autenticação baseada em senha

  • Desabilitar senhas para autenticação e permitir apenas pares de chaves reduz a superfície de ataque e também pode poupar o tempo dos usuários. Em clientes, gerar pares de chaves usando a ferramenta ssh-keygen e usar o utilitário ssh-copy-id para copiar chaves públicas de clientes no servidor OpenSSH. Para desativar a autenticação baseada em senhas em seu servidor OpenSSH, edite /etc/ssh/sshd_config e mude a opção PasswordAuthentication para no:

    SenhaAutenticação não

Tipos de chaves

  • Embora o comando ssh-keygen gere um par de chaves RSA por padrão, você pode instruí-lo a gerar chaves ECDSA ou Ed25519 usando a opção -t. O ECDSA (Elliptic Curve Digital Signature Algorithm) oferece melhor desempenho do que o RSA com a força simétrica equivalente da chave. Ele também gera chaves mais curtas. O algoritmo de chave pública Ed25519 é uma implementação de curvas Edwards retorcidas que é mais segura e também mais rápida que RSA, DSA, e ECDSA.

    O OpenSSH cria automaticamente chaves de servidor RSA, ECDSA e Ed25519 se elas estiverem faltando. Para configurar a criação da chave de host no RHEL 8, use o serviço instanciado sshd-keygen@.service. Por exemplo, para desativar a criação automática do tipo de chave RSA:

    # systemctl mask sshd-keygen@rsa.service
  • Para excluir tipos-chave específicos para conexões SSH, comente as linhas relevantes em /etc/ssh/sshd_config, e recarregue o serviço sshd. Por exemplo, para permitir apenas as chaves de host Ed25519:
# HostKey /etc/ssh/ssh_host_rsa_key
# HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

Porto sem falta

  • Por padrão, o daemon sshd ouve na porta TCP 22. A mudança da porta reduz a exposição do sistema a ataques baseados em varredura automatizada da rede e, assim, aumenta a segurança através da obscuridade. Você pode especificar a porta usando a diretiva Port no arquivo de configuração /etc/ssh/sshd_config.

    Você também tem que atualizar a política padrão da SELinux para permitir o uso de uma porta não inadimplente. Para fazer isso, utilize a ferramenta semanage do pacote policycoreutils-python-utils:

    # semanage port -a -t ssh_port_t -p tcp port_number

    Além disso, atualizar a configuração firewalld:

    # firewall-cmd --add-port port_number/tcp
    # firewall-cmd --runtime-to-permanent

    Nos comandos anteriores, substituir port_number pelo novo número de porta especificado usando a diretiva Port.

Sem login de raiz

  • Se seu caso particular de uso não exigir a possibilidade de login como usuário root, você deve considerar a possibilidade de configurar a diretiva de configuração PermitRootLogin para no no arquivo /etc/ssh/sshd_config. Desativando a possibilidade de logar-se como usuário root, o administrador pode auditar quais usuários executam que comandos privilegiados depois de logar-se como usuários regulares e depois ganhar direitos de root.

    Alternativamente, defina PermitRootLogin para prohibit-password:

    PermitRootLogin proíbe palavras-passe

    Isto reforça o uso de autenticação baseada em chaves em vez do uso de senhas para o login como raiz e reduz os riscos ao prevenir ataques de força bruta.

Usando a extensão X Security

  • O servidor X em clientes Red Hat Enterprise Linux não fornece a extensão X Security. Portanto, os clientes não podem solicitar outra camada de segurança ao conectar-se a servidores SSH não confiáveis com o encaminhamento X11. A maioria das aplicações não é capaz de rodar com esta extensão habilitada de qualquer forma.

    Por padrão, a opção ForwardX11Trusted no arquivo /etc/ssh/ssh_config.d/05-redhat.conf está definida para yes, e não há diferença entre o comando ssh -X remote_machine (host não confiável) e ssh -Y remote_machine (trust host).

    Se seu cenário não exigir o recurso de encaminhamento X11, defina a diretiva X11Forwarding no arquivo de configuração /etc/ssh/sshd_config para no.

Restringir o acesso a usuários, grupos ou domínios específicos

  • As diretrizes AllowUsers e AllowGroups no servidor de arquivos de configuração /etc/ssh/sshd_config permitem que você permita que somente determinados usuários, domínios ou grupos se conectem ao seu servidor OpenSSH. Você pode combinar AllowUsers e AllowGroups para restringir o acesso de forma mais precisa, por exemplo:

    AllowUsers *@192.168.1.*,*@10.0.0.*,!*@192.168.1.2
    AllowGroups example-group

    As linhas de configuração anteriores aceitam conexões de todos os usuários dos sistemas em 192.168.1.* e 10.0.0.* sub-redes, exceto do sistema com o endereço 192.168.1.2. Todos os usuários devem estar no grupo example-group. O servidor OpenSSH nega todas as outras conexões.

    Observe que o uso de listas de permissão (diretrizes que começam com Allow) é mais seguro do que o uso de listas de bloco (opções que começam com Deny) porque as listas de permissão também bloqueiam novos usuários ou grupos não autorizados.

Mudando as políticas criptográficas de todo o sistema

  • OpenSSH utiliza as políticas criptográficas do sistema RHEL, e o nível padrão de políticas criptográficas do sistema oferece configurações seguras para os modelos de ameaça atuais. Para tornar suas configurações criptográficas mais rígidas, altere o nível da política atual:

    # update-crypto-policies --set FUTURE
    Setting system policy to FUTURE
  • Para optar pela exclusão das políticas de criptografia de todo o sistema para seu servidor OpenSSH, descomente a linha com a variável CRYPTO_POLICY= no arquivo /etc/sysconfig/sshd. Após esta mudança, os valores que você especificar nas seções Ciphers, MACs, KexAlgoritms, e GSSAPIKexAlgorithms no arquivo /etc/ssh/sshd_config não serão sobrepostos. Note que esta tarefa requer profunda experiência na configuração de opções criptográficas.
  • Veja Utilizando políticas criptográficas em todo o sistema no título de endurecimento de segurança RHEL 8 para mais informações.

Recursos adicionais

  • sshd_config(5), ssh-keygen(1), crypto-policies(7), e update-crypto-policies(8) páginas man