segunda-feira, 8 de fevereiro de 2010

Aumentando a segurança do SSH com 3 medidas simples (leiam a conclusão também)

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.

5 comentários:

  1. 4- Alterer a porta de escuta:
    Port 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.

    ResponderExcluir
  2. Eu acho que você não leu a conclusão ;) Mas você está corretíssimo!

    Abraços

    ResponderExcluir
  3. Æ!!

    Parabens pelo post! Bem legal!
    Eu só não usava o:

    PasswordAuthentication no

    Mas agora já estou usando! Valeu!

    Há braços

    ResponderExcluir
  4. Bem legal o post. Vai ajudar nas próximas configurações.

    Abraços

    ResponderExcluir
  5. Parabens pelo post!

    Apesar 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.

    ResponderExcluir

Comenta ae, amiguinho!