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

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