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