admin 管理员组

文章数量: 887021


2024年3月11日发(作者:会matlab可以找工作吗)

7.2 任务一:建立SSH服务(田钧)

7.2.1 SSH协议简介

SSH的英文全称为Secure Shell,是IETF(Internet Engineering Task Force)的Network

Working Group所制定的一族协议,其目的是要在非安全网络上提供安全的远程登录和其他

安全网络服务。可以简单理解为:Rlogin和Telnet等的替代方案。

SSH 协议在预设状态中提供两个服务器功能:

●类似telnet的远程联机使用 shell 的服务器,即ssh;

●类似FTP服务的sftp-server,提供更安全的 FTP 服务。

1. SSH基本框架

SSH协议框架中最主要的部分是三个协议:传输层协议、用户认证协议和连接协议。

同时SSH协议框架中还为许多高层的网络安全应用协议提供扩展的支持。它们之间的层次

关系可以用如下图7-1来表示:

图7-1 SSH协议的层次结构示意图

在SSH的协议框架中,传输层协议(The Transport Layer Protocol)提供服务器认证,

数据机密性,信息完整性 等的支持;用户认证协议(The User Authentication Protocol) 则

为服务器提供客户端的身份鉴别;连接协议(The Connection Protocol) 将加密的信息隧道

复用成若干个逻辑通道,提供给更高层的应用协议使用;各种高层应用协议可以相对地独立

于SSH基本体系之外,并依靠这个基本框架,通过连 接协议使用SSH的安全机制。

SSH的安全验证是如何工作的

从客户端来看,SSH提供两种级别的安全验证。

第一种级别(基于口令的安全验证)

只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密, 但

是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的

服务器, 也就是受到“中间人”这种方式的攻击。

第二种级别(基于密匙的安全验证)

需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服

务器上。 如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的

密匙进行安全验证。服务器收到请求之后,先在你在该服务器的家目录下寻找你的 公用密

匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙

加密“质询”(challenge)并把它发送给客户端软件。 客户端软件收到“质询”之后就可以用

你的私人密匙解密再把它发送给服务器。

用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不

需要在网络上传送口令。

第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因

为他没有你的私人密匙)。 但是整个登录的过程需要的时间稍微较长。

2 SSH数据加密方式

网络封包的加密技术通常由“一对公钥与私钥”(即“Public and Private keys”)进行加

密与解密的操作。主机端要传给客户端(client)的数据先由公钥加密,然后才在网络上传

输。到达客户端后,再由私钥将加密的资料解密。经过公钥(publick key)加密的数据在传

输过程中,由于数据本身经过加密,即使这些数据在途中被截取,要破解这些加密的数据,

需要花费好长一段时间。

3. SSH版本

SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。 用

SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH

1.x和2.x。

SSH protocol version 1

每一部SSH服务器主机都可以用RSA加密方式产生一个1024-bit的RSA Key,这个

RSA的加密方式主要用来产生公钥与私钥的演算方法。

version 1的整个联机加密步骤:

当每次SSH daemon(sshd)启动时,产生768-bit的公钥(或称为server key)存放在

Server 中;若有客户端的ssh联机需求传送来时,Server将这公钥传给客户端。

此时,客户端比对该公钥的正确性。比对的方法是利用/etc/ssh/ssh_known_hosts或

~/.ssh/known_hosts 档案内容。

在客户端接受该768-bit的server key后,客户端随机产生256-bit的私钥(host key),

并且以加密方式将server key与host key整合成完整的Key,并将该Key传送给server;

Server与客户端在本次联机中以该1024-bit的Key进行数据的传递。由于客户端每次256-bit

的Key是随机取的,因而本次联机与下次联机的Key可能不一样。

SSH protocol version 2

SSH version 1的联机中,Server单纯的接受来自客户端的private key,如果在联机过程

中private key被取得后,cracker 就可能在既有的联机当中插入一些攻击码,使得联机发生

问题。

为了改进这个缺点,在SSH version 2中,SSH server不再重复产生server key,而是在

与客户端建立private key时,利用Diffie-Hellman的演算方式, 共同确认来建立private key,

然后将该private key与public key组成一组加解密的金钥。同样,这组金钥也仅是在本次的

联机中有效。

透过这个机制可见,由于server/client两者之间共同建立了private key,若private key

落入别人手中,由于server端还会确认联机的一致性,使cracker没有机会插入有问题的攻

击码。即ssh version 2 是比较安全的。

7.2.2 SSH常用操作

1. 启动 SSH 服务

Linux 系统中,预设含有SSH的所有需要的套件,包含可以产生密码等协议的OpenSSL

套件与OpenSSH套件,直接启动即可使用。

以SSH daemon(简称 sshd)手动启动的步骤如下:


本文标签: 协议 客户端 服务器 加密 密匙