Ir al contenido principal

Muchos lugares están ordenando que dejes de conectarte al sistema con Telnet, y que uses SSH en su lugar. La razón es una mayor seguridad. Cuando te conectas usando Telnet tu contraseña, así como cualquier otro dato, se envía en texto claro. Cualquiera con un analizador de red puede leer lo que has enviado. SSH, por otro lado, encripta todos los datos haciéndolos ilegibles. La suposición es que los demonios Telnet y SSH presentan una experiencia de usuario intercambiable; esto es incorrecto.

Primero, hay muchos clientes diferentes de SSH y Telnet. Estos tienen diferentes interfaces de usuario y pueden usar diferentes tipos de terminales. Incluso cuando usan el mismo tipo de terminal, pueden comportarse de manera diferente ya que están emulando un terminal y las emulaciones no son perfectas. Pero, incluso descontando las diferencias en el software del cliente, hay varias diferencias sutiles y no tan sutiles entre una sesión conectada a un demonio Telnet (ya sea telnetd o telnet_msd) y una conectada al demonio SSH. También hay una serie de errores, que voy a cubrir. Tengan en cuenta que estoy usando el demonio SSH de Internet Security Pack (ISP) para la versión 2.1.0k de OpenVOS. Esta es la última versión disponible en el momento en que escribí esto.

Nombres de usuario:

Antes de que te conectes, hay una diferencia en la forma en que Telnet y SSH manejan tu nombre de usuario. Los demonios de Telnet te permitirán iniciar sesión con cualquier variación única de tu nombre de usuario y el nombre no distingue entre mayúsculas y minúsculas. Dado el nombre de usuario Noah_Davids, puedo iniciar sesión como Noah_D, noah_d, NoAh_D o NoAh_DaViDs al usar Telnet, pero lo único que funcionará con SSH es Noah_Davids. Mi alias de nd funciona de la misma manera. Con Telnet puedo usar nd, ND, o nD pero con SSH sólo nd funcionará.

Nombres de grupos:

El mensaje de inicio de sesión presentado con una conexión Telnet me permite especificar un nombre del grupo

telnet 164.152.77.217
Intentando...
Conectado al 164.152.77.217.
El carácter de escape es '^]'.

OpenVOS Release 17.1.0ax, Module %phx_vos#m17
Por favor, inicie sesión 15:24:14
login nd.SysAdmin
¿Contraseña? [contraseña introducida aquí]

Noah David.SysAdmin conectado en %phx_vos#m17 en 12-12-12 15:24:55 mst.
Figura 1 - Inicio de sesión en Telnet con el nombre del grupo

Pero el protocolo SSH sólo permite un nombre de usuario. Si incluyo el nombre del grupo, se trata como parte del nombre de usuario y el inicio de sesión falla.

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

y...SysAdminContraseña de @164.152.77.217: [contraseña introducida aquí]

Permiso denegado, por favor, inténtelo de nuevo.
nd.SysAdmin@164.152.77.217's password:
Figura 2 - Inicio de sesión de SSH con nombre de grupo

Una vez que se haya conectado, puede cambiar su grupo con un subgrupo (pero vea la sección sobre ssl-403 más abajo para conocer las limitaciones actuales)

Diferencias de contraseñas:

La mayor diferencia en el manejo de contraseñas entre las conexiones Telnet y SSH es que SSH no requiere contraseñas para la autenticación. Puedes configurar un par de claves públicas/privadas y saltarte todo el paso de introducción de la contraseña. Echa un vistazo a la configuración de Stratus STCP SSH para usar la autenticación de clave pública para una descripción de cómo configurarla.

Si estás usando contraseñas hay algunas diferencias con las que tienes que lidiar. En primer lugar, la expiración de la contraseña se maneja de manera diferente. Con Telnet, el aviso de inicio de sesión te avisa cuando tu contraseña está a punto de expirar y te permite cambiarla.

telnet 164.152.77.217
Intentando...
Conectado al 164.152.77.217.
El carácter de escape es '^]'.

OpenVOS Release 17.1.0ax, Module %phx_vos#m17
Por favor, inicie sesión 14:04:40
login nd
¿Contraseña? [contraseña actual introducida aquí]

Su contraseña expirará en 5 días.
¿Nueva contraseña (primera entrada)?
Figura 3 - Advertencia/problema de caducidad de la contraseña de la conexión Telnet

La SSH te avisará pero no tienes opción de cambiarlo. Debes usar el comando change_password para invalidar tu contraseña, lo que te obligará a cambiarla la próxima vez que entres al sistema.

