terça-feira, 26 de outubro de 2010

Hardening de SSH

Caros colegas,

Como é de costume administradores de sistemas GNU/Linux, estou compartilhando alguns temas neste espaço.

Inicialmente será postado estudo sobre a ferramenta mais utilizada para administração de servidores Linux, o SSH. O SSH é uma ferramenta de acesso remoto não apenas para sistemas Linux e sim para sistemas unix em geral.

O SSH pode ser utilizado para execução de comando remotamente, tunelamento de conexão, execução de aplicativos gráficos e muito mais, e tudo isso de forma muito segura.

O SSH está disponível nos repositórios dos sabores, e em nosso exemplo utilizaremos o debian. Os pacotes correspondentes ao SSH são :

openssh-client ( Utilizado para realizar acesso a um servidor SSH )

openssh-server ( Utilizado para prover o serviço SSH )

Por padrão o openssh-client e openssh-server vem instalado na maioria dos sabores, tratando-se de instalações em modo servidor, contudo, pode-se verificar sua existência com os comandos:

$dpkg -l openssh-client

$dpkg -l openssh-server

Caso o comando retorne que o pacote openssh-server não pode ser encontrado, instale-o manualmente utilizando o aptitude;

#

# Instalando servidor SSH

#

#aptitude install openssh-server

Caso tenha problemas na execução do comando, consulte sobre atualização de sources.list. O arquivo sources.list é responsável por armazenar os endereços dos espelhos ¨repositórios¨ que contem os pacotes do sabor.

#

# Verificando sources.list

#

http://wiki.forumdebian.com.br/index.php/Sources.list

Pronto nosso servidor SSH já está habilitado e aguardando uma solicitação de conexão. Agora vamos aos detalhes importantes;

Inicialmente devemos saber que os arquivos de configuração do SSH estão em /etc/ssh;

sshd_config: É o arquivo de configuração do servidor, é nele que vamos implementar algumas alterações para blindar o serviço que estamos disponibilizando.

ssh_config: É o arquivo de configuração do cliente (não abordaremos nessa apresentação).


#

# Editando configurações do SSH

#

Para editarmos o arquivo de configuração vamos utilizar o VI que é o editor de texto mais utilizado por administradores Linux:

#vi /etc/ssh/sshd_config

Parâmetros importantes na configuração de segurança de um servidor SSH são:

Por padrão todo serviço SSH é levantado na porta 22, isso nos deixa com o serviço vulnerável a scanners e tentativas de força bruta. Para que não fique tão vulnerável deve-se alterar a porta padrão do serviço para outra qualquer que não esteja sendo utilizada no servidor.

**Obs.: para verificar as portas e serviço no sistema GNU/Linux basta verificar o arquivo services em /etc/services.

Listando serviços e portas

$ cat /etc/services

Após verificação vamos altera a porta para 2122.

Port 22

para

Port 2122

Na linha 9 identificamos o protocolo, que por padrão é setado com valor 2. É importante observar este valor setado para o parâmetro " Protocol " uma vez que seu valor pode ser 1 ou 2,1. Nunca deixa a opção 1 pois trata-se de uma versão bugada do protocolo SSH.

Protocol 2

Mais abaixo verá o parâmetro LoginGraceTime. Este parâmetro é reponsável por controlar o tempo permitido para que seja realizado o login, caso o tempo exceda o terminal é fechado automaticamente. Esse valor é representado em segundos.

LoginGraceTime 120

Outro parâmetro crítico na configuração do arquivo é o PermitRootLogin que por padrão vem setado com a opação “yes”, ou seja, estamos autorizando o login no servidor por meio da conexão ssh ao usuário root. O ideal é que realizemos o acesso inicial como usuário comum e após ter logado utilize o comando su para adquirir permissão de root.

PermitRootLogin no

Blindando ainda mais o acesso a nosso servidor SSH, podemos setar um usuário que possa realizar o acesso via SSH inserindo o parâmetro AllowUsers;

AllowUsers pentest

Estou informando que somente o usuário pentest poderá logar no servidor via SSH.

É possível ainda especificar qual interface poderá receber conexão ssh, inserindo o parâmetro ListenAddress e configurando o endereço ip da placa desejada.

ListenAddress 192.168.1.13

Caso deseje exibir uma mensagem na tela de login do SSH, para advertir sobre o acesso restrito etc, deve-se descomentar a linha:

Banner /etc/issue.net

E editar o arquivo /etc/issue.net, inserindo as informações desejadas.


  • Após todas alterações, basta reiniciar o serviço ssh com o comando:

# invoke-rc.d ssh restart

ou

# /etc/init.d/ssh restart

Para realizar o login remoto basta seguir a seguinte sintaxe: ssh -p 2122 pentest@192.168.1.13

ssh -> Serviço;

-p -> Parâmetro para a especificação de porta, no caso 2122;

pentest -> Usuário que está ativo para realizar conexão

@192.168.1.13 -> endereço do servidor e NIC que em que está rodando o serviço SSH


Exemplo de conexão:

$ ssh -p 2122 pentest@192.168.1.13

##############################################################################

Hardening em servico SSH.....

Acesso restrito.
Esta tentativa de acesso bem como atividades apos login est\303\243o sendo monitoradas e logadas em nosso servidor.

Gestao de T.I.C

##############################################################################

pentest@192.168.1.13's password:
Last login: Tue Oct 26 21:05:42 2010 from 192.168.1.11
pentest@pentestdeb:~$ exit

Forte abraço