Aqui vão 3 dicas de fácil implementação e que com certeza aumentarão muito a segurança do seu servidor SSH. Ao alterar a configuração do SSH você deve reiniciar o servidor SSH para que a nova configuração seja carregada.
Arquivos
Configuração do servidor SSH:
/etc/ssh/sshd_config
Reiniciar o servidor SSH:
/etc/init.d/ssh restart
1. Restrinja o uso ao Protocol 2
O Protocol 2 é o padrão, porém, muitas distribuições vem com a configuração padrão Protocol 1,2. A release mais recente do Ubuntu, Karmic, já vem configurada para apenas Protocol 2, porém, muitas vezes temos um sistema que foi atualizado de releases mais atingas sem trocar os arquivos de configuração, portanto vale a pena você verificar quais protocolos o seu servidor SSH está aceitando.
/etc/ssh/ssh_config:
Protocol 2
2. Restrinja o acesso root
Existem diversos usuários que são criados automaticamente nas distribuições. Uma boa distribuição retira a senha destes usuários, impedindo a autenticação através de senha. Porém, muitos administradores configuram uma senha para o root.
A forma mais básica de um script de acesso à força bruta em um sistema funciona da seguinte forma: achar um IP que aceita uma conexão na porta 22 e tentar diversas senhas com o usuário root.
Impedir o login do root já cria uma dificuldade extra: qual usuário utilizar para se logar?
/etc/ssh/ssh_config:
PermitRootLogin no
3. Impeça a autenticação por senha
De nada adianta qualquer outra medida de segurança se as senhas utilizadas forem fracas. Com um pouco de sorte, um ataque de dicionário consegue quebra-las. Podemos implementar diversas políticas de criação de senha, atualização etc. Geralmente essas medidas tendem a piorar o problema, pois elas se sustentam exatamente no aspecto mais falho do sistema: o ser humano.
Impossibilitar a autenticação atavés de senhas e permitir apenas através de troca de chaves ou certificados nos trás dois benefícios: elimina a necessidade de memorização da senha e impede ataques de dicionário.
/etc/ssh/ssh_config:
PasswordAuthentication no
NOTA: É de extrema importância que você já possua ao menos um usuário com as chaves já configuradas e acesso previlegiado ao sistema, do contrário, ao reiniciar o SSH você ficará impossibilitado de se autenticar.
NOTA 2: Você deve configurar as chaves para cada máquina que irá se autenticar com aquele usuário. Isto pode gerar um pequeno trabalho para transportar as chaves públicas das suas máquinas para o servidor de uma vez só. Ex. desktop do trabalho e notebook de casa. É melhor configurar todas as chaves e só depois proibir autenticação por senha.
Conclusão
Estes 3 passos estão longe de ser uma solução completa de segurança, mas acho sejam o mínimo de segurança que devemos prover a qualquer máquina com servidor SSH na internet.
O melhor destas 3 iniciativas é que elas requerem muito pouco trabalho e dão um bom resultado. Isto é muito importante para equipes enxutas aonde uma única pessoa tem diversas roles ou é responsável por diversos servidores.
Outras medidas são o uso de TCP Wrappers, mudança de porta do SSH, knocking doors, lista de usuários que podem se autenticar e mais um infinito de soluções.
PS: Muitas pessoas acreditam que apenas alterar a porta SSH oferece alguma proteção, porém se esquecem que é extremamente simples construir um script que busque uma porta SSH aberta.
4- Alterer a porta de escuta:
ResponderExcluirPort 2222
Muitos robos varrem a internet em busca da porta 22.
5- Defina quais usuários podem conectar via ssh:
Allowusers joao maria
Se algum shell foi atribuido aos usuários do sistema, acima você pode restringir a conexão via ssh sem ter que alterar o perfil do usuário.
Eu acho que você não leu a conclusão ;) Mas você está corretíssimo!
ResponderExcluirAbraços
Æ!!
ResponderExcluirParabens pelo post! Bem legal!
Eu só não usava o:
PasswordAuthentication no
Mas agora já estou usando! Valeu!
Há braços
Bem legal o post. Vai ajudar nas próximas configurações.
ResponderExcluirAbraços
Parabens pelo post!
ResponderExcluirApesar de já utilizar chaves no lugar de senhas ainda tenho alguns servidores com o modelo antigo (usuário e senha).
Alterar a porta não ajuda muito, varrer portas em busca de SSH abertas é muito simples, o melhor pelo menos em meus testes foi utilizar chaves.
Novamente meus parabens, artigo útil e fácil de entender!
Um detalhe:
No item 2 ficou estranho o: crie uma dificulda extra...
Acho que o que quiz dizer é dificuldade, digo isto porque os tradutores de texto vão sofrer com esta palavra.
Ajude o pessoal lá de fora, as vezes alguem quer saber e conhecer o conteúdo passando o artigo por um tradutor.
Abraço.