您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

用 OpenSSL 替代 Telnet

时间:2021-05-13 16:53:54  来源:Linux中国  作者:Seth Kenlon

Telnet 缺乏加密,这使得 OpenSSL 成为连接远程系统的更安全的选择。

用 OpenSSL 替代 Telnet

telnet命令是最受欢迎的网络故障排除工具之一,从系统管理员到网络爱好者都可以使用。在网络计算的早期,telnet被用来连接到一个远程系统。你可以用telnet访问一个远程系统的端口,登录并在该主机上运行命令。

由于 telnet缺乏加密功能,它在很大程度上已经被 OpenSSL 取代了这项工作。然而,作为一种智能的pingtelnet的作用仍然存在(甚至在某些情况下至今仍然存在)。虽然ping命令是一个探测主机响应的好方法,但这是它能做的全部。另一方面,telnet不仅可以确认一个活动端口,而且还可以与该端口的服务进行交互。即便如此,由于大多数现代网络服务都是加密的,telnet的作用可能要小得多,这取决于你想实现什么。

 

OpenSSL s_client

对于大多数曾经需要 telnet的任务,我现在使用 OpenSSL 的s_client命令。(我在一些任务中使用curl,但那些情况下我可能无论如何也不会使用telnet)。大多数人都知道OpenSSL是一个加密的库和框架,但不是所有人都意识到它也是一个命令。openssl命令的s_client组件实现了一个通用的 SSL 或 TLS 客户端,帮助你使用 SSL 或 TLS 连接到远程主机。它是用来测试的,至少在内部使用与该库相同的功能。

 

安装 OpenSSL

OpenSSL 可能已经安装在你的 linux 系统上了。如果没有,你可以用你的发行版的软件包管理器安装它:

$ sudo dnf install openssl

在 Debian 或类似的系统上:

$ sudo apt install openssl

安装后,验证它的响应是否符合预期:

$ openssl version
OpenSSL x.y.z FIPS

 

验证端口访问

最基本的 telnet用法是一个看起来像这样的任务:

$ telnet mail.example.com 25
Trying 98.76.54.32...
Connected to example.com.
Escape character is '^]'.

在此示例中,这将与正在端口 25(可能是邮件服务器)监听的任意服务打开一个交互式会话。只要你获得访问权限,就可以与该服务进行通信。

如果端口 25 无法访问,连接就会被拒绝。

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)

但是,这仅是目标性 ping。从输出中可以看出,没有交换 SSL 证书,所以连接立即终止。为了充分利用openssl s_client,你必须连接加密的端口。

 

交互式 OpenSSL

Web 浏览器和 Web 服务器进行交互,可以使指向 80 端口的流量实际上被转发到 443,这是保留给加密 HTTP 流量的端口。知道了这一点,你就可以用 openssl命令连接到加密的端口,并与在其上运行的任何网络服务进行交互。

首先,使用 SSL 连接到一个端口。使用 -showcerts选项会使 SSL 证书打印到你的终端上,一开始的输出要比 telnet 要冗长得多:

$ 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

你被留在一个交互式会话中。最终,这个会话将关闭,但如果你及时行动,你可以向服务器发送 HTTP 信号:

[...]
GET / HTTP/1.1
HOST: example.com

回车键两次,你会收到example.com/index.html的数据:

[...]

 

Example Domain

This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.

More information...

 

Email 服务器

你也可以使用 OpenSSL 的 s_client来测试一个加密的 Email 服务器。要做到这点,你必须把你的测试用户的用户名和密码用 Base64 编码。

这里有一个简单的方法来做到:

$ perl -MMIME::Base64 -e 'print encode_base64("username");'
$ perl -MMIME::Base64 -e 'print encode_base64("password");'

当你记录了这些值,你就可以通过 SSL 连接到邮件服务器,它通常在 587 端口:

$ 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

检查你的邮件(在这个示例代码中,是 admin@example.com),查看来自noreply@example.com的测试邮件。

 

OpenSSL 还是 Telnet?

telnet仍然有用途,但它已经不是以前那种不可缺少的工具了。该命令在许多发行版上被归入 “遗留” 网络软件包,而且还没有telnet-ng之类的明显的继任者,管理员有时会对它被排除在默认安装之外感到疑惑。答案是,它不再是必不可少的,它的作用越来越小,这很好。网络安全很重要,所以要适应与加密接口互动的工具,这样你就不必在排除故障时禁用你的保护措施。

via: https://opensource.com/article/21/5/drop-telnet-openssl

作者:Seth Kenlon 选题:lujun9972译者:geekpi校对:wxy

本文由 LCTT原创编译,Linux中国荣誉推出



