Imagen : JanBaby, a través de Pixabay CC0
La utilidad de red telnet es una palabra de moda . En un momento fue utilizado de manera muy activa por la inmensa mayoría de los administradores de sistemas y otros fanáticos de la administración de servidores remotos. La utilidad le permite acceder a los puertos de un host remoto, pasar por el procedimiento de autorización y ejecutar comandos en esta máquina.
Pero el protocolo telnet no utiliza cifrado. En la realidad actual, sacrificar la seguridad es un lujo inasequible. Sin embargo, hay una serie de tareas que telnet puede realizar con diversos grados de éxito: pruebas de red, verificación de puertos e interacción con dispositivos y enrutadores de IoT.
Parecería que la utilidad se puede utilizar fácilmente como una versión avanzada de ping. Por sí mismo, el comando ping, en el mejor de los casos, solo verifica la disponibilidad del host (a veces este comando no funcionará en absoluto, por ejemplo, debido a restricciones de la política de acceso). Pero el comando telnet no solo verifica si el puerto está abierto, sino que también puede comunicarse con los servicios de red a través de este puerto. Pero con el tiempo, nos enfrentaremos cada vez más a la necesidad de utilizar una conexión cifrada, donde Telnet volverá a ser impotente.
OpenSSL y el comando s_client
Entonces, en la mayoría de los casos, uso el comando s_client de la biblioteca OpenSSL en lugar de telnet . El comando s_client realiza las funciones de un cliente SSL / TLS para conectarse a un host remoto con varias configuraciones: clave de cifrado, tipo de protocolo de enlace, protocolo, etc. El comando también le permite verificar si la sesión se reanuda.
Instalación de OpenSSL
Si la biblioteca OpenSSL aún no está instalada en su sistema operativo, puede instalarla usando el administrador de paquetes:
$ sudo dnf install openssl Debian : $ sudo apt install openssl : $ openssl version OpenSSL x.y.z FIPS
Verificación de acceso al puerto
Así es como funciona el comando telnet para verificar el acceso al puerto 25:
$ telnet mail.example.com 25
Trying 98.76.54.32...
Connected to example.com.
Escape character is '^]'.
En el ejemplo anterior, abrimos una sesión interactiva con un determinado servidor de correo escuchando en el puerto 25. Si tenemos acceso a él, podemos intercambiar mensajes con él. Si el puerto 25 no está disponible, no se establecerá la conexión.
Ahora veamos cómo funciona un comando similar de OpenSSL:
$ openssl s_client -connect example.com:80
CONNECTED(00000003)
140306897352512:error:1408F10B:SSL [...]
no peer certificate available
No client certificate CA names sent
SSL handshake has read 5 bytes and written 309 bytes
Verification: OK
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
Como puede ver, no hubo envío de datos sobre el certificado SSL, por lo que se interrumpió la conexión, no fue posible abrir una sesión. Para establecer una conexión encriptada segura usando el protocolo HTTPS, necesita acceder a un puerto especial.
Abrir una sesión interactiva con una conexión encriptada
En este caso, los navegadores y los servidores web se comunican de tal manera que el tráfico dirigido al puerto 80 se redirige al puerto 443, que está reservado para el tráfico HTTPS. Sabiendo esto, puede
hacerlo con cualquier servicio web que escuche en el puerto 443. Primero, conectemos al puerto usando SSL. Usamos la opción -showcerts y el certificado SSL se imprimirá en su terminal:
$ openssl s_client -connect example.com:443 -showcerts
[...]
0080 — 52 cd bd 95 3d 8a 1e 2d-3f 84 a0 e3 7a c0 8d 87 R...=..-?...z...
0090 — 62 d0 ae d5 95 8d 82 11-01 bc 97 97 cd 8a 30 c1 b.............0.
00a0 — 54 78 5c ad 62 5b 77 b9-a6 35 97 67 65 f5 9b 22 Tx\.b[w..5.ge..»
00b0 — 18 8a 6a 94 a4 d9 7e 2f-f5 33 e8 8a b7 82 bd 94 ..j...~/.3......
Start Time: 1619661100
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
Max Early Data: 0
-
read R BLOCK
Pudimos abrir una sesión interactiva. Hasta que cierre, podemos enviar mensajes HTTP al servidor:
[...] GET / HTTP/1.1 HOST: example.com
Presione la tecla Retorno (para MacOS) o ENTER (para Windows) dos veces, y recibiremos una respuesta del servidor en el formulario example.com/index.html:
[...]
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>
Servidor de correo
El comando s_client se puede utilizar para probar una conexión cifrada a un servidor de correo. Para que esto funcione, necesitamos un nombre de usuario y una contraseña (en mi caso, para un usuario de prueba) codificados en Base64.
Puede codificarlos, por ejemplo, así:
$ perl -MMIME::Base64 -e 'print encode_base64(«username»);'
$ perl -MMIME::Base64 -e 'print encode_base64(«password»);'
Si todo va bien, puede continuar con el siguiente paso: conectarse al servidor de correo a través de SSL. El puerto 587 se usa comúnmente:
$ openssl s_client -starttls smtp \
-connect email.example.com:587
> ehlo example.com
> auth login
##paste your user base64 string here##
##paste your password base64 string here##
> mail from: noreply@example.com
> rcpt to: admin@example.com
> data
> Subject: Test 001
This is a test email.
.
> quit
Ingresé la dirección de correo electrónico admin@example.com, que espero recibir un mensaje de prueba del servidor de correo.
Riesgo injustificado
Algunas personas todavía usan telnet, pero ya no es la herramienta indispensable que alguna vez fue. Ahora se clasifica como un paquete "heredado" en muchos sistemas. Algunos administradores de sistemas se preguntan por qué se excluye de la instalación predeterminada. Telnet está perdiendo gradualmente su relevancia. Este es un proceso objetivo.
La seguridad de la red es vital para la mayoría de los sistemas, por lo que vale la pena familiarizarse con las herramientas adecuadas. Es importante que sean capaces de trabajar con conexiones seguras. Por lo tanto, mientras realiza pruebas o soluciona problemas, no tiene que deshabilitar la protección del sistema y la seguridad de riesgo.
Los servidores en la nube de Macleod son rápidos y seguros.
Regístrese usando el enlace de arriba o haciendo clic en el banner y obtenga un 10% de descuento durante el primer mes de alquiler de un servidor de cualquier configuración.