Pular para o conteúdo principal

Muitos locais exigem que você pare de se conectar ao sistema com Telnet, e use SSH em seu lugar. A lógica é uma maior segurança. Quando você faz o login usando Telnet, sua senha, assim como quaisquer outros dados, é enviada em texto claro. Qualquer pessoa com um analisador de rede pode ler o que você enviou. O SSH, por outro lado, codifica todos os dados, tornando-os ilegíveis. A suposição é que o Telnet e os daemons SSH apresentam uma experiência de usuário intercambiável; isto é incorreto.

Primeiro, há muitos clientes SSH e Telnet diferentes. Estes têm diferentes interfaces de usuário e podem utilizar diferentes tipos de terminais. Mesmo quando usam o mesmo tipo de terminal, eles podem se comportar de maneira diferente, pois estão emulando um terminal e as emulações não são perfeitas. Mas, mesmo descontando as diferenças no software do cliente, há várias diferenças sutis e não tão sutis entre uma sessão conectada a um daemon Telnet (telnetd ou telnet_msd) e uma conectada ao daemon SSH. Há também uma série de bugs, que eu vou cobrir. Tenha em mente que estou usando o daemon SSH do Internet Security Pack (ISP) para a versão 2.1.0k do OpenVOS. Esta é a última versão disponível na época em que escrevi isto.

Nomes de usuário:

Antes mesmo de entrar no sistema, há uma diferença na maneira como Telnet e SSH lidam com seu nome de usuário. Os daemons Telnet permitirão que você faça login com qualquer variação única de seu nome de usuário e o nome é insensível a maiúsculas e minúsculas. Dado o nome de usuário Noah_Davids, eu posso fazer login como Noah_D, noah_d, NoAh_D ou NoAh_DaViDs ao usar o Telnet, mas a única coisa que funcionará com o SSH é Noah_Davids. Meu pseudônimo de nd funciona da mesma maneira. Com Telnet eu posso usar nd, ND, ou nD, mas com SSH somente nd funcionará.

Nomes de grupos:

A solicitação de login apresentada com uma conexão Telnet me permite especificar um nome do grupo

telnet 164.152.77.217
Tentando...
Conectado a 164.152.77.217.
O caráter de fuga é "^]".

OpenVOS Release 17.1.0ax, Módulo %phx_vos#m17
Por favor, faça o login 15:24:14
login nd.SysAdmin
Senha? [senha digitada aqui].

Noah_Davids.SysAdmin logado em %phx_vos#m17 às 12-12-12 15:24:55 mst.
Figura 1 - Login Telnet com nome do grupo

Mas o protocolo SSH permite apenas um nome de usuário. Se eu incluir o nome do grupo, ele é tratado como parte do nome do usuário e o login falha.

>system>openssl>bin>ssh nd.SysAdmin@164.152.77.217

nd.SysAdmin@164.152.77.217's password: [senha digitada aqui]

Permissão negada, por favor, tente novamente.
nd.SysAdmin@164.152.77.217's password:
Figura 2 - Login SSH com nome do grupo

Uma vez conectado, você pode mudar seu grupo com um sub-login (mas veja a seção sobre ssl-403 abaixo para as limitações atuais)

Diferenças de senha:

A maior diferença no manuseio de senhas entre as conexões Telnet e SSH é que o SSH não requer senhas para autenticação. Você pode configurar um par de chaves públicas/privadas e pular toda a etapa de entrada da senha. Dê uma olhada em Configurando o Stratus STCP SSH para usar autenticação de chave pública para uma descrição de como configurar isso.

Se você estiver usando senhas, há algumas diferenças com as quais você tem que lidar. Primeiro, a expiração da senha é tratada de forma diferente. Com a Telnet, o prompt de login o avisa quando sua senha está prestes a expirar e permite que você a altere.

telnet 164.152.77.217
Tentando...
Conectado a 164.152.77.217.
O caráter de fuga é "^]".

OpenVOS Release 17.1.0ax, Módulo %phx_vos#m17
Favor fazer o login 14:04:40
login e
Senha? [senha atual digitada aqui].

Sua senha expirará em 5 dias.
Nova senha (primeira entrada)?
Figura 3 - Aviso de expiração/pedido de senha de conexão Telnet

O SSH o advertirá, mas você não tem opção de mudá-lo. Você deve usar o comando change_password para invalidar sua senha, o que o forçará a mudar sua senha na próxima vez que você fizer o login.

ssh nd@164.152.77.217
nd@164.152.77.217's password: [senha atual digitada aqui]

Sua senha expirará em 5 dias.
Noah_Davids.CAC fez login em %phx_vos#m17 em 13-01-09 13:06:35 mdt.

