1.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
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áriossh-copy-id
para copiar chaves públicas de clientes no servidorOpenSSH
. Para desativar a autenticação baseada em senhas em seu servidor OpenSSH, edite/etc/ssh/sshd_config
e mude a opçãoPasswordAuthentication
parano
: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çosshd
. 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 diretivaPort
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 pacotepolicycoreutils-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
parano
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
paraprohibit-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 parayes
, e não há diferença entre o comandossh -X remote_machine
(host não confiável) essh -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
parano
.
Restringir o acesso a usuários, grupos ou domínios específicos
As diretrizes
AllowUsers
eAllowGroups
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 combinarAllowUsers
eAllowGroups
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ávelCRYPTO_POLICY=
no arquivo/etc/sysconfig/sshd
. Após esta mudança, os valores que você especificar nas seçõesCiphers
,MACs
,KexAlgoritms
, eGSSAPIKexAlgorithms
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)
, eupdate-crypto-policies(8)
páginas man