Tags:OpenSSL   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Telnet 缺乏加密,这使得 OpenSSL 成为连接远程系统的更安全的选择。telnet命令是最受欢迎的网络故障排除工具之一,从系统管理员到网络爱好者都可以使用。在网络计算的早期,teln...【详细内容】
2021-05-13  Tags: OpenSSL  点击:(223)  评论:(0)  加入收藏
为什么要使用ssl加密通讯随着互联网快速发展,网络安全越来越得到人们的关注。谁都不想自己的数据被人窃听或利用,而当我们直接使用TCP连接一个服务器通讯时,此时是明文传输的,...【详细内容】
2021-04-12  Tags: OpenSSL  点击:(333)  评论:(0)  加入收藏
通过 OpenSSL 深入了解密码学的细节:哈希值、数字签名、数字证书等。• 来源:linux.cn • 作者:Marty Kalin • 译者:Xingyu.Wang •(本文字数:11502,阅读时长大...【详细内容】
2021-03-31  Tags: OpenSSL  点击:(231)  评论:(0)  加入收藏
一、windows vs2015 编译openssl1,到openssl官网下载源码。2,安装ActivePerl,去官网(https://www.activestate.com/products/activeperl/downloads/)下载安装。ActivePerl具体安...【详细内容】
2020-08-10  Tags: OpenSSL  点击:(148)  评论:(0)  加入收藏
这本小抄风格的指南提供了 OpenSSL 命令的快速参考,这些命令在常见的日常场景中非常有用。 来源:https://linux.cn/article-12293-1.html 作者:Mitchell Anicas 译者:Xingyu.Wa...【详细内容】
2020-06-08  Tags: OpenSSL  点击:(60)  评论:(0)  加入收藏
想要入门密码学的基础知识,尤其是有关 OpenSSL 的入门知识吗?继续阅读。-- Marty Kalin(作者) 本文是使用 OpenSSL 的密码学基础知识的两篇文章中的第一篇,OpenSSL 是在 Linux...【详细内容】
2020-02-22  Tags: OpenSSL  点击:(92)  评论:(0)  加入收藏
OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。在OpenSSL被曝出现严重安...【详细内容】
2019-12-31  Tags: OpenSSL  点击:(117)  评论:(0)  加入收藏
要生成证书的目录下建立几个文件和文件夹,有./demoCA/ ./demoCA/newcerts/ ./demoCA/private/ ./demoCA/index.txt (空文件,生成证书时会将数据记录写入) ./demoCA/serial (在s...【详细内容】
2019-08-19  Tags: OpenSSL  点击:(408)  评论:(0)  加入收藏
概述:两个计算机在互联网上通信时,它们之间发送的信息如果不经过特殊的处理,即加密机制,很容易被其他人给获取到,如果是普通的信息,那倒是无所谓,但是如果涉及到个人的私密信息,那这...【详细内容】
2019-08-12  Tags: OpenSSL  点击:(287)  评论:(0)  加入收藏
▌简易百科推荐
作用显示文件或目录所占用的磁盘空间使用命令格式du [option] 文件/目录命令功能显示文件或目录所占用的磁盘空间一些写法的区别du -sh xxx 显示总目录的大小,但是不会列出...【详细内容】
2021-12-23  mitsuhide1992    Tags:du命令   点击:(12)  评论:(0)  加入收藏
什么是linux内核linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪地说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼...【详细内容】
2021-12-23  linux上的码农    Tags:linux内核   点击:(15)  评论:(0)  加入收藏
本文将比较 Linux 中 service 和 systemctl 命令,先分别简单介绍这两个命令的基础用法,然后进行比较。从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 service服务(dae...【详细内容】
2021-12-23  软件架构    Tags:systemctl   点击:(13)  评论:(0)  加入收藏
mv是move的缩写,可以用来移动文件或者重命名文件名,经常用来备份文件或者目录。命令格式mv [选项] 源文件或者目录 目标文件或者目录命令功能mv命令中第二个参数类型的不同(...【详细内容】
2021-12-17  入门小站    Tags:mv命令   点击:(23)  评论:(0)  加入收藏
大数据技术AI Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料 98篇原创内容 -->公众号 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处...【详细内容】
2021-12-17  仙风道骨的宝石骑士    Tags:sed命令   点击:(21)  评论:(0)  加入收藏
Node是个啥?  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性地拿了下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段...【详细内容】
2021-12-15  linux上的码农    Tags:node   点击:(21)  评论:(0)  加入收藏
难道只有我一个人觉得Ubuntu的unity桌面非常好用吗?最近把台式机上面的Ubuntu 16.04格式化了,装了黑苹果用了一周,不得不说,MacOS确实很精美,软件生态比Linux丰富很多,比Windows简...【详细内容】
2021-12-14  地球末日村    Tags:ubuntu   点击:(34)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  窥镜天    Tags:Linux netstat   点击:(26)  评论:(0)  加入收藏
对于较多数量的文件描述符的监听无论是select还是poll系统调用都显得捉襟见肘,poll每次都需要将所有的文件描述符复制到内核,内核本身不会对这些文件描述符加以保存,这样的设计...【详细内容】
2021-12-13  深度Linux    Tags:Linux   点击:(16)  评论:(0)  加入收藏
今天,我们来了解下 Linux 系统的革命性通用执行引擎-eBPF,之所以聊着玩意,因为它确实牛逼,作为一项底层技术,在现在的云原生生态领域中起着举足轻重的作用。截至目前,业界使用范...【详细内容】
2021-12-10  架构驿站    Tags:eBPF   点击:(24)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条