ssh nd@164.152.77.217
Contraseña de nd@164.152.77.217: [contraseña actual introducida aquí]

Su contraseña expirará en 5 días.
Noah_Davids.CAC se registró en %phx_vos#m17 en 13-01-09 13:06:35 mdt.

Bienvenido.

listo 13:06:35
cambiar_contraseña
Su contraseña ya no es válida. Debes cambiarla la próxima vez que entres en el sistema.
ready 13:06:49
Figura 4 - Advertencia de expiración de la contraseña de conexión SSH
y el comando change_password

Una vez que tu contraseña expire (o la hayas invalidado con el comando change_password) se te pedirá que la cambies. A diferencia de Telnet, esto no es opcional, debes cambiar tu contraseña en este momento. Después de cambiar su contraseña, se desconecta automáticamente y debe volver a conectarse.

ssh nd@164.152.77.217
La contraseña de nd@164.152.77.217:

ADVERTENCIA: Su contraseña ha caducado.
¡Debes cambiar tu contraseña ahora y volver a entrar!
¿Contraseña actual? [contraseña actual introducida aquí]

¿Nueva contraseña (primera entrada)? [nueva contraseña introducida aquí]

¿Nueva contraseña (segunda entrada)? [nueva contraseña introducida aquí]

Conexión al 164.152.77.217 cerrada.
Figura 5 - Cambiar la contraseña durante la conexión SSH

Otra diferencia es que las conexiones SSH no soportan contraseñas de desafío-respuesta mientras que las conexiones Telnet sí.

Subsistemas:

Cuando te conectas por primera vez a un módulo con Telnet el comando de inicio de sesión te permite seleccionar un subsistema

OpenVOS Release 17.1.0ax, Module %phx_vos#m17
Por favor, inicie sesión 11:23:40
login -formulario -uso
 --------------------------------- login -------------------------------
 nombre_de_usuario:
 -privilegiado: como registrado
 -contraseña:
 -cambiar_contraseña: no
 -...prioridad:
 -home_dir:
 -módulo:
 -subsistema:
Figura 6 - La conexión Telnet permite especificar un nombre de subsistema

El protocolo ssh no tiene ningún mecanismo para especificar un nombre de subsistema. Si se fija el indicador must_use_subsystem en su entrada de la base de datos de registro, entonces se utiliza automáticamente el primer subsistema especificado en su entrada de registro. Si el bit no está fijado entonces no se utiliza ningún subsistema. (Tenga en cuenta que antes de la versión ISP 2.1.0j el primer subsistema se utilizaría incluso si el bit must_use_subsystem no estuviera establecido). Mientras que los argumentos del comando login disponibles antes de iniciar la sesión incluyen una forma de especificar el subsistema (ver figura 6) una vez que se inicia la sesión, esa opción ya no está disponible (ver figura 7).

login -formulario -usuario
 --------------------------------- login -------------------------------
 nombre_de_grupo: CAC
 -privilegiado: sí
 -...prioridad:
 -Contraseña:
 -módulo:
Figura 7 - Argmentos de la línea de comando de subconexión

La única manera de entrar en un subsistema una vez que se ha iniciado la sesión es volver a Telnet al sistema e iniciar la sesión de nuevo.

telnet 127.0.0.1
Intentando...
Conectado a 127.0.0.1.
El carácter de escape es '^]'.

OpenVOS Release 17.1.0ax, Module %phx_vos#m17
Por favor, inicie sesión 11:37:34
login nd -subsistema test_ss
¿Contraseña?        

Noah_Davids.CAC se registró en %phx_vos#m17 a las 12-12-13 11:37:49 mst.
este es el subsistema de prueba

listo 11:37:49
Figura 8 - Telnet a la dirección de loopback e iniciar sesión de nuevo para llegar a un subsistema

 

Control de acceso:

Tanto las conexiones Telnet como las SSH soportan TCP Wrappers para permitirte restringir el acceso basado en la dirección IP pero con los demonios Telnet el valor por defecto es que TCP Wrappers no está habilitado y debes habilitarlo explícitamente con el argumento de control -tcpwrapper_check. Mientras que con el demonio SSH TCP Wrappers está habilitado por defecto y no hay forma de deshabilitarlo. Puedes deshabilitarlo efectivamente permitiendo todas las conexiones SSH en el archivo de configuración hosts.allow de TCP Wrappers.

telnetd - forma - uso
 ------------------------------- telnetd ------------------------------
 -fichero_de_servicio:     >sistema>stcp>telnetservice
 -tcpwrapper_check: no
 -numérico: sí
Figura 9 - Habilitando los TCP Wrappers en el demonio telnetd

 

