FreeBSD

SSH (Secure Shell)

OpenSSH

 

O ssh serve para acessar máquinas remotas, e é um substituto seguro para o rlogin, rsh, rcp e telnet. O sshd é o daemon do OpenSSH, e espera as conexões de clientes ssh, normalmente na porta 22. Ele "forka" um novo daemon para cada conexão. O daemon trabalha com troca de chaves, encriptação, autenticação, execução de comandos e troca de dados.

Não será preciso instalarmos o OpenSSH, já que o mesmo vem por padrão na instalação do FreeBSD. Também não será preciso criar um script de inicialização, pois pode ser inicializado a partir do arquivo /etc/rc.conf. Para que o sshd seja iniciado no momento do boot ele deverá conter a seguinte linha:

sshd_enable="YES"

Caso não possua, insira a linha e reinicie a máquina.


Não é recomendável acessar a máquina remotamente com a conta root, por precaução de segurança. Deve-se criar uma conta comum de usuário para este fim:

# pw user add fulano -c "Fulano" -d "/home/fulano" -g 0 -s "/usr/local/bin/bash"
# passwd fulano

A conta foi criada com o GID 0 (grupo wheel) para que possa dar um "su" e acessar como root. Dessa forma, pode-se entrar com essa conta via SSH e então dar um

# su -

para trabalhar normalmente como root.


Adicione a seguinte linha no arquivo /etc/ssh/sshd_config:

AllowUsers fulano

Após isso, digite

# killall -HUP sshd

Desta forma reiniciamos o processo sshd, fazendo com que ele leia novamente o arquivo de configuração, que foi modificado. Com essa configuração, o usuário fulano poderá acessar a máquina remotamente, através do protocolo SSH. Um bom cliente para o Windows é o Putty. Para acessar a partir de outra máquina FreeBSD ou Linux deve ser usado o comando "ssh", no formato

# ssh fulano@192.168.0.10

ou então

# ssh -l fulano 192.168.0.10

 

Para uma configuração mais elaborada, seguem abaixo alguns parâmetros que podem ser utilizados no arquivo /etc/ssh/sshd_config:


AllowGroups grupo1 grupo2
Permite que apenas os usuários que pertençam a algum dos grupos especificados efetuem o login. Deve ser usado o nome do grupo, não o GID.

AllowUsers usuario1 usuario2
Permite que apenas os usuários especificados efetuem o login. Deve ser usado o username, não o UID.

Banner /etc/mensagem
Mostra a mensagem contida no arquivo especificado antes do usuário efetuar o login.

DenyGroups grupo3 grupo4
Não permite que os usuários que pertençam a algum dos grupos especificados efetuem o login. Deve ser usado o nome do grupo, não o GID.

DenyUsers usuario3 usuario4
Não permite que os usuários especificados efetuem o login. Deve ser usado o username, não o UID.

HostKey /etc/ssh/ssh_host_key
Especifica o arquivo que contém a chave privada do host. É possível haver mais de uma chave privada. Chaves "rsa1" são usadas para a versão 1 e chaves "dsa" ou "rsa" são usadas para a versão 2 do protocolo SSH. Os arquivos que contém as chaves privadas devem ter permissão de leitura e escrita apenas para o dono (root).

IgnoreRhosts yes
Se setado para yes, não le os arquivos ~/.rhosts e ~/.shosts. O padrão é yes.

KeepAlive yes
Se setado para yes, envia mensagens keepalive para o cliente. Assim, caso o cliente cair isso será notado e a sessão ssh não ficará pendurada no servidor.

KerberosAuthentication yes
Especifica se a autenticação Kerberos será permitida.

KeyRegenerationInterval 3600
Especifica o intervalo em segundos para a recriação da chave.

ListenAddress 192.168.0.1
Endereço IP em que o daemon deve esperar as conexões, caso a máquina possuir mais de um endereço. Se não for especificado, o daemon permite a conexão por qualquer endereço da máquina.

LoginGraceTime 120
Tempo para o usuário logar-se. Se após esse tempo de conexão o cliente não tiver efetuado o login, será desconectado.

LogLevel INFO
Especifica o nível de log que deve ser usado. Os valores são: QUIET, FATAL, ERROR, INFO, VERBOSE e DEBUG. O nível DEBUG viola a privacidade dos usuários e não é recomendado.

MaxStartups 10:30:60
Após 10 conexões não autenticadas, recusa 30% das novas, e não permite mais que 60 conexões não autenticadas.

PermitRootLogin no
Permite ou não que o root efetue login via SSH.

Port 22
Especifica a porta em que o daemon deve esperar as conexões. Esse parâmetro pode ser usado mais de uma vez, caso sejam necessárias mais portas.

PrintMotd yes
Especifica se deve ser exibido o arquivo /etc/motd quando o usuário efetuar o login.

Protocol 2,1
Especifica as versões do protocolo ssh que o daemon deve suportar. Deve ser "1", "2" ou "2,1".

ServerKeyBits 768
Número de bits da chave do protocolo 1. O mínimo é 512, o padrão é 768.

StrictModes yes
Se setado para yes, as permissões e dono dos arquivos do usuário são checados antes de aceitar o login. Isso evita por exemplo que alguém acidentalmente deixe seus arquivos com permissão de escrita para todos.

Alguns dos arquivos utilizados pelo sshd:

/etc/ssh/sshd_config - Arquivo de configuração do sshd, como visto acima. Deve ter permissão de escrita apenas para o root.

/etc/ssh/ssh_host_key, /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_rsa_key - Estes três arquivos contém as partes privadas das chaves do host. O dono destes arquivos deve ser o root, e apenas o root deve ter permissão para leitura. O sshd não inicializa se estes arquivos estiverem com as permissões erradas.

/etc/ssh/ssh_host_key.pub, /etc/ssh/ssh_host_dsa_key.pub, /etc/ssh/ssh_host_rsa_key.pub - Estes três arquivos contém as partes públicas das chaves do host. Devem ter permissão de leitura para todos, mas escrita apenas para o root.

/etc/ssh/primes - Contém os grupos Diffie-Hellman usados para o "Diffie-Hellman Group Exchange".

/var/run/sshd.pid - Contém o PID do sshd.

 

Atualizado em 03/02/04.

Heini Thomas Geib.
http://www2.unijui.edu.br/~heini

Voltar