Bem-vindo.

pronto 13:06:35
mudar_senha
Sua senha não é mais válida. Você deve mudá-la na próxima vez em que fizer o login.
pronto 13:06:49
Figura 4 - Aviso de expiração da senha de conexão SSH
e comando change_password

Uma vez que sua senha expirar (ou você a invalidou com o comando change_password), você será solicitado a mudá-la. Ao contrário da Telnet, isto não é opcional, você deve mudar sua senha neste momento. Após alterar sua senha, você será automaticamente desconectado e deverá voltar a entrar novamente.

ssh nd@164.152.77.217
A senha do nd@164.152.77.217:

AVISO: Sua senha expirou.
Você deve mudar sua senha agora e fazer o login novamente!
Senha atual? [senha atual digitada aqui].

Nova senha (primeira entrada)? [nova senha inserida aqui]?

Nova senha (segunda entrada)? [nova senha inserida aqui]?

Conexão a 164.152.77.217 fechada.
Figura 5 - Alterando sua senha durante a conexão SSH

Outra diferença é que as conexões SSH não suportam senhas de desafio-resposta enquanto as conexões Telnet suportam.

Subsistemas:

Quando você se conecta pela primeira vez a um módulo com Telnet, o comando de login permite que você selecione um subsistema

OpenVOS Release 17.1.0ax, Módulo %phx_vos#m17
Favor fazer o login 11:23:40
login - forma - utilização
 --------------------------------- login -------------------------------
 nome_do_usuário:
 -privilegiado: como registrado
 -senha:
 -mudar_senha: não
 -prioridade:
 -home_dir:
 -módulo:
 -subsistema:
Figura 6 - A conexão Telnet permite especificar um nome de subsistema

O protocolo ssh não tem nenhum mecanismo para especificar um nome de subsistema. Se a bandeira must_use_subsystem for definida em sua entrada no banco de dados de registro, então o primeiro subsistema especificado em sua entrada de registro será automaticamente usado. Se o bit não estiver definido, então nenhum subsistema é usado. (Note que antes da liberação ISP 2.1.0j o primeiro subsistema seria usado mesmo que o bit must_use_subsystem não estivesse definido). Embora os argumentos para o comando de login disponíveis antes do login de fato incluam uma forma de especificar o subsistema (ver figura 6) uma vez que você esteja logado, essa opção não está mais disponível (ver figura 7).

login -forma -utilização
 --------------------------------- login -------------------------------
 group_name: CAC
 -privilegiado: sim
 -prioridade:
 -senha:
 -módulo:
Figura 7 - Argumentos da linha de comando de sub-login

A única maneira de entrar em um subsistema, uma vez que você esteja logado, é fazer o login no Telnet de volta ao sistema e entrar novamente.

telnet 127.0.0.0.1
Tentando...
Conectado ao 127.0.0.1.
O caráter de fuga é '^]'.

OpenVOS Release 17.1.0ax, Módulo %phx_vos#m17
Favor fazer o login 11:37:34
login nd -subsystem test_ss
Senha?        

Noah_Davids.CAC fez login em %phx_vos#m17 em 12-12-13 11:37:49 mst.
este é o subsistema de teste

pronto 11:37:49
Figura 8 - Telnet para fazer loopback de endereço e login novamente para chegar a um subsistema

 

Controle de acesso:

Tanto as conexões Telnet como SSH suportam TCP Wrappers para permitir restringir o acesso com base no endereço IP, mas com os daemons Telnet o padrão é que o TCP Wrappers não está habilitado e você deve habilitá-lo explicitamente com o argumento de controle -tcpwrapper_check. Enquanto com o daemon SSH o TCP Wrappers está habilitado por padrão e não há como desabilitá-lo. Você pode desativá-lo efetivamente permitindo todas as conexões SSH nos hosts TCP Wrappers.permitir arquivo de configuração.

telnetd - forma - utilização
 ------------------------------- telnetd ------------------------------
 -service_file:     >system>stcp>telnetservice
 -tcpwrapper_check: não
 -numérico: sim
Figura 9 - Habilitação de TCP Wrappers no daemon telnetd

 

telnet_msd -form -usage
 ------------------------------ telnet_msd ----------------------------
 -network_port:     24
 -max_sessions:     28
 -error_severity: 2
 -separate_log: sim
 -log_dir:          >system>stcp>logs
 -vterm_starname: telnet*
 -vterm_login: sim
 -vterm_slave_id:
 -extensão: 133
 -force_edit: sim
 -Valor_decimal_EC: 8
 -EL_valor_decimal: 21
 -tcpwrapper_check: não
 -numérico: não
