+++ 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 ```