73 lines
3.7 KiB
Markdown
73 lines
3.7 KiB
Markdown
+++
|
|
date = '2024-10-26T16:59:23-03:00'
|
|
title = 'Boas práticas para configuração do SSH'
|
|
description = "Fortaleça a segurança do seu servidor SSH com autenticação por chaves, 2FA, hardening de criptografia, restrições de acesso e desativação de métodos não utilizados."
|
|
tags = [
|
|
"webserver",
|
|
"GNU/Linux",
|
|
"Basics Series",
|
|
]
|
|
canonical = "/posts/ssh-hardening"
|
|
+++
|
|
|
|
Como voce pode ver no meu ultimo post sobre [fail2ban]({{< ref "/posts/fail2ban-basics" >}} "Fail2ban basics"), o serviço SSH é um alvo popular de ataques de força bruta, nós devemos tomar nosso tempo para melhorar a segurança de nossos servidores.
|
|
|
|
Além de regras do iptables e jails do fail2ban, temos alguns parâmetros que podemos ajustar nos nossos servidores para termos mais uma medida de proteção.
|
|
|
|
## Métodos de autenticação SSH
|
|
|
|
Por padrão, o serviço SSH permite autenticação por senha para todos os usuários exceto o root, oque é um bom começo, mas podemos fazer mais.
|
|
|
|
### Autenticação por chaves
|
|
|
|
O primeiro passo que voce pode fazer é desativar a autenticação por senha e utilizar apenas autenticação por chaves. Isso vai reduzir muito a eficiência de ataques de força bruta já que chaves SSH são muito mais difíceis de quebrar do que senhas.
|
|
|
|
Eu não vou mostrar como fazer isso, já que existem muitos tutoriais bons na internet sobre esse assunto, [esse do Github por exemplo](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).
|
|
|
|
Outro passo é desativar o login do root, isso faz sentido por que o root é um usuário que existe em todos os sistemas GNU/Linux e isso o torna um alvo obvio.
|
|
|
|
```bash
|
|
#PermitRootLogin prohibit-password
|
|
PermitRootLogin no
|
|
```
|
|
|
|
### Autenticação por dois fatores (2FA)
|
|
|
|
Se voce quiser mais um nível de segurança, voce pode implementar [autenticação de dois fatores com o Google Authenticator](https://docs.vultr.com/how-to-use-two-factor-authentication-with-sudo-and-ssh-on-linux-with-google-authenticator).
|
|
|
|
### Desativar métodos de autenticação não utilizados
|
|
|
|
Por padrão o servidor SSH vem com vários métodos de autenticação habilitados que voce provavelmente não utiliza. Voce pode desabilita-los para reduzir a superfície de ataque do seu servidor:
|
|
|
|
```bash
|
|
ChallengeResponseAuthentication no
|
|
KerberosAuthentication no
|
|
GSSAPIAuthentication no
|
|
```
|
|
|
|
## Melhorar algoritmos de criptografia do SSH
|
|
|
|
Seguindo [esses guias](https://www.sshaudit.com/hardening_guides.html) voce pode desabilitar algoritmos de autenticação e criptografia vulneráveis e priorizar os mais fortes (AES-256-GCM, chacha20-poly1305).
|
|
|
|
Quando voce terminar, verifique com a ferramenta [ssh-audit](https://github.com/jtesta/ssh-audit).
|
|
|
|
## Restringir acessos SSH
|
|
|
|
Além das regras do iptables, o arquivo `/etc/ssh/sshd_config` pode aplicar restrições baseadas em usuário, grupo e/ou IP de origem.
|
|
|
|
Por exemplo, para permitir conexões por IP, voce pode adicionar conforme os seguintes exemplos:
|
|
|
|
```bash
|
|
# Restrict to a specific IP address
|
|
AllowUsers *@192.0.0.2
|
|
# Restrict using CIDR notation
|
|
AllowUsers *@192.0.0.0/24
|
|
# Restrict a specific user to a specific IP address
|
|
Match User alice
|
|
AllowUsers alice@192.0.0.2
|
|
```
|
|
|
|
## Conclusão
|
|
|
|
O hardening do SSH é um processo contínuo, não uma tarefa única. Comece com autenticação por chaves e desative o login por senha, depois adicione camadas como 2FA, hardening de criptografia e restrições de acesso. Combinado com regras de iptables e jails do fail2ban, você pode reduzir significativamente a superfície de ataque do seu servidor. Revise sua configuração SSH periodicamente e mantenha-se atualizado com as recomendações de segurança mais recentes.
|