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