diff --git a/content/posts/ssh-hardening.pt.md b/content/posts/ssh-hardening.pt.md new file mode 100644 index 0000000..ed100d8 --- /dev/null +++ b/content/posts/ssh-hardening.pt.md @@ -0,0 +1,66 @@ ++++ +date = '2024-10-26T16:59:23-03:00' +title = 'Boas praticas para configuração do SSH' +description = "Post no blog do Thanwer sobre melhores praticas para configurar servidores SSH" +tags = [ + "webserver", + "GNU/Linux", + "Basics Series", +] ++++ + +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 iptabels e jails do fail2ban, temos alguns parametros que podemos ajustar nos nossos servidores para termos mais uma medida de proteção. + +## Métodos de autenticação SSG + +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 eficiencia de ataques de força bruta já que chaves SSH são muito mais dificeis 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 nivel de segurança, voce pode implementar [autenticação de dois fatores com o Google Autenticator](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 varios metodos de autenticação habilitados que voce provavelmente não utiliza. Voce pode desabilita-los para reduzir a superficie de ataque do seu servidor: + +```bash +ChallengeResponseAuthentication no +KerberosAuthentication no +GSSAPIAuthentication no +``` + +## Melhorar algoritmos de criptografia do SSH + +Seguinndo [esses guias](https://www.sshaudit.com/hardening_guides.html) voce pode desabilitar algoritmos de autenticação e criptografia vulneraveis 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 regrad 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 +``` \ No newline at end of file