Figura 10 - Habilitação de TCP Wrappers no daemon telnet_msd

O daemon sshd também suporta opções no arquivo sshd_config para permitir que você especifique usuários ou grupos que devem ter acesso permitido usando ssh (as diretrizes AllowUsers e AllowGroups) ou acesso negado usando ssh (as diretrizes DenyUsers e DenyGroups). Estas diretrizes permitem que você especifique nomes de usuários, ou domínios ou combinações de origem. É possível permitir noah_davids de corp.stratus.com, mas negá-lo de az.stratus.com.

AllowUsers *@*.stratus.com
DenyUsers *@*az.stratus.com
Figura 11 - Exemplo de diretrizes AllowUsers e DenyUsers no sshd_config
>system>openssl>bin>ssh nd@164.152.77.217
A senha do nd@164.152.77.217:

Permissão negada, por favor, tente novamente.
Senha do nd@164.152.77.217:
Figura 12 - Login de phxtest-m15.az.stratus.com negado por causa da diretiva DenyUsers

 

Ambiente de comando:

Uma vez logado em uma conexão Telnet, o ambiente de comando VOS padrão é apresentado. O SSH permite que um administrador especifique o ambiente de comando padrão ou o ambiente bash shell. Isto é feito com base nos números das portas.

d sshservices

%phx_vos#m17_mas>opt>openssl>etc>sshservices 12-12-13 12:31:31 mst

ssh "window_term" "" "login" 1 1 s$pt_log.m16
ssh2200   "window_term" "-shell"   "bash" 1 1 s$pt_log.m16
Figura 13 - arquivo sshservices, porta 22 é a linha de comando padrão do VOS,
o porto 2200 é a concha bash
>system>openssl>bin>ssh nd@164.152.77.217 -p 2200
A senha do nd@164.152.77.217:

Bem-vindo.

sh-2,05$
Figura 14 - Conexão SSH usando a porta 2200 e obtendo uma concha bash

 

Variáveis ambientais:

Por padrão, as conexões Telnet só definem 6 variáveis de ambiente enquanto as conexões SSH definem 12

env
HOME=/SysAdmin/Noah_Davids
LOGNAME=raiz
PATH=.../system/command_library:/system/applications_library:/system/maint_librar
+y:/system/nio/command_library:/system/tools_library:/opt/apache/bin:/opt/libxml
+2/bin:/opt/php/bin:/opt/openssl/bin:/opt/mysql/bin:/system/stcp/command_library
+:/system.17.1/gnu_library/bin
VOS_INCLUDE_PATH=.:/opt/apache/include:/opt/openssl/include:/opt/mysql/include/m
+ysql:/system/stcp/include_library/compat:/system/include_library
VOS_OBJECT_PATH=.:/opt/apache/lib:/opt/openssl/lib:/opt/mysql/lib/mysql:/system/
+stcp/object_library/complib:/system/posix_object_library/pthread:/system/posix_
+object_library:/system/c_object_library:/system/object_library
TERM=vt100
Figura 15 - Variáveis ambientais definidas em uma conexão Telnet

 

env
HOME=/SysAdmin/Noah_Davids
PATH=.../system/command_library:/system/applications_library:/system/maint_librar
+y:/system/nio/command_library:/system/tools_library:/opt/apache/bin:/opt/libxml
+2/bin:/opt/php/bin:/opt/openssl/bin:/opt/mysql/bin:/system/stcp/command_library
+:/system.17.1/gnu_library/bin
VOS_INCLUDE_PATH=.:/opt/apache/include:/opt/openssl/include:/opt/mysql/include/m
+ysql:/system/stcp/include_library/compat:/system/include_library
VOS_OBJECT_PATH=.:/opt/apache/lib:/opt/openssl/lib:/opt/mysql/lib/mysql:/system/
+stcp/object_library/complib:/system/posix_object_library/pthread:/system/posix_
+object_library:/system/c_object_library:/system/object_library
TERM=vt100
TZ=mst+07:00:00
USER=Noah_Davids
LOGNAME=Noah_Davids
MAIL=/var/spool/mail/Noah_Davids
SHELL=/bin/sh
SSH_CONNECTION=164.152.77.34 49573 164.152.77.217 22
SSH_TTY=#s$pt_log.m16_3
Figura 16 - Variáveis ambientais definidas em uma conexão SSH

 

Tipos de dispositivos:

