曾几何时,Telnet是我最喜欢的远程登录协议!
当年还年轻,还在H公司做网络测试的工作,天天千方百计的找路由器和交换机的BUG,总想给开发人员添堵,总想搞事情、不想让版本正常发布:),现在回想起来,那真是一段单纯而美好的时光!
为了对交换机和路由器进行管理,当时我们都是使用Telnet登录的,各种命令敲的很High。突然有一天,我们的部门经理(现在担任H公司高管)专门把我们召集起来,让我们以后登录设备时,禁止使用Telnet,要切换为SSH,自动化平台的连接也要全部换成SSH!
这让我们很惊讶,因为Telnet已经用很久了,整个部门的测试系统登录都是基于Telnet的,大家都已经习惯了!后来才知道因为发生了某个泄密事件(具体内容忘了),所以公司要求即使在内部登录设备时,也不能使用Telnet,必须使用更安全的SSH!然后整个部门就切换了!
后来离开H公司,到别的公司以后,发现大家虽然都知道Telnet不安全,但是还都在使用。因为Telnet配置起来比SSH更方便,而人都是有惰性的,多走一步路都不愿意,当然喜欢使用Telnet!估计只有现网的设备才会禁止使用Telnet。
后来学了一点安全知识,才理解H公司强制要求的苦心,原来Telnet真的不安全,有心人可以轻易的获取登录设备的用户名和密码,今天就和大家一起看一下!
简单的了解一下Telnet的C/S工作模式
C/S工作模式,小伙伴听起来有没有感觉很高大上?我就曾经被唬住,感觉C/S模式是一种非常高深的架构!后来还专门查了资料,才搞清楚C/S工作模式是什么。
我们来看看下图的C/S工作模式,做好大跌眼镜的准备
C/S工作模式
- C:client,客户端;
- S:server,服务器。
客户端和服务器之间交换信息,只要客户端使用单独软件访问服务器的工作模式,都可以称为C/S模式!是不是没有想到呢?
与C/S模式相对应的是B/S模式,如下图所示:
B/S工作模式
- B:brower,浏览器
- S: server,服务器
看完上图和B、S的解释,小伙伴应该能猜出B/S模式是什么了吧?客户端和服务器之间交换信息,只要是通过浏览器访问server的模式,都称为B/S模式!是不是感觉不淡定,感觉太简单了:)
那我们言归正传,既然Telnet采用的C/S模式,就是说Telnet客户端需要第三方软件才行。我们通常会使用window自带的CMD、SecureCRT、XShell、Putty等软件作为Telnet客户端,去连接Telnet服务器!
SecureCRT界面
网络工程师最常用的就是SecureCRT了,简直就是敲命令行的必备利器啊!如果安装和使用SecureCRT有疑问,可以到我的专栏去看看,有一节是专门介绍SecureCRT的视频教程。
查看Telnet的用户名密码
看过了Telnet的工作模式以后,下面就带领大家一起来查看用户名密码了!
那用什么工具来查看用户名和密码呢?wireshark软件!
Wireshark是一个抓包软件,是网络工程师排除问题的必备软件。
要获取Telnet的用户名、密码,只需要经过下面的三个步骤:
- 第一步:打开wireshark软件,抓取经过网卡的报文;
- 第二步:使用Telnet客户端,登录网络设备;
- 第三步:停止wireshark抓包,分析报文,找出用户名和密码。
步骤一:打开wireshark软件,抓取所有经过网卡的报文
在电脑上安装了wireshark软件,打开就可以看到下图的的软件界面:
wireshark软件界面
选择正确的网卡:如果有多块网卡,需要选择抓包的网卡,
选择正确的网卡
点击开始以后,就会开始抓包:如下图所示,正在抓包中
抓包中
步骤二:使用Telnet客户端,登录Telnet服务器
打开SecureCRT软件,新建一个连接,选择Telnet协议,如下图所示:
选择Telnet协议
输入Telnet服务器的IP地址或主机名:
服务器IP地址或者主机名
给创建的会话起一个名字:
会话名称
双击会话名称,会自动的连接失败,并提示输入用户名和密码:
提示输入用户名和密码
不过华为的设备会提示:Telnet是不安全的,不建议使用,原文如下:
Warning: Telnet is not a secure protocol, and it is recommended to use Stelnet. |
我们当然不能被吓到,否则今天的课程就没有办法继续下去了,我们按照提示输入用户名和密码:
输入用户名和密码
步骤三:使用wireshark找出用户名和密码
在我们停止抓包以后,会发现我们已经抓取了大量的报文,不知道如何入手。其实很简单,只需要在上面的过滤器输入telnet即可,wireshark会把协议属于telnet的报文过滤出来,如下图:
过滤出Telnet报文
过滤以后,就没有多少报文了,可以一个一个的报文查找,用户名和密码就藏这些报文里面。也可以使用wireshark的“追踪流”功能,它会把这条流量的所有内容都显示出来。如下图,右键选中一个报文以后,然后选择追踪TCP流:
追踪流
Wireshark就会把属于这条TCP连接的所有内容都显示出来(Telnet使用TCP传输),如下图:
显示用户名、密码
你看是不是比较坑爹,用户名/密码直接就显示出来了!是不是比较简单呢,不需要掌握什么高深的技术就可以轻易获取Telnet的用户名/密码了!
当然有心人是不会在你电脑上抓包的,他会在网络中间抓包。这个对他们不是什么困难的事情,例如下图:
有心人抓包
他们的抓包设备和分析软件会更专业,如果获取现网设备的用户名/密码,就可以对设备进行任何的配置了,想想都可怕!所以我们还是不要使用telnet的好,养成使用SSH的习惯!
总结
各位小伙伴经过上面的解释,知道C/S工作原理和Telnet不安全的原因了吧?我来作一下简单的总结:
- 使用第三方客户端连接服务器的工作模式叫做C/S模式;
- 使用浏览器连接服务器的工作模式叫做B/S模式;
- Telnet之所以不安全,是因为客户端和服务器之间交互的报文是没有加密的,可以被有心人轻易的找出用户名和密码。