quarta-feira, 25 de novembro de 2015

Efetuando Hardening Básico em Servidores e Serviços SSH


Após abordarmos constantes temas relacionados a Auditoria em Servidores SSH, senti a necessidade de estabelecer o contraponto apresentando um guia com dicas de Hardening em serviços SSH para prevenção contra senhas fracas, Brute Force e autenticações indevidas.
O guia é bem simples e apresenta uma serie de parametrizações efetuadas no server side, mais especificamente no sshd_config do servidor.

Vamos ao arquivo que corresponde as configurações do SSH
 # vim /etc/ssh/sshd_conf  

Forçando a execução do Protocol 2 (SSH-2)

A versão 1 do protocolo SSH (SSH-1) possui alvumas vulnerabillidades de segurança em questão de interceptação de dados e etc, então na maioria dos casos este protocolo é conhecido como obsoleto. Então, editando o arquivo sshd_config você pode descomentar a linha referente ao uso do mesmo e forçar a aplicação a utilizar o protocolo 2 como Default.






Desabilitando o acesso SSH do usuário root

Esta prática é recomendada para qualquer servidor, porém praticamente obrigatória para servidores que necessitam de acesso SSH aberto para a internet. O usuário root é o usuário mais cobiçado dentro de qualquer sistema Unix, e provavelmente a primeira vitima dentro do Pentest ou alvo de uma pessoa maliciosa. Podemos desabilitar o login SSH do usuário descomentando a linha PermitRootLogin e adicionando a ela o parâmetro "no". Neste caso recomendo que tenha usuários particulares com permissões de sudo para poder executar as rotinas dentro do servidor.





Restringindo o acesso para somente alguns usuários do sistema

Podemos também ordenar para que somente alguns usuários escolhidos possam se autenticar dentro do sistema como forma de aumentarmos a segurança contra usuários com senhas fracas alterando ou criando se não existir, o parâmetro AllowUsers e passando para ele os usuários que desejamos que autentiquem no sistema.




(Alternativa) Negando o acesso somente de alguns usuários

Também podemos adotar a politica que nos permite negar o acesso a determinados usuários do sistema e liberando para todos os outros, como uma espécie de Black List do SSH. Basta alterar, ou criar caso não exista o parâmetro DenyUsers



Configurando o Idle Logout do SSH

É possível também configurar um tempo de logout do sistema caso o usuário conectado fique inativo. Pode não parecer comum, mas é muito fácil conseguir acesso a sistemas a partir de terminais abertos de usuários que simplesmente esquecem seu computador desbloqueado e etc. Para parametrizar esse tempo, podemos editar o arquivo sshd_config e descomentar e modificar as linhas ClientAliveInterval onde iremos parametrizar o tempo em segundos de uma sessão que será kickada caso permaneça inativa nesse caso parametrizei 600 segundos (10 minutos)



Plus (+) Colocando um Banner de login

É possível colocar mensagens antes de depois de login no Linux, já expliquei o procedimento em arquivo, neste caso iremos colocar o banner no ato de login no SSH. Basta descomentar a opção Banner e pontar ela para /etc/issue, ou qualquer arquivo customizado caso não queira utilizar a mesma mensagem do login físico da máquina.


Agora vamos editar o arquivo /etc/issue

 vim /etc/issue  






Mudando a porta do SSH

Podemos mudar também a porta em que o nosso serviço de SSH vai operar, basta alterar o parâmetros Port e setar a porta que iremos escutar.



Desabilitando senhas vazias

Para a proteção contra o acesso de usuários criados sem senha, é possível atribuir o valor "no" para o parâmetro PermitEmptyPasswords



Tentativas máximas de autenticação e numero máximo de sessões no servidor 

Podemos também definir o numero máximo de tentativas de autenticação para prevenir ataques de Brute Force no serviço de SSH, onde iremos alterar o parâmetro MaxAuthTries e definir o numero de tentativas que o sistema irá aceitar antes de dar o death.




Usando a autenticação de Chave Pública 

Talvez uma das melhores dicas seria autenticar os usuários a partir de chaves assimétricas geradas no SSH. Fizemos um artigo que você pode conferir Clicando Aqui explicando como gerar as chaves e autenticá-las no servidor. É bem simles 



:)

SOBRE O AUTOR

Matheus Fidelis

http://msfidelis.github.io/

Power Ranger, Piloto de Helicópteros e Astronauta da NASA. Desenvolvedor Web PHP com foco em Backend e POO, Linux SysAdmin DevOps e Entusiasta Python. Criou esse site pra contribuir com a comunidade com coisas que aprende dentro de um setor maluco de TI :)

3 comentários:

  1. excelente artigo, vou testar as dicas agora mesmo.

    ResponderExcluir
    Respostas
    1. Opa, depois diz pra gente o que conseguiu fazer!

      Excluir
  2. Legal. mas procure deixar seu terminal em preto e branco ou contrastes mais visivéis.
    abçs

    ResponderExcluir

 
Nanoshots | Open Source Security, Linux e Tutoriais © 2015 - Designed by Templateism.com