Este capítulo documenta a instalação, configuração e personalização do servidor de shell seguro sshd, além de explicar as vantagens da utilização dos serviços criptográficos. A utilização do programa cliente ssh também é explicada, além de utilitários usados para geração de chaves pública/privada para o ssh (autenticação RSA/DAS - o que é, vantagens), cópia de arquivos e métodos de autenticação usando o método de chave pública/privada RSA.
Ambas as versões 1 e 2 do ssh são documentadas neste capítulo. Opções específicas do protocolo 1 ou 2 do ssh serão destacadas.
O serviço de ssh permite fazer o acesso remoto ao console de sua máquina, em outras palavras, você poderá acessar sua máquina como se estivesse conectado localmente ao seu console (substituindo o rlogin e rsh). A principal diferença com relação ao serviço telnet padrão, rlogin e rsh é que toda a comunicação entre cliente/servidor é feita de forma encriptada usando chaves públicas/privadas RSA para criptografia garantindo uma transferência segura de dados.
A velocidade do console remoto conectado via Internet é excelente (melhor que a obtida pelo telnet e serviços r*) dando a impressão de uma conexão em tempo real (mesmo em links discados de 9.600 KB/s), a compactação dos dados também pode ser ativada para elevar ainda mais a velocidade entre cliente-servidor ssh. Além do serviço de acesso remoto, o scp possibilita a transferência/recepção segura de arquivos (substituindo o rcp).
Em conexões sem criptografia (rsh, rlogin) os dados trafegam de forma desprotegida e caso exista algum sniffer instalado em sua rota com a máquina destino, todo o que fizer poderá ser capturado (incluindo senhas).
É assumido que esteja usando a versão 2.0 do ssh. As explicações contidas aqui podem funcionar para versões posteriores, mas é recomendável que leia a documentação sobre modificações no programa (changelog) em busca de mudanças que alterem o sentido das explicações fornecidas aqui.
O openSSH (explicado neste capítulo) é baseado na última versão livre do implementação de Tatu Ylonen com todos os algoritmos patenteados (para bibliotecas externas) removidos, todos as falhas de segurança corrigidas, novas características e muitas outras melhorias. O openSSH foi criado por Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt e Dug Song.
A Home page principal é http://www.unixuser.org/~haruyama/security/openssh/index.html.
Falhas, correções e sugestões podem ser enviadas para a lista de discussão
<openssh-unix-dev@mindrot.org>
(aberta a postagens de usuários não
inscritos).
Abaixo as principais características do serviço ssh (Openssh).
Conexão de dados criptografada entre cliente/servidor.
Cópia de arquivos usando conexão criptografada.
Suporte a ftp criptografado (sftp).
Suporte a compactação de dados entre cliente/servidor.
Controle de acesso das interfaces servidas pelo servidor ssh.
Suporte a controle de acesso tcp wrappers.
Autenticação usando um par de chaves pública/privada RSA ou DSA.
Algoritmo de criptografia livre de patentes.
Suporte a PAM.
Suporte a caracteres ANSI (cores e códigos de escape especiais no console).
Pacote:
Utilitários:
ssh
- Cliente ssh (console remoto).
slogin
- Link simbólico para o programa
ssh.
sshd
- Servidor de shell seguro ssh.
scp
- Programa para transferência de arquivos entre
cliente/servidor
ssh-keygen
- Gera chaves de autenticação para o ssh
sftp
- Cliente ftp com suporte a comunicação segura.
sftp-server
- Servidor ftp com suporte a comunicação segura.
ssh-add
- Adiciona chaves de autenticação DSA ou RSA ao
programa de autenticação.
ssh-agent
- Agente de autenticação, sua função é armazenar a
chave privada para autenticação via chave pública (DSA ou RSA).
ssh-keyscan
- Scaneia por chaves públicas de autenticação de
hosts especificados. O principal objetivo é ajudar na construção do arquivo
local know_hosts
.
ssh-copy-id
- Usado para instalação do arquivo
identity.pub
em uma máquina remota.
Arquivos de configuração:
/etc/ssh/sshd_config
- Arquivo de configuração do servidor
ssh.
/etc/ssh/ssh_config
- Arquivo de configuração do cliente
ssh.
~/.ssh/config
- Arquivo de configuração pessoal do cliente
ssh.
É recomendado no mínimo 6MB de memória RAM para a execução do serviço ssh mais o kernel do Linux. Este limite deve ser redimensionado para servidores de acesso dedicado, uma quantidade de 64MB deve ser confortável para centenas de usuários conectados simultaneamente (o que raramente acontece).
Veja também Capítulo 19, Restrições de acesso, recursos e serviços para configuração de restrições usando PAM. O ssh que acompanha a distribuição Debian vem com o suporte a tcp wrappers compilado por padrão.
Detalhes sobre a execução do servidor sshd (como inicio,
autenticação e término) são enviadas ao syslog do sistema.
A prioridade e nível são definidos no
arquivo de configuração /etc/ssh/sshd_config
(veja “Exemplo de sshd_config
com explicações das diretivas”).
apt-get install ssh
.
Por padrão o servidor sshd é instalado como daemon, também é possível executa-lo via inetd mas isto não é aconselhável porque o servidor gera uma chave aleatória de seção toda vez que é iniciado, isto podendo levar vários segundos (quando é usada a versão 1 do protocolo ssh, veja “Diferenças nas versões do protocolo”).
O arquivo que controla o funcionamento do daemon do ssh é
controlado pelo arquivo /etc/init.d/ssh
.
A execução do ssh através de inetd é automática quando é feita uma requisição para a porta 22.
Opções de linha de comando do servidor sshd:
-b bits
- Especifica o número de bits da chave do servidor
(768 por padrão).
-d
- Modo de depuração - O servidor envia detalhes sobre seu
funcionamento aos logs do sistema e não é executado em segundo plano. Ele
também responderá conexões pelo mesmo processo. Podem ser usadas no máximo 3
opções -d para aumentar os detalhes de depuração.
-f arquivo_configuração
Indica um arquivo de configuração
alternativo (por padrão é usado /etc/ssh/sshd_config
). O
ssh pode ser configurado através de opções de linha de
comando mas requer um arquivo de configuração para ser executado. Opções de
linha de comando substituem as especificadas no arquivo de configuração.
-g segundos
- Especifica o tempo máximo para a digitação de
senha de acesso. Após o tempo especificado o servidor encerra a conexão. O
valor padrão é 600 segundos e 0 desativa este recurso.
-h arquivo_chave
- Diz qual arquivo contém a chave privada
local. O padrão é /etc/ssh/ssh_host_key
e somente o
usuário root
deve ter permissões de leitura neste arquivo.
Será necessário especificar esta opção caso o sshd não
esteja sendo executado como usuário root
.
É possível ter múltiplos arquivos de chaves para os protocolos 1 e 2 do ssh.
-i
- Indica que o servidor sshd será
executado pelo inetd. Isto não é aconselhável porque o
servidor gerará a chave aleatória de seção toda vez que for iniciado e isto
pode levar alguns segundos. Esta opção pode se tornar viável com o uso do
protocolo 2 ou criando chaves pequenas como 512 bytes (no ssh 1), mas a
segurança criptográfica também será diminuída. Veja as diferenças entre os
dois protocolos em “Diferenças nas versões do protocolo”.
-k segundos
- Especifica a freqüência da geração de novas
chaves do daemon sshd. O valor padrão é 3600 segundos e 0
desativa este recurso.
ATENÇÃO: NÃO desative este recurso!!! Esta opção traz a segurança que uma nova chave gerada de servidor será gerada constantemente (esta chave é enviada junto com a chave pública quando o cliente conecta e fica residente na memória volátil), assim mesmo que um cracker consiga obtê-la interceptando as conexões, será praticamente impossível tentar qualquer coisa. Valores menores tendem a aumentar ainda mais a segurança.
-p porta
- Especifica a porta que o daemon
sshd atenderá as requisições. Por padrão é usada a porta
22.
-q
- Nenhuma mensagem será enviada ao
syslog do sistema.
-u tam
- Especifica o tamanho do campo de nome do computador
que será armazenado no arquivo utmp
. A opção
u0 faz somente endereços IP serem gravados.
-D
- Quando usada não faz o sshd iniciar
em segundo plano.
-V versão_cliente
- Assume que o cliente possui a versão ssh
especificada (1 ou 2) e não faz os testes de identificação de protocolo.
-4
- Força o uso do protocolo IP tradicional (IPv4).
-6
- Força o uso da nova geração do protocolo IP (IPv6).
A maioria das opções são realmente úteis para modificar o comportamento do servidor ssh sem mexer em seu arquivo de configuração (para fins de testes) ou para executar um servidor ssh pessoal, que deverá ter arquivos de configuração específicos.
Copyright © 1999-2020 - Gleydson Mazioli da Silva