STelnet(SSH)
STelnet 是什么 其实就是SSH(Secure Shell),一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录或文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患,SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的登录和其他安全网络服务。 SSH 工作原理 SSH 是由SSH Serve和SSH Client组成的。在华为的STelnet中,整个通信过程如下: 1. 连接建立 SSH服务器在指定的端口侦听客户端的连接请求,在客户端向服务器发起连接请求后,双方建立一个TCP连接。 2. 版本协商 SSH协议目前存在SSH1.X(SSH2.0之前的版本)和SSH2.0版本。SSH2.0协议相比SSH1.X协议来说,在结构上做了扩展,可以支持更多的认证方法和密钥交换方法,同时提高了服务能力。SSH服务器和客户端通过协商确定最终使用的SSH版本号。 3. 算法协商 SSH支持多种加密算法,双方根据各自支持的算法,协商出最终用于产生会话密钥的密钥交换算法、用于数据信息加密的加密算法、用于进行数字签名和认证的公钥算法以及用于数据完整性保护的HMAC算法。 4. 密钥交换 服务器和客户端通过密钥交换算法,动态生成共享的会话密钥和会话ID,建立加密通道。会话密钥主要用于后续数据传输的加密,会话ID用于在认证过程中标识该SSH连接。 以DH为例,密钥交换思路如下: 协商得到共享密钥K,后续的通信(包括用户认证)数据,都使用该密钥K进行加解密,即下文中的通信过程都经过了加密。 一些问题 在密钥交换过程中,可能会出现中间人攻击的情况。即无法验证对方的身份,例如有个中间人C拦截了A发送给B的报文,该中间人C冒充B与A进行密钥交换,而A仍然认为自己是与B进行密钥交换,那么后续的通信数据就会被B所拦截并破解。因此一般在第一次连接时,会弹出一个提醒,询问客户端是否信任对端(服务端),继续进行密钥交换?信任后该Server会加入到known_hosts名单中,下次连接便不再询问,进入密钥交换。 当然,上面这种情况发生的原因主要是生成的公私密钥对未经过认证,除了上面的解决方案,还可以使用CA提供可信的数字签名秘钥 5. 用户认证 SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证。SSH支持以下几种认证方式: 密码(password)认证:客户端通过用户名和密码的方式进行认证,将加密后的用户名和密码发送给服务器,服务器解密后与本地保存的用户名和密码进行对比,并向客户端返回认证成功或失败的消息。 在密码认证中,还有一种非对称加密的方案,即在原本的加密基础(使用密钥协商阶段的加密算法)上,再使用非对称加密算法进行认证。即Server发送公钥,Client用该公钥加密用户名和密码,Server使用私钥解密得到用户名和密码,再进行比对,实际上就是再加了一层密。 密钥(publickey)认证:客户端通过用户名,公钥以及公钥算法等信息来与服务器进行认证。 password-publickey认证:指用户需要同时满足密码认证和密钥认证才能登录。 all认证:只要满足密码认证和密钥认证其中一种即可。 6. 会话请求 认证通过后,SSH客户端向服务器端发送会话请求,请求服务器提供某种类型的服务,即请求与服务器建立相应的会话。 7. 会话交互 会话建立后,SSH服务器端和客户端在该会话上进行数据信息的交互。 SSH 配置 配置步骤: 配置VTY用户界面的支持协议类型、认证方式和用户级别。 命令 [HUAWEI] user-interface vty 0 4 [HUAWEI-ui-vty0-4] authentication-mode aaa //配置VTY用户界面认证方式为AAA认证 [HUAWEI-ui-vty0-4] protocol inbound ssh //配置VTY用户界面支持的协议为SSH,默认情况下即SSH [HUAWEI-ui-vty0-4] user privilege level 15 //配置VTY用户界面的级别为15 [HUAWEI-ui-vty0-4] quit 通过STelnet登录设备需配置用户界面支持的协议是SSH,必须设置VTY用户界面认证方式为AAA认证。...