telnet_msd -form -usage
 ------------------------------ telnet_msd ----------------------------
 -puerto_de_la_red:     24
 -máximas sesiones:     28
 -gravedad_del_error: 2
 -separate_log: sí
 -log_dir:          >sistema>stcp>logs
 -vterm_starname: telnet*
 -vterm_login: si
 -vterm_slave_id:
 -extensión: 133
 -force_edit: si
 -Valor_decimal_de_EC: 8
 -Valor_decimal_EL: 21
 -tcpwrapper_check: no
 -numérico: no
Figura 10 - Habilitando TCP Wrappers en el demonio telnet_msd

El demonio sshd también soporta opciones en el archivo sshd_config para permitirle especificar los usuarios o grupos a los que se les debe permitir el acceso usando ssh (las directivas AllowUsers y AllowGroups) o denegar el acceso usando ssh (las directivas DenyUsers y DenyGroups). Estas directivas permiten especificar nombres de usuario o dominios o combinaciones de origen. Es posible permitir noah_davids desde la corp.stratus.com pero negarlo desde la az.stratus.com.

AllowUsers *@*.stratus.com
DenyUsers *@*az.stratus.com
Figura 11 - Ejemplo de directivas AllowUsers y DenyUsers en sshd_config
>sistema>openssl>bin>ssh nd@164.152.77.217
La contraseña de nd@164.152.77.217:

Permiso denegado, por favor, inténtelo de nuevo.
Contraseña de nd@164.152.77.217:
Figura 12 - Inicio de sesión de phxtest-m15.az.stratus.com denegado por la directiva DenyUsers

 

Entorno de mando:

Una vez conectado, una conexión Telnet le presenta el entorno de comando estándar de VOS. SSH permite a un administrador especificar ya sea el entorno de comandos estándar o el entorno de la shell bash. Esto se hace basándose en los números de puerto.

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 - archivo sshservices, el puerto 22 es la línea de comando estándar de VOS,
el puerto 2200 es el bash shell
>sistema>openssl>bin>ssh nd@164.152.77.217 -p 2200
La contraseña de nd@164.152.77.217:

Bienvenido.

sh-2.05$
Figura 14 - Conexión SSH usando el puerto 2200 y obteniendo un bash shell

 

Variables del entorno:

Por defecto, las conexiones Telnet sólo establecen 6 variables de entorno mientras que las conexiones SSH establecen 12

env
 HOME =/SysAdmin/Noah_Davids
LOGNAME = raíz
PATH=.:/sistema/biblioteca_de_comandos:/sistema/biblioteca_de_aplicaciones:/sistema/biblioteca_de_mantenimiento
+y:/sistema/nio/comando_biblioteca:/sistema/biblioteca_de_herramientas:/opt/apache/bin:/opt/libxml
+2/bin:/opt/php/bin:/opt/openssl/bin:/opt/mysql/bin:/system/stcp/command_library
+:/sistema.17.1/gnu_library/bin
VOS_INCLUDE_PATH=.:/opt/apache/include:/opt/openssl/include:/opt/mysql/include/m
+ysql:/sistema/stcp/include_library/compat:/sistema/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
TERMINACIÓN=vt100
Figura 15 - Variables de entorno establecidas en una conexión Telnet

 

env
 HOME =/SysAdmin/Noah_Davids
PATH=.:/sistema/biblioteca_de_comandos:/sistema/biblioteca_de_aplicaciones:/sistema/biblioteca_de_mantenimiento
+y:/sistema/nio/comando_biblioteca:/sistema/biblioteca_de_herramientas:/opt/apache/bin:/opt/libxml
+2/bin:/opt/php/bin:/opt/openssl/bin:/opt/mysql/bin:/system/stcp/command_library
+:/sistema.17.1/gnu_library/bin
VOS_INCLUDE_PATH=.:/opt/apache/include:/opt/openssl/include:/opt/mysql/include/m
+ysql:/sistema/stcp/include_library/compat:/sistema/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
TERMINACIÓN=vt100
TZ=mst+07:00:00
USUARIO=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 - Variables de entorno establecidas en una conexión SSH

 

Tipos de dispositivos:

