SSH介绍
Telnet缺少安全的认证方式,而且传输过程采用TCP进行明文传输,存在很大的安全隐患。单纯提供Telnet服务容易招致DoS(Deny of Service)、主机IP地址欺骗、路由欺骗等恶意攻击。
随着人们对网络安全的重视,传统的Telnet和FTP通过明文传送密码和数据的方式,已经慢慢不被人接受。SSH(Secure Shell)是一个网络安全协议,通过对网络数据的加密,解决了这个问题。它在一个不安全的网络环境中,提供了安全的远程登录和其他安全网络服务。
SSH通过TCP进行数据交互,它在TCP之上构建了一个安全的通道。另外SSH服务除了支持标准端口22外,还支持其他服务端口,以防止受到非法攻击。
注意:
SSH协议包括SSH1.0,SSH1.5,SSH2.0
SSH的功能
SSH支持的客户端功能
SSH客户端功能允许用户与支持SSH Server的路由器、UNIX主机等建立SSH连接
SFTP
SFTP(SSH File Transfer Protocol)是SSH FTP的简称,是一种安全的FTP。SFTP建立在SSH连接的基础之上,远程用户可以安全地登录设备,进行文件管理和文件传送等操作,为数据传输提供了更高的安全保障。同时,由于设备提供了SFTP客户端功能,可以从本设备安全登录到远程SSH服务器上,进行文件的安全传输。
STelnet
STelnet是基于SSH的安全Telnet服务。与Telnet相比,SSH服务器通过对客户端进行认证及双向的数据加密,为网络终端访问提供了安全的服务。
SCP
SCP(Secure Copy)是基于SSH的安全协议,对客户端进行认证和数据加密,以保证在传统的非安全网络环境下进行安全的文件传输。
SCP使用SSH进行数据传输和用户认证,从而确保数据传输的可靠性和机密性。客户端可以发送(上传)文件到服务器,亦可从服务器请求(下载)文件或目录。缺省情况下,SCP运行于TCP协议下的22号端口。
SSH服务支持其他端口
SSH协议的标准侦听端口号为22,攻击者不断访问标准端口,导致带宽的浪费和服务器性能的下降,致使其他正常用户无法访问,这是一种DoS(拒绝服务)攻击。
设定SSH服务端的侦听端口号为其他端口,攻击者不知道SSH侦听端口号的更改,可有效防止攻击者对SSH服务标准端口访问消耗带宽和系统资源。正常用户通过对非标准端口的SSH服务的访问,降低遭受DoS(拒绝服务)攻击可能性。
只有合法的用户采用SSH服务器设定的非标准侦听端口才能建立Socket连接,进行SSH协议的版本号协商、算法协商及会话密钥生成、认证、会话请求、会话阶段等过程。
安全的远程访问
SSH通过以下措施实现在不安全网络上提供安全的远程访问:
支持RSA(Revist-Shamir-Adleman Algorithm 非对称加密算法)/DSA(Digital-Signature Algorithm 数字签名算法)/ECC(Elliptic Curves Cryptography 椭圆曲线加密)公钥验证方式,根据非对称加密体系的加密原则,通过生成公钥和私钥,实现密钥的安全交换,最终实现安全的会话全过程。
支持证书验证方式,客户端通过证书签名来进行服务器端验证,有效防止中间人攻击。
支持数据加密标准DES(Data Encryption Standard)、3DES、AES(Advanced Encryption Standard)。
SSH客户端与服务器端通信时,对传输的数据进行加密,包括用户名及口令,有效防止对口令的窃听。
支持SM2椭圆曲线密码算法,SM2算法与RSA算法一样,同属于非对称密码算法体系,是基于ECC(Elliptic Curves Cryptography)算法的非对称算法。与RSA算法不同的是
RSA算法是基于大数的因子分解算法,导致了RSA算法的密钥的长度也越来越长。而长密钥带来了运算速度较慢、密钥存储和管理不方便问题。ECC算法是基于离散对数的算法,很难破解,具有更高的安全性。与RSA算法相比,在相同安全性条件下,ECC算法可以大大减少密钥的长度。相较于RSA,椭圆曲线密码算法使用更短的密钥长度就能实现比较牢固的加密强度,同时由于密钥长度相对较短,加密速度也就相对较快。总而言之,ECC椭圆曲线密码算法具有以下优点:
- 相同的安全性,ECC算法的密钥长度比RSA算法更短。
- 计算量小,处理速度快。
- 存储空间小。
- 带宽要求低。
注意:
为了保证更好的安全性,建议不要使用DES/3DES/RSA小于2048位的RSA算法做为SSH用户的认证和数据加密方式,推荐使用更安全的ECC认证算法
支持ACL应用
ACL是访问控制列表。通过ACL对SSH类型的用户界面限制呼入呼出权限,防止一些非法地址的用户进行TCP连接,避免其进入SSH协商,借此提高SSH服务器安全性。
SSH原理介绍
SSH和telnet、ftp等协议主要的区别在于安全性。这就引出下一个问题:如何实现数据的安全呢?首先想到的实现方案肯定是对数据进行加密。加密的方式主要有两种:
对称加密(也称为秘钥加密)
非对称加密(也称公钥加密)
对称加密,指加密解密使用同一套秘钥
对称加密的加密强度高,很难破解。但是在实际应用过程中不得不面临一个棘手的问题:如何安全的保存密钥呢?尤其是考虑到数量庞大的Client端,很难保证密钥不被泄露。一旦一个Client端的密钥被窃据,那么整个系统的安全性也就不复存在。
非对称加密应运而生。非对称加密有两个密钥:“公钥”和“私钥”
两个密钥的特性:公钥加密后的密文,只能通过对应的私钥进行解密。而通过公钥推理出私钥的可能性微乎其微。
使用非对称加密方案的登录流程
远程Server收到Client端用户TopGun的登录