OpenSSH

De Biblioteca Unix

Conteúdo

OpenSSH

Sobre

O OpenSSH é uma ferramenta que permite acesso remoto via terminal em diversos Unix.

Debian Jessie 8.6/Ubuntu Server 16.04 LTS

Instalando os Pacotes necessários

Para instalar o OpenSSH no Debian Lenny ou Ubuntu Server, basta instalar o metapacote ssh:

 # apt-get install ssh

Configurações

As configurações padrões já são bem robustas, a única mudança sugerida no arquivo: /etc/ssh/sshd_config é a desativação do login automático como root mas a permissão para poder autenticar usando chaves:

PermitRootLogin without-password

uma forma de aumentar a segurança é instalar o Fail2Ban.

Acessando remotamente sem senha

PC1 ==> PC2 (por ssh e sem senha)

Para acessar um computador remoto sem senha, logue na máquina de onde vai partir a conexão ssh (PC1) e crie a chave de conexão:

# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ENTER
Enter passphrase (empty for no passphrase): ENTER
Enter same passphrase again: ENTER
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
6a:bc:f3:88:aa:15:4b:3b:96:8b:33:1c:d5:db:38:a3 root@srv
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|    .            |
|   . .           |
|  +   + S        |
| o = * o         |
|. O . *          |
|o= E o.o         |
|o+o.. oo.        |
+-----------------+

você não deve colocar qualquer senha, apenas pressione enter em todas as respostas. Agora vamos copiar a chave pública gerada para o computador destino (PC2) que desejamos que o que estamos logado se conecte.

# ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@dominio

você receberá uma mensagem de sucesso, apenas teste para ter certeza que a conexão irá acontecer:

# ssh usuario@dominio

não deve ser pedida nenhuma senha.

Two-Factor-Authentication com Google Auth

Para tornar o acesso ao seu servidor ainda mais seguro, uma forma de fazer isso é usar o mecanismo de autenticação de duplo fator (um aplicativo chamado Google Auth no seu celular e a sua senha). Dessa forma, mesmo que alguém consiga descobrir a senha do usuário, ainda precisaria do segundo fator de autenticação.

Primeiro precisamos instalar o módulo do PAM que da suporte a essa tecnologia:

# 'apt-get install libpam-google-authenticator 

ainda como root vamos adicionar a linha a seguir no PAM:

# vim /etc/pam.d/sshd
@include common-auth
account    required     pam_nologin.so
@include common-account
session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_keyinit.so force revoke
@include common-session
session    optional     pam_motd.so  motd=/run/motd.dynamic
session    optional     pam_motd.so noupdate
session    optional     pam_mail.so standard noenv # [1]
session    required     pam_limits.so

auth       required     pam_google_authenticator.so               # << está linha deve ser adicionada nesta posição

session    required     pam_env.so # [1]
session    required     pam_env.so user_readenv=1 envfile=/etc/default/locale
session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so open
@include common-password

em seguida, precisamos informar ao OpenSSH que ele deve usar a autenticação do PAM:

# vim /etc/ssh/sshd_config
...
ChallengeResponseAuthentication yes   # era 'no' e deve ser trocado para 'yes'
...
UsePAM yes

feito isso, antes de reiniciar o serviço, conecte com o usuário que será protegido (por exemplo: brivaldo):

$ ssh brivaldo@servidor
$ brivaldo@servidor:~$ google-authenticator

Será mostrado um QRCode que deve ser escaneado com o aplicativo e 5 senhas de uso único (caso você tenha esquecido seu celular e não tenha acesso ao aplicativo de geração). Somente após esse passo, no servidor, reinicie o OpenSSH:

# /etc/init.d/ssh restart

na sua próxima tentativa além da senha, ele pedirá o Verification code (a senha gerada pelo aplicativo no seu celular).

FreeBSD 8.2

Instalando os Pacotes necessários

o FreeBSD diferente dos Linux, pergunta durante a instalação se vai ser deve ou não ativar a conexão remota por SSH, caso você não tenha optado por este modelo, basta ativá-lo, pois ele já está no sistema padrão:

# echo "sshd_enable=YES" >> /etc/rc.conf
# /etc/rc.d/sshd start

pronto, o serviço SSH está ativo.

Configurações

As configurações padrões já são bem robustas, a única mudança sugerida no arquivo: /etc/ssh/sshd_config é a desativação do login automático como root:

VersionAddendum FreeBSD-20090522
PermitRootLogin no

com isso podemos evitar que um invasor possa quebrar diretamente seu usuário root. Para recarregar as informações:

# /etc/rc.d/sshd restart


CentOS/RedHat 5.6

Instalando os Pacotes necessários

Para instalar o OpenSSH no CentOS, basta instalar o metapacote openssh:

# yum install openssh

ele vai instalar o openssh-client e openssh-server.

Configurações

As configurações padrões já são bem robustas, a única mudança sugerida no arquivo: /etc/ssh/sshd_config é a desativação do login automático como root:

PermitRootLogin no

com isso podemos evitar que um invasor possa quebrar diretamente seu usuário root.


--Brivaldo 15h38min de 24 de março de 2011 (AMT)

Ferramentas pessoais