Finalmente, esto no es realmente una diferencia entre Telnet y SSH, sino entre los demonios telnetd y sshd y el demonio telnet_msd. Tanto telnetd como sshd usan dispositivos window_term mientras que telnet_msd usa dispositivos vterm. Hay algunas diferencias entre la forma en que los dispositivos vterms y window_term tratan algunas de las teclas de función (como CANCELAR) en la línea de comandos y con la forma en que manejan la salida de la pantalla en bruto. Algunas aplicaciones que crean sus propios formularios y no han sido actualizadas para usar el nuevo s$control OP_CODES no presentan esos formularios correctamente usando dispositivos window_term. La segunda mejor manera de manejar estas aplicaciones es usar un túnel SSH para conectarse al sistema, el túnel es entonces configurado para conectarse al demonio telnet_msd. La mejor manera de manejar la aplicación es, por supuesto, actualizarla para usar el nuevo OP_CODES.

 

Además de las diferencias anteriores que son inherentes a Telnet y SSH, hay algunos errores que serán corregidos en una futura versión.

ssl-403 Grupos disponibles:

Al conectarse con Telnet todos los grupos especificados en su entrada de registro están disponibles para los subgrupos, pero con ssh sólo están disponibles los 5 primeros grupos.

Dado que estoy registrado en los grupos, CAC, SysAdmin, Grupo_3, Grupo_4, Grupo_5, Grupo_6. Puedo hacer un sub-login usando cualquier grupo desde una conexión Telnet

telnet 164.152.77.217
Intentando...
Conectado al 164.152.77.217.
El carácter de escape es '^]'.

OpenVOS Release 17.1.0ax, Module %phx_vos#m17
Por favor, inicie sesión 15:38:02
login nd
¿Contraseña? [contraseña actual introducida aquí]

Noah_Davids.CAC se registró en %phx_vos#m17 a las 12-12-12 15:38:08 mst.

login Grupo_5

Noah_Davids.Group_5 se registró en %phx_vos#m17 a las 12-12-12 15:39:39 mst.
listo 15:39:39
logout

login Grupo_6

Noah_Davids.Group_6 se registró en %phx_vos#m17 a las 12-12-12 15:40:13 mst.
listo 15:40:13
Figura 17 - subconjuntos con conexión Telnet

Sin embargo, con ssh, cuando trato de usar el Grupo 6 me da un error.

>sistema>openssl>bin>ssh nd@164.152.77.217
La contraseña de nd@164.152.77.217:

Noah_Davids.CAC se registró en %phx_vos#m17 a las 12-12-12 15:41:02 mst.
listo 15:41:02

login Grupo_5

Noah_Davids.Group_5 se registró en %phx_vos#m17 a las 12-12-12 15:41:24 mst.
listo 15:41:24
cerrar sesión

login Grupo_6
de acceso: Formato inválido en el argumento. Group_6 no está permitido para nombre_de_grupo.
ready 15:41:59
Figura 18 - subconjuntos con conexión SSH

 

ssl-418 - El nivel de sub-proceso:

Los inicios de sesión vía Telnet tienen un nivel de sub-proceso de 0 mientras que los de SSH tienen un nivel de sub-proceso de 3.

telnet 164.152.77.217
Intentando...
Conectado al 164.152.77.217.
El carácter de escape es '^]'.

OpenVOS Release 17.1.0ax, Module %phx_vos#m17
Por favor, inicie sesión 14:15:34
login nd
¿Contraseña? [contraseña actual introducida aquí]

Noah_Davids.CAC se registró en %phx_vos#m17 a las 12-12-13 14:15:39 mst.
listo 14:15:39
display_line (process_info sub_process_level)
0 
listo 14:15:49
Figura 19 - Nivel de sub-proceso establecido en una conexión Telnet

 

>sistema>openssl>bin>ssh nd@164.152.77.217
Contraseña de nd@164.152.77.217: [contraseña actual introducida aquí]

Noah_Davids.CAC se registró en %phx_vos#m17 a las 12-12-13 14:12:23 mst.
listo 14:12:23
display_line (process_info sub_process_level)
3 
listo 14:12:37
Figura 20 - Nivel de sub-proceso establecido en una conexión SSH

Actualización 14 de enero de 2013: Esto resulta ser una característica y no un error. El proceso sshd se bifurca primero cuando se hace start_process para iniciar el proceso de escucha, segundo cuando sshd acepta la conexión y una tercera vez cuando se crea el proceso de inicio de sesión de usuario. Telnet utiliza un mecanismo diferente para iniciar el proceso de usuario que no resulta en ningún proceso bifurcado.

Problemas de zona horaria:

Por último, sólo quiero decir que ha habido una serie de cuestiones relacionadas con el cambio entre el horario de verano y el horario estándar, o más generalmente sólo el cambio de zonas horarias. Las sesiones iniciadas a través de SSH no reflejarían los nuevos valores predeterminados. Estos problemas deberían ser corregidos en esta última versión (2.1.0k).