Finalmente, esta não é realmente uma diferença entre Telnet e SSH, mas entre os daemons telnetd e sshd e o daemon telnet_msd. Tanto o telnetd quanto o sshd usam dispositivos window_term enquanto o telnet_msd usa dispositivos vterm. Há algumas diferenças entre a maneira como os dispositivos vterms e window_term lidam com algumas das teclas de função (como CANCELAR) na linha de comando e com a maneira como eles lidam com a saída de tela bruta. Alguns aplicativos que criam seus próprios formulários e não foram atualizados para usar o novo s$control OP_CODES não apresentam esses formulários corretamente usando dispositivos window_term. A segunda melhor maneira de lidar com estas aplicações é usar um túnel SSH para se conectar ao sistema, o túnel é então configurado para se conectar ao daemon telnet_msd. A melhor maneira de lidar com a aplicação é, naturalmente, atualizá-la para usar o novo OP_CODES.

 

Além das diferenças acima que são inerentes ao Telnet e ao SSH, há alguns bugs que serão corrigidos em um lançamento futuro.

ssl-403 Grupos disponíveis:

Ao conectar-se com a Telnet, todos os grupos especificados em seu registro estão disponíveis para sublogins, mas com ssh somente os 5 primeiros grupos estão disponíveis.

Dado que estou registrado com grupos, CAC, SysAdmin, Group_3, Group_4, Group_5, Group_6. Eu posso fazer um sub-login usando qualquer grupo a partir de uma conexão Telnet

telnet 164.152.77.217
Tentando...
Conectado a 164.152.77.217.
O caráter de fuga é "^]".

OpenVOS Release 17.1.0ax, Módulo %phx_vos#m17
Favor fazer o login 15:38:02
login e
Senha? [senha atual digitada aqui].

Noah_Davids.CAC fez login em %phx_vos#m17 às 12-12-12 15:38:08 mst.

login Grupo_5

Noah_Davids.Group_5 fez login em %phx_vos#m17 às 12-12-12 15:39:39 mst.
pronto 15:39:39
logout

login Grupo_6

Noah_Davids.Group_6 logado em %phx_vos#m17 às 12-12-12 15:40:13 mst.
pronto 15:40:13
Figura 17 - sub-logins com conexão Telnet

Entretanto, com ssh, quando tento usar o Group_6, recebo um erro.

>system>openssl>bin>ssh nd@164.152.77.217
A senha do nd@164.152.77.217:

Noah_Davids.CAC fez login em %phx_vos#m17 às 12-12-12 15:41:02 mst.
pronto 15:41:02

login Grupo_5

Noah_Davids.Group_5 fez login em %phx_vos#m17 às 12-12-12 15:41:24 mst.
pronto 15:41:24
logout

login Grupo_6
login: Formato inválido em argumento. Grupo_6 não permitido para nome_de_grupo.
pronto 15:41:59
Figura 18 - sub-logins com conexão SSH

 

ssl-418 - O sub_processo_nível:

Os logins via Telnet têm um nível de sub_processo 0 enquanto os via SSH têm um nível de sub_processo 3.

telnet 164.152.77.217
Tentando...
Conectado a 164.152.77.217.
O caráter de fuga é "^]".

OpenVOS Release 17.1.0ax, Módulo %phx_vos#m17
Favor fazer o login 14:15:34
login e
Senha? [senha atual digitada aqui].

Noah_Davids.CAC fez login em %phx_vos#m17 em 12-12-13 14:15:39 mst.
pronto 14:15:39
display_line (process_info sub_process_level)
0 
pronto 14:15:49
Figura 19 - Nível de sub_processo definido em uma conexão Telnet

 

>system>openssl>bin>ssh nd@164.152.77.217
nd@164.152.77.217's password: [senha atual digitada aqui]

Noah_Davids.CAC fez login em %phx_vos#m17 em 12-12-13 14:12:23 mst.
pronto 14:12:23
display_line (process_info sub_process_level)
3 
pronto 14:12:37
Figura 20 - Nível de sub_processo definido em uma conexão SSH

Atualização em 14 de janeiro de 2013: Isto acaba sendo uma característica e não um bug. O processo sshd é bifurcado primeiro quando o start_process é feito para iniciar o processo de escuta, segundo quando o sshd aceita a conexão e uma terceira vez quando o processo de login do usuário é criado. Telnet usa um mecanismo diferente para iniciar o processo de usuário que não resulta em nenhum processo bifurcado.

Questões de fuso horário:

Finalmente, quero apenas dizer que houve uma série de questões relacionadas à mudança entre a economia diurna e o horário padrão, ou, mais geralmente, apenas a mudança de fusos horários. As sessões registradas via SSH não refletiriam as novas inadimplências. Todas estas questões devem ser corrigidas neste último lançamento (2.1.0k).

© 2020 Stratus Technologies.