Title: Emulador de terminal
1Emulador de terminal TELNET
- O TELNET permite que um usuário interação
- Estabelece conexão TCP com um servidor
- Transmite os toques no teclado do usuário
diretamente ao computador remoto.
2Emulador de terminal TELNET
Transmissão comandos
Aplicativo
Aplicativo
S.O.
S.O.
Comando DIR
S.O. de Rede
S.O. de Rede
3Emulador de terminal TELNET
4Emulador de terminal TELNET
Estabelece conexão TCP com um servidor
Conexão TCP
Conexão TELNET
5Emulador de terminal TELNET
- Permite que o usuário especifique a máquina
remota fornecendo seu nome de domínio ou seu
endereço IP.
- O TELNET oferece três serviços básicos.
- Terminal virtual da rede
- Negociação de opções e fornecimento de um
conjunto de opções padronizadas - Trata ambas as pontas da conexão de forma
simétrica.
6Emulador de terminal TELNET
Servidor envia dados
Cliente lê dados de terminal
Cliente envia dados ao servidor
Client TELNET
Servidor TELNET
Servidor recebe dados
Dispositivo de entrada e saída de dados do
usuário
Sistema Operacional
Sistema Operacional
Inter-rede TCP/IP
7Emulador de terminal TELNET
- pseudoterminal (aceite do sistema operacional)
- Um programa em nível de aplicativo vantagens e
desvantagens. - Vantagem - Fácil a inclusão das modificações e o
controle do servidor - Desvantagem - Ineficiência. Cada sinal trafega do
teclado do usuário,
8Emulador de terminal TELNET
Pseudoterninal
Cliente
Telnet Server Filho
PSEUDOTERMINAL
Telnet PAI
S.O.
S.O.
Conexão
NVT
NVT
9Emulador de terminal TELNET
- TELNET - Interoperacional entre o maior número
possível de sistemas - carriage control (CR)
- linefeed (LF)
- CR-LF
- Para acomodar esta heterogeneidade, o TELNET
define como as seqüências de dados e de comandos
são enviadas através da Internet. A definição é
conhecida como o terminal virtual de rede (NVT
Network Virtual Terminal)
10Emulador de terminal TELNET
- Software do cliente converte os toques para NVT e
os envia ao servidor. - O software do servidor converte os dados e
comandos recebidos em formato NVT para o formato
requerido pelo sistema remoto.
11Emulador de terminal TELNET
interpretação para os caracteres de controle
12Emulador de terminal TELNET
- Além da interpretação de caracteres de controle,
o NVT define que a finalização da linha padrão
seja feita através de uma seqüência de duplo
caractere CR-LF. Quando um usuário pressionar a
tecla que corresponde ao fim da linha no terminal
local (p. ex., ENTER ou RETURN), o cliente TELNET
deverá converte-la em CR-LF para a retransmissão.
O servidor TELNET converte CR-LF para a seqüência
de caracteres de fim de linha apropriados na
máquina remota.
13Emulador de terminal TELNET
. A figura abaixo lista as funções de controle
permitidas pelo NVT
14Emulador de terminal TELNET
- A maioria dos teclados não possui teclas
extras. - Os interpretadores de comandos dos S.O.
dispõem de uma variedade de formas para gerá-los.
- Os projetistas NVT optaram por manter os
comandos separados do conjunto de caracteres
normais ASCII por dois motivos. - Para definir as funções de controle
separadamente permite maior flexibilidade ao
TELNET. - Para fazer a separação entre os sinais de
controle e dos dados normais.
15Emulador de terminal TELNET
- Para transmitir funções de controle por uma
conexão TCP, o TELNET codifica-as usando uma
seqüência de escape. - Uma seqüência de escape utiliza um octeto
reservado para indicar que um octeto de código de
controle vem em seguida. - No TELNET, o octeto reservado que inicia de
escape é conhecido como octeto IAC (interpret as
command).
16Emulador de terminal TELNET
Comandos possíveis e a codificação decimal.
17Emulador de terminal TELNET
Comandos possíveis e a codificação decimal.
18Emulador de terminal TELNET
Comandos possíveis e a codificação decimal.
Concordância em executar a opção especificada
Interprete como Comando
19Emulador de terminal TELNET
Comando go-ahead
O sinal vá em frente
20Emulador de terminal TELNET
Resposta Comando go-ahead
O sinal vá em frente
21Emulador de terminal TELNET
Forçar o servidor a ler uma função de controle
- Enviar funções de controle juntamente com dados
normais nem sempre é suficiente para assegurar os
resultados desejados.
- Exemplo de função de controle da interrupção
de processo para o servidor.
- O servidor deve parar de ler os dados da
conexão TCP, fazendo com que os buffers fiquem
carregados.
- Oportunamente, o TCP da máquina do servidor
começa a indicar uma janela de tamanho zero,
impedindo que os dados fluam pela conexão
22Emulador de terminal TELNET
- Se o usuário gerar uma função de controle de
interrupção quando os buffers estiverem cheios, a
função de controle jamais chegará ao servidor.
Isso indica que o cliente poderá formar a
seqüência de comando IAC IP e envia-lo à conexão
TCP, mas como o TCP parou de transmitir à máquina
do servidor, o servidor não lerá a seqüência de
controle.
23Emulador de terminal TELNET
Buffer Cheio
Zera a Janela
Programa Travado
Conexão Normal
Conexão Normal
Servidor Libera Buffer
IAC IP URGENTE
Servidor Aceita URG
24Emulador de terminal TELNET
- O TELNET não pode depender somente do stream de
dados convencional para transmitir as seqüências
de controle entre o cliente e o servidor, já que
um aplicativo que esteja operando erroneamente e
que precise ser controlado poderá
inadvertidamente bloquear o stream de dados.
25Emulador de terminal TELNET
Opções TELNET
26Emulador de terminal TELNET
- Qualquer extremidade pode faça uma solicitação.
(protocolo simétrico)
Inicia o serviço com a opção
Will X ?
DO X ou DONT X
WILL X e WONT X
27Emulador de terminal TELNET
Negociação
Negociação
28Emulador de terminal TELNET
Negociação
29Emulador de terminal TELNET
Negociação
Início de subnegociação de opções
30Emulador de terminal TELNET
Negociação
FIM de subnegociação de opções
31TÁ LOCO............
? ? ?
32Segurança Secure Shell
Descrição
O Secure Shell é um programa para ligar
equipamentos que estão em máquinas diferentes
permitindo executar comandos remotamente.
O SSH ( Secure Shell ) é muito parecido com o
telnet mas possui suporte a criptografia de dados
tornando a técnica de sniffer ineficiente,
evitando que logins, senhas, cartões de créditos
e outros dados sejam grampeados.
33Segurança Secure Shell
TELNET
34Segurança Secure Shell
SSH
35Segurança Secure Shell
Software SSH é Free implementado para
suportar os protocolos SSH1 e SSH2.
As implementações de SSH usam como padrão a porta
22/tcp do TCP/IP.
Possuem suporte para kerberos, autenticação TIS e
sockts.
Instalação e configuração são muito simples,
grande suporte técnico em listas de
discussão, estabilidade, escalabilidade,
segurança quando bem configurado, suportado
por diversos sistemas operacionais.
36Segurança Secure Shell
O SSH (www.ssh.fi) é escrito em C ANSI
(www.ssh.fi)
openssh (www.openssh.com) possui suporte ao ssh1
e ssh2.
SSH2 possui maior flexibilidade, melhor
escalabilidade e uma maior segurança. O
SSH2 atualmente é menos usado que o SSH1, como
ambos são incompatíveis as instituições/empresas
que precisam se comunicar com outras tem
que utilizar o SSH1.
37Segurança Secure Shell
Suporte a vários algoritmos criptográficos
- BlowFish Chave de 64 bits Utilizado em
redes de alta velocidade e de alto volume
- DES Padrão do governo EUA
- RSA Sistema criptográfico de chave publica /
chave privada
38Segurança Secure Shell
COMO FUNCIONA O SECURE SHELL
O Ssh usa um esquema de autenticação de servidor
por RSA. O esquema está baseado em criptografia
de chaves públicas e privadas, no qual a
encriptação e desencriptação usam chaves
separadas, não sendo possível através da chave de
encriptação saber a de desencriptação. RSA é um
sistema onde cada usuário cria um par de chaves
pública/privada para propósitos de autenticação.
O servidor sabe a chave pública, e só o usuário
sabe a sua chave privada.
39Segurança Secure Shell
COMO FUNCIONA O SECURE SHELL
Possui um arquivo que contém a lista de chaves
dos clientes.
Quando o usuário invoca o cliente de Ssh para
iniciar uma sessão , o servidor confere a chave,
para saber se é permitida, enviando a resposta.
A comunicação entre o cliente de Ssh e o servidor
é codificada, de forma a que a chave de sessão
nunca é transmitida em rede sem estar encriptada.
40Servidor
Cliente
Cria chave RSA de Servidor Temporária
Cria chave pública e privada
Envia a chave pública ao servidor e pede ligação
Inicia servidor dedicado
Envia a chave pública do cliente e a chave
pública do servidor
Compara sua chave pública com a recebida
Gera número aleatório e encripta com sua chave
privada e com a pública do Server e abre sessão
Envia a chave de sessão
Decripta a chave de sessão com sua chave privada
e pública do Cliente. Abre a comunicação com a
chave de sessão
Espera confirmação para iniciar os comandos
41Segurança Secure Shell
Programas inclusos no SSH
- Make-ssh-know-hosts Programa que localiza
hosts em um determinado domínio
- SCP Secure Shell Copy forma segura de
copiar arquivos
- ssh Client Secure Shell Emulador de terminal
- ssh-add Adiciona identidade ao agente de
autenticação
- ssh-agent Autenticação RSA
- sshd Servidor Secure Shell Porta 22
- ssh-keygen Gerador de chave do ssh
42Segurança Secure Shell - SSHD
Sshd é um programa para iniciar o servidor que
por sua vez, espera por ligações de clientes.
Cada cliente instanciado cria um novo deamon,
gerando uma chave para encriptar, autenticar,
executar comandos e trocar dados.
Cada Host tem uma chave RSA usada para sua
identificação. Quando o deamon inicia gera uma
chave RSA do tipo servidor.
Esta chave é alterada de hora em hora enquanto
estiver sendo usada e nunca é guardada em disco.
43Segurança Secure Shell - SSHD
Quando um cliente pede ligação ao deamon, este
envia a sua chave pública de Host e a chave
pública de servidor para o cliente.
O cliente compara a chave de Host com a da sua
base de dados, verificando assim que não houve
alteração.
O cliente gera 256 bits aleatórios criando um
número. Este número é encriptado com as duas
chaves (host e servidor), enviando o número
encriptado para o servidor.
Ambos usam este número aleatório como chave de
sessão que é usada para encriptar todas as
comunicações.
44Segurança Secure Shell - SSHD
Ao iniciar o dialogo de autenticação, o cliente
usa sua password, combinada com autenticação RSA
Host ou RSA Challenge-response ou TIS channenge
response.
Finalmente, o cliente pede um acesso ou execução
de um comando.
Ambos os lados entram então na modalidade de
sessão. (DADOS)
Quando o programa termina e todas as conexões
forem fechadas, o servidor emite um comando de
saída ao cliente, e ambos os lados são
desligados.
Sshd pode ser configurado na linha de comando
usando um arquivo de configuração.
45Segurança Secure Shell - SSH
Ssh (Secure Shell) é um programa para se ligar a
uma máquina remota e executar comandos a partir
dessa mesma máquina remota.
Remote Login Protoclo de login remoto
desenvolvido para oUNIX pela Berkeley. O Rlogin
oferece o mesmo serviço que o TELNET
Isso é conseguido ao estabelecer um rlogin, que
providencia uma comunicação segura (encriptada).
Por cada cliente instanciado cria-se um novo
deamon, tendo este capacidade para gerar chaves,
encriptar, autenticar, executar comandos e troca
de dados.
46Segurança Secure Shell - SSH
Cada Host tem uma chave RSA usados para sua
identificação.
Quando o deamon se inicia gera uma chave RSA do
tipo servidor.
Esta chave é alterada a cada conexão e nunca é
guardada em disco.
Quando um cliente pede ligação ao deamon, este
envia a sua chave pública de Host e a de servidor
para o cliente.
O cliente compara a chave do Host com a da base
de dados e gera 256 bits aleatórios criando um
número.
Ambos usam este número aleatório como chave de
sessão que é usada para encriptar todas as
comunicações.
47Segurança Secure Shell - SSH
Neste ponto é iniciado o dialogo de
autenticação..
O cliente autentica-se com sua password,
combinada com autenticação RSA Host, RSA
Challenge-response.
Se o cliente for autenticado com sucesso, inicia
um diálogo para preparar a sessão.
Neste ponto o cliente pode pedir o alocamento de
um pseudo-tty, conexões tipo forwarding X11,
TCP/IP, ou ligações pelo agente de autenticação,
sobre um canal seguro
48Segurança Secure Shell - SSH
Finalmente, o cliente pede um acesso ou execução
de um comando.
Ambos os lados entram então na modalidade de
sessão.
Quando o programa termina e todas as conexões
estiveram fechadas, o servidor emite um comando
de saída ao cliente, e ambos os lados são
desligados.
49Segurança Secure Shell - keygen
Ssh-keygen gera e organiza as chaves de
identificação para o ssh(cliente).
Cada usuário que deseja utilizar o ssh com chave
RSA de autenticação, utiliza este programa para
criar a chave que será guardada em arquivo.
Normalmente este programa pergunta qual o arquivo
para guardar a chave privada. A chave pública é
guardada no arquivo com o mesmo nome da chave
privada, mas com a extensão ".pub".
Os nomes de arquivos alternativos podem ser dados
na linha de comando. O campo da palavra chave
(passphrase) pode estar vazio. Um bom tamanho
para a palavra chave é de 10-30 caracteres. A
palavra chave pode ser mudada posteriormente,
usando a opção de -p .
50Segurança Secure Shell keygen
Não há nenhum modo para recuperar uma palavra
chave perdida. Se a palavra chave for esquecida,
será necessário gerar uma chave nova e copiar a
correspondente chave pública para a outra
máquina.
A cifra a ser usada quando codificamos chaves com
uma palavra chave está definida no ssh.h. Usando
a opção u, as chaves encriptadas com qualquer
algoritmo de cifra podem-se alterar para usar a
cifra por defeito.
51Segurança Secure Shell agent
Ssh-agente é um programa que guarda as chaves
privadas de autenticação.
É necessário iniciar o ssh-agente no inicio de
uma sessão de login, e todos os outros programas
são criados como filhos.
Programas iniciados debaixo do agente, herdam uma
ligação para o agente, e o agente é
automaticamente usado para autenticação de RSA,
quando se inicia a ligação para outras máquinas
usando o Ssh.
52Segurança Secure Shell agent
O agente não tem nenhuma chave privada
inicialmente.
Chaves são adicionadas com o ssh-add. Quando
executado sem argumentos, ssh-add adiciona em um
arquivo de identificação.
Várias identidades podem ser armazenado no agente.
A idéia é que o agente rode no PC local ou no
terminal. Assim os dados de autenticação não
precisam ser armazenados em qualquer outra
máquina. Podendo se ligar a qualquer host de um
modo seguro.
53Segurança Secure Shell ssh-add
Ssh-adds adiciona identidades para o agente de
autenticação, ssh-agent.
O agente de autenticação tem que estar rodando,
quando for necessário adicionar identidades para
o agente de autenticação.
54Segurança Secure Shell ssh-scp
Scp serve para copiar arquivos entre dois host
sobre um rede.
Utiliza o ssh para transferir os dados , e usa o
mesmo sistema de autenticação. Provê a mesma
segurança que o Ssh.
Se for necessário o Scp pede passwords para
autenticação.
55Server SSH - Windows
56Server SSH - Windows
57(No Transcript)
58(No Transcript)
59(No Transcript)
60(No Transcript)
61Comando SSH Windows
Utiliza os mesmo comando do Prompt do Windows.
Exemplo
62Server SSH Linux - OpenSSH
Implementação - OPENSSH O pacote OpenSSH é uma
implementação livre do pacote SSH original que
possui restrições à sua utilização comercial.
O OpenSSH é compatível com a versão 1 do
protocolo SSH (com suas duas variantes, a 1.3 e
1.5) e com a versão 2.
- Pré-requisitos
- Para uma implementação bem-sucedida do servidor
SSH é necessário que - sua rede esteja corretamente configurada
63Server SSH Linux - OpenSSH
- . Instalação
- Selecione para instalação com o synaptic os
pacotes - openssh-server
- linuxconf-opensshd
- openssh-client
- ou abra um terminal e utilize os comandos abaixo
apt-get install openssh-server apt-get
install linuxconf-opensshd apt-get install
openssh-client
Os procedimentos descritos acima instalarão o
servidor e o cliente SSH. Para instalar apenas o
cliente basta selecionar somente o pacote
openssh-cliente para instalação.
64Server SSH Linux OpenSSH
Chaves de autenticação do servidor. O pacote de
instalação do Openssh ao ser instalado gera
automaticamente essas chaves e as coloca nos
locais corretos, logo não há necessidade de se
alterar.
Configuração -gt Rede -gt Tarefas de servidor -gt
Servidor SSH (openssh) do Linuxconf
Define quais endereços de rede do servidor
deverão ser utilizados para receber conexões SSH
O campo Porta contém o número da porta que o
servidor SSH utilizará
Configuração do servidor SSH
O valor padrão especifica que deverão ser
utilizadas as versões 2 e 1
Controle de acesso de usuário
65Server SSH Linux SSH-1.2.27
Baixar em www.ssh.fi
Descompactar os arquivos .c, .h e configure
./configure ? Verificação dos arquivos
necessário para configuração e compilação do ssh
make ? criação do ssh
Ao término do make, teremos os seguintes arquivos
scp, ssh, ssh-add, ssh-agent, sshd,
ssh-keygen
Complete a instalação com make install (
/usr/local/ )
66Server SSH Linux SSH-1.2.27
Verificar a opções dos arquivos de configuração
do ssh /etc/sshd_config (arquivo de
configuração do servidor) Estas alterações são
permanentes.
Geralmente será necessário que as alterações
sejam feitas somente na inicialização do ssh.
(sshd_config) -b (quantos bits é a chave do
servidor) -g (tempo limite para
autenticação) -i (para inicializar a partir do
inetd) -p (especifica a porta pode ser
utilizado uma porta alternativa -k (tempo para
regeneração de chaves)
Iniciando o servidor sshd
67Server SSH Linux Utilização
A configuração padrão do servidor SSH é bastante
completa e segura veremos a seguir apenas as
opções mais importantes. O campo Porta contém o
número da porta que o servidor SSH utilizará, a
alteração do valor padrão exigirá alterações
também no cliente SSH, portanto sugerimos que
seja mantido esse valor. O campo Escuta endereço
define quais endereços de rede do servidor
deverão ser utilizados para receber conexões SSH.
O valor padrão define que todos os endereços
serão utilizados. A versão do protocolo a ser
utilizada é definida no campo Protocolo o valor
padrão especifica que deverão ser utilizadas as
versões 2 e 1 (nesta ordem de preferência). Veremo
s a seguir as principais opções de cada guia
apresentadas na Figura 6-1
Utiliza os mesmo comando de terminal do Linux
Finalize a configuração do servidor SSH ativando
a inicialização automática do serviço sshd
acessando a opção Controle-gtPainel de
controle-gtControle de atividade dos serviços do
Linuxconf.