一、SSH简介:
SSH(Secure Shell)是一种专为远程登录会话和其他 络服务提供安全性的 络协议。使用 SSH,可以把传输的数据进行加密,有效防止远程管理过程中的信息泄露问题。
二、SSH验证方式
从客户端来看,有两种验证方式:基于口令、基于密钥。
第一种:基于口令的安全验证
只要你知道自己帐 和口令,就可以登录到远程主机。所有传输的数据都会被加密,但不保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。
第二种:基于密钥的安全认证方法
基于密钥的安全验证方式是指:需要依靠密钥,也就是必须事先建立一对密钥对,然后把公用密钥(锁头-Public key)放在需要访问的目标服务器上,另外,还需要把私有密钥(钥匙-Private key)放到SSH的客户端或对应的窖户端服务器上。
私钥不能在 络中传输—私钥可以解密公钥。
公钥可以在 络中传输—公钥不能解密私钥。
此时,如果要想连接到这个带有公用密钥的SSH服务器,客户端SSH软件或者客户端服务器,就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。
SSH服务器收到请求之后,会先在该SSH服务器上连接用户的家目录下,寻找事先放上去的对应用户的公用密钥,然后把它和连接的SSH客户端发送过来的公用密钥进行比较。
如果两个密钥一致,SSH服务器就用公用密钥加密”质询”(challenge)并把它发送给SSH客户端。
用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在 络上传送口令。
第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙),但是整个登录的过程可能需要10秒。
三、层次
SSH 主要由三部分组成:
1)传输层协议(SSH-TRANS)
提供了服务器认证,保密性及完整性。此外它有时还提供压缩功能。 SSH-TRANS 通常运行在 TCP/IP连接上,也可能用于其它可靠数据流上。
SSH-TRANS 提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且该协议不执行 用户认证。更高层的用户认证协议可以设计为在此协议之上。
2)用户认证协议(SSH-USERAUTH)
用于向服务器提供客户端用户鉴别功能。它运行在传输层协议 SSH-TRANS 上面。当SSH-USERAUTH 开始后,它从低层协议那里接收会话标识符(从第一次密钥交换中的交换哈希H )。
会话标识符唯一标识此会话并且适用于标记以证明私钥的所有权。SSH-USERAUTH也需要知道低层协议是否提供保密性保护。
3)连接协议(SSH-CONNECT)
将多个加密隧道分成逻辑通道。它运行在用户认证协议上。它提供了交互式登录话路、远程 命令执行、转发 TCP/IP 连接和转发 X11 连接。
四、SSH的应用
传统的 络服务程序,如:ftp、pop和telnet在本质上是不安全的,因为它们在 络上用明文传送口令和数据,别有用心的人非常容易截获这些口令和数据。
而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”这种方式的攻击。
所谓“中间人”的攻击方式, 就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。
服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。
通过使用SSH,你可以把所有传输的数据进行加密,这样”中间人”这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。
使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、PoP、甚至为PPP提供一个安全的”通道”。
五、SSH常见Q&A
Q1: SSH的版本和区别。
SSH2避免了RSA的专利问题,并修补了CRC的缺陷。SSH2用数字签名算法(DSA)和Diffie-Hellman(DH)算法代替RSA来完成对称密钥的交换,用HMAC来代替CRC。同时SSH2增加了AES和Twofish等对称加密算法。
A1: SSH(Secure SHell)到目前为止有两个不兼容的版本——SSH1和SSH2。SSH1又分为1.3和1.5两个版本。
SSH1采用DES、3DES、 Blowfish和RC4等对称加密算法保护数据安全传输,而对称加密算法的密钥是通过非对称加密算法(RSA)来完成交换的。SSH1使用循环冗余校验码(CRC)来保证数据的完整性,但是后来发现这种方法有缺陷。
Q2:什么是HMAC?
A2:HMAC(Hash Message Authentication Code) ,散列消息鉴别码,基于密钥的Hash算法的认证协议。消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。
使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证等。
Q3:什么是X11 forwarding?
A3:sh的X11 forwarding特性可以使X client和X server安全地通讯。使用X11 forwarding后,从X client到X Server方向的数据先被送至ssh server,ssh server利用和ssh client的安全通道转发给ssh client,再由ssh client转发给X server,从X server到X client的数据流同理。
这里ssh server和ssh client充当了X client和X server间数据的转发器,由于ssh server和X client、ssh client和X server一般在同一台机器上,它们之间是一种安全的进程间通讯,而ssh server和ssh client间的通讯也是安全的,所以X client和X server间的通讯就是安全的。
Q4:什么是TTY?
A4: 终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是 Teletype的缩写。
Teletype是最早出现的一种终端设备,很象电传打字机,是由Teletype公司生产的。设备名放在特殊文件目录/dev/下。
Q5:简单描述下SSH运行的过程?
A5:简要过程如下:
* Client端向Server端发起SSH连接请求。
* Server端向Client端发起版本协商。
* 协商结束后Server端发送Host Key公钥 Server Key公钥,随机数等信息。到这里所有通信是不加密的。
* Client端返回确认信息,同时附带用公钥加密过的一个随机数,用于双方计算Session Key。
* 进入认证阶段。从此以后所有通信均加密。
* 认证成功后,进入交互阶段。
最后,说说SSH与Telent的区别:
SSH:
1)SSH代表安全外壳(Secure Shell),它现在是通过互联 访问 络设备和服务器的唯一的主要协议。
2)SSH默认情况下通过端口22运行;不过,很容易更改这个端口。
3)SSH是一种非常安全的协议,因为它共享并发送经过加密的信息,从而为通过互联 等不安全的 络访问的数据提供了机密性和安全性。
4)一旦通讯的数据使用SSH经过加密,就极难解压和读取该数据,所以我们的密码在公共 络上传输也变得很安全。
5)SSH还使用公钥用于对访问服务器的用户验证身份,这是一种很好的做法,为我们提供了极高的安全性。
6)SSH主要用在所有流行的操作系统上,比如Unix、Solaris、Red-Hat Linux、CentOS和Ubuntu等。
Telnet:
1)Telnet是电信(Telecommunications)和 络(Networks)的联合缩写,这是一种在UNIX平台上最为人所熟知的 络协议。
2)Telnet使用端口23,它是专门为局域 设计的。
3)Telnet不是一种安全通信协议,因为它并不使用任何安全机制,通过 络/互联 传输明文格式的数据,包括密码,所以谁都能嗅探数据包,获得这个重要信息。
4)Telnet中没有使用任何验证策略及数据加密方法,因而带来了巨大的安全威胁,这就是为什么telnet不再用于通过公共 络访问 络设备和服务器。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!