terça-feira, 12 de maio de 2015

Acesso via SSH por Chave Pública

 Introdução

A maioria dos administradores de rede toma alguma ação com relação ao serviço de ssh, como, por exemplo, não permitir login como root, alterar a porta default do serviço, tudo isso pode e deve ser feito, mas o objetivo dessa documentação é implementar uma camada a mais de segurança, o uso de chaves.

Isso deve ser implementado em todos os seus servidores, pois mesmo sendo um servidor interno da sua rede, ele ainda está exposto aos atacantes internos e aos ataques automatizados através de botnet. Algum usuário da sua rede pode estar atacando seu servidor sem nem suspeitar disso.

Gerar a chave no Windows

Para gerar a chave no Windows vamos utilizar um utilitário chamado Puttygen. Baixe o executável e inicie o mesmo

A tela inicial já nos vem configurada para chave SSH-2 RSA de 2048 bits, clique no botão Generate.


Movimente o mouse na área sem dados para gerar a senha.


Na parte superior temos a chave pública que será colocada no servidor, selecione o seu conteudo e copie para um txt temporário.

A segunda seleção é onde você deve cadastrar uma senha para sua chave privada, crie a maior senha que você consiga lembrar, se alguém quebrar essa senha você perdeu sua chave privada.

E na última seleção temos a opção de salvar a chave pública e privada. Salve apenas a chave privada.

Configurações no Servidor Linux

Criar o usuário e configurar o acesso via chave

Crie o usuário no Linux
# adduser teste

Entre no diretório do usuário
# cd /home/teste/

Crie o diretório.ssh
# mkdir .ssh

Acesse o diretório
# cd .ssh/

Crie o arquivo.
# vi authorized_keys

Dentro desse arquivo você vai colocar o conteúdo da chave pública, aquela que você colou em um arquivo temporário. Tenha certeza de que não houve quebra de linha (Se você colar no Word já era) - Dica do meu amigo Gesiel.

Altere as permissões do diretório
# chmod 700 .

E do arquivo
# chmod 600 authorized_keys

E por último de todo o diretório .ssh
# chown -R teste:teste /home/teste/.ssh

Testar a conexão

Para se conectar ao servidor Linux vamos utilizar outro utilitário o Putty. Baixe o executável e inicie o mesmo

Em Session informe o IP e Porta do Servidor


Em Connection // Data informe o nome do usuário


Em Connection // SSH // Auth informe o caminho da sua chave privada e clique em Open.

Observe que ele não pede a senha do meu usuário, mas sim a senha da minha chave privada. Aquela que nós definimos no momento da criação da chave.


E agora estamos logados.


Incrementar a segurança do SSH

Uma vez logados com sucesso, chegou a hora de incrementarmos a segurança do SSH no servidor Linux. Para isso execute o login como root e edite o arquivo sshd_config

# vi /etc/ssh/sshd_config
# Alterar a porta padrao
#Port 22
Port 2891

# Proibir login como root, os usuarios devem usar o su -
#PermitRootLogin yes
PermitRootLogin no

# Liberar acesso via chave
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile     .ssh/authorized_keys
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

# Proibir o acesso via senha
#PasswordAuthentication yes
PasswordAuthentication no


Se o servidor em questão for um FreeBSD altere também a diretiva abaixo:
ChallengeResponseAuthentication no

# service sshd restart

Testar acesso com usuário e senha

Ao tentar se logar passando um nome de usuário a mensagem abaixo é exibida


Pronto! Basta acessar passando a sua chave privada e a porta correta ;-)

Referências

Locaweb
Man sshd_config
Fórum FreeBSD

Nenhum comentário: