Telnet和SSH数据包分析和服务器搭建

1.实验内容

1、分析给定的Telnet数据包和SSH数据包,进一步熟悉Telnet和SSH的工作流程;

2、在Linux操作系统中搭建Telnet服务器和SSH服务器;在Windows操作系统中利用自带的Telnet客户端和下载安装的SecureCRT分别连接所搭建的服务器,捕获连接数据包;学习利用SecureCRT远程控制Linux操作系统。

2. Telnet数据包分析

首先是建立TCP连接

 

第一个TCP包

 

 

这里说明了TCP的源端口39140也就是宿主机建立连接开出来的端口,目的端口23 ,telnet服务默认端口。

Sequence number同步序号4bytes,但这里显示的是相对值0。

还应该有一个(但是没有显示)Acknowledgment number确认序号4bytes,为0,因为还是第一个握手包。

Header Length头长度32字节,滑动窗口大小8192字节(8MB),校验和。

Options选项12字节,其中包含最大传输单元MTU默认是1460bytes。

 

3. SSH数据包分析

 

 

 

完成密码输入后,服务端验证成功后发送一个Telnet报文询问是否Do Terminal Type开始执行命令行,主机客户端回应Will Terminal Type,将要执行,然后双方发送Suboption End消息,之后服务端放送欢迎消息,如图:

 

 

 

 

 

 

 

和之前输入用户名的传输方法基本一样.两个Telnet一个TCP同步.

完成输入后回车,服务端执行命令并作出回应:

可知login:   lx

Password:    !@#$%^

 

 

 

 

 

 

 

 

 

 

 

上面的是典型的关闭TCP连接的过程.

总结:

Telnet服务是建立在TCP基础之上的,保证数据的准确性。建立连接后,每键入一个字符就要发送和应答,产生至少2个数据包,开销很大。传统的Telnet由于密码明文传输的问题,帐号和密码等敏感资料容易会被窃听,因此很多服务器都会封锁Telnet服务,改用更安全的SSH。

 

首先是建立TCP连接

 

第一个TCP包

 

 

这里说明了TCP的源端口39140也就是宿主机建立连接开出来的端口,目的端口23 ,telnet服务默认端口。

Sequence number同步序号4bytes,但这里显示的是相对值0。

还应该有一个(但是没有显示)Acknowledgment number确认序号4bytes,为0,因为还是第一个握手包。

Header Length头长度32字节,滑动窗口大小8192字节(8MB),校验和。

Options选项12字节,其中包含最大传输单元MTU默认是1460bytes。

 

3. SSH数据包分析

 

 

 

完成密码输入后,服务端验证成功后发送一个Telnet报文询问是否Do Terminal Type开始执行命令行,主机客户端回应Will Terminal Type,将要执行,然后双方发送Suboption End消息,之后服务端放送欢迎消息,如图:

 

 

 

 

 

 

 

和之前输入用户名的传输方法基本一样.两个Telnet一个TCP同步.

完成输入后回车,服务端执行命令并作出回应:

可知login:   lx

Password:    !@#$%^

 

 

 

 

 

 

 

 

 

 

 

上面的是典型的关闭TCP连接的过程.

总结:

Telnet服务是建立在TCP基础之上的,保证数据的准确性。建立连接后,每键入一个字符就要发送和应答,产生至少2个数据包,开销很大。传统的Telnet由于密码明文传输的问题,帐号和密码等敏感资料容易会被窃听,因此很多服务器都会封锁Telnet服务,改用更安全的SSH。

3. SSH数据包分析

 

 

 

 

 

 

 

 

 

 

4. Telnet服务器搭建

1.ubuntu telnet 服务器端的安装配置

1.安装openbsd-inetd

sudo apt-get install openbsd-inetd

2.安装telnetd
sudo apt-get install telnetd

3.重启openbsd-inetd
sudo /etc/init.d/openbsd-inetd restart

4.查看telnet运行状态
sudo netstat -a | grep telnet

5.登录

telnet IP address   (需要现在Telnet服务器上看ip address)

 

 

2.开启windowsTelnet功能

控制面板→程序→启用或关闭Windows功能→选择Telnet客户端

      

      3.Ubuntu开启Telnet服务

1

sudo apt-get install xinetd telnetd 

编辑/etc/inetd.conf,在文件中添加:

1

telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd

修改/etc/xinetd.conf,在# log_type = SYSLOG daemon info下添加:

1

2

3

4

5

instances = 60  

log_type = SYSLOG authpriv  

log_on_success = HOST PID  

log_on_failure = HOST  

cps = 25 30 

编辑/etc/xinetd.d/telnet文件,添加:

1

2

3

4

5

6

7

8

9

10

11

12

13

# default: on  

# description: The telnet server serves telnet sessions; it uses \  

# unencrypted username/password pairs for authentication.  

service telnet  

{  

disable = no  

flags = REUSE  

socket_type = stream  

wait = no  

user = root  

server = /usr/sbin/in.telnetd  

log_on_failure += USERID  

重启网络

1

sudo /etc/init.d/xinetd restart

4.测试Windows通过Telnet远程登录Ubuntu

打开cmd→输入telnet→输入open ubuntu ip→输入用户名密码

 

 

5.SSH服务器搭建

SSH服务配置安装

 

 

一.第一种方法是基于用户名密码的ssh服务器登录

 

 

 

 

我在这里使用ubuntu14.04作为登录账户,如下图登录ssh服务器,最终显示的是ssh服务器Ubuntu16.04的桌面

 

 

下面介绍在windows 上登录ssh服务器的过程

 

 

 

 

 

我在windows putty上保存了ssh.txt,如下图的信息

 

 

下面在ssh服务器上看

 

 

二.第二种方法是密钥的安全认证

 

 

查看生成的公钥和私钥

 

下面建立authorized_keys认证文件

 

这里需要把私钥文件 (id_rsa)保存在客户端机器上

 

 

SSH服务器很多的配置信息都可以在.conf文件中进行更改

设置 SSH,打开密钥登录功能

编辑 /etc/ssh/sshd_config 文件,进行如下设置:

RSAAuthenticationyes

PubkeyAuthenticationyes

另外,请留意 root 用户能否通过SSH 登录:

PermitRootLoginyes

当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:

PasswordAuthenticationno

最后,重启 SSH 服务:

[[email protected]]$ service sshd restart

 

 

 

将私钥下载到客户端,然后转换为PuTTY 能使用的格式

使用 WinSCP、SFTP 等工具将私钥文件 id_rsa 下载到客户端机器上。然后打开 PuTTYGen,单击 Actions 中的 Load 按钮,载入你刚才下载到的私钥文件。如果你刚才设置了密钥锁码,这时则需要输入。

载入成功后,PuTTYGen 会显示密钥相关的信息。在 Key comment 中键入对密钥的说明信息,然后单击 Save private key 按钮即可将私钥文件存放为 PuTTY 能使用的格式。

今后,当你使用 PuTTY 登录时,可以在左侧的 Connection -> SSH -> Auth 中的 Privatekey file for authentication: 处选择你的私钥文件,然后即可登录了,过程中只需输入密钥锁码即可。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.实验中出现的问题和解决方法

在windows端登录ssh服务器时

 

这是我们可以看看服务器端的.conf文件

 

 

 

 

就这样问题解决了,就是当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录

 

 

 

 

 

 

在github上下载的PuTTY源码包

 

 

接下来一段时间打算继续对PuTTY源码进行分析以提高编程的能力和ssh协议具体的实现过程。

 

 

 

 

 

参考文献

1.    ubuntu16.10开启telnet办法http://blog.csdn.net/a1964543590/article/details/69485836

2.    ubuntu16.04开启telnet服务 http://blog.csdn.net/l370398095/article/details/70598632

3.    ubuntu设置 SSH 通过密钥登录 http://blog.csdn.net/permike/article/details/52386868

4.    Telnet实现windows远程登录ubuntu

https://www.cnblogs.com/mufire/p/6724756.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章