理解并取证:SSH远程管理协议的工作原理
SSH(Secure Shell)它默认的连接端口是22,可以把所有传输的数据进行加密。它是代替Telnet进行安全远程操作一种很好的方式。当然,事实上它不止能代替Telnet进行安全的工作,还能为FTP等应用服务提供安全的传输通道。
第一阶段:(基于口令的安全验证)只要用户知道自己的账号和口令,就可以登录到远程主机。所有传输的数据都会被加密。但是不能保证正在连接的服务器就是用户想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。
第二阶段:思科的路由器如果配置了SSH,那么就会在设备上产生一对非对称式的密钥对,一把私钥和一把公钥。私钥是不可公开的,所以设备要保密私钥;公钥是可公开的,所以设备可以将自己的公钥发送给SSH客户端,SSH的客户端拿着公钥来加密数据,所以数据在传送的过程中,是保密的,这样就免除了“中间者的攻击或窃取”。被公钥加密的数据被传送到路由器上时,路由器可以利用自己的私钥来解密数据。这样就保证了数据在传递过程中的安全性,如下图9.4所示。
SSH与Telnet的比较:
nSSH较Telnet具备了更好的安全性。
nSSH还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。
演示:思科路由器SSH的远程管理
演示目标:在路由器上配置SSH服务,并取证SSH比Telnet的安全性高。
演示环境:如上图9.4所示的演示环境。
演示步骤:
第一步:在思科的路由器上配置SSH。配置指令如下所示:
路由器R1的SSH配置:
R1(config)#line vty 0 4 * 进入vty线路模式。
R1(config-line)#loginlocal * 对远程SSH的用户采取本地安全数据库认证。
R1(config-line)#transportinput ssh * 允许SSH传入。
R1(config)#ip domain-name ccna.com
* 使用SSH必须为路由器配置域名,这里的域名是ccna.com。
R1(config)#usernameccna password ccna
* 建立一个路由器的本地安全数据库,用户名为ccna,密码为ccna。
R1(config)#enablepassword ccna * 为路由器配置enable的密码。
R1(config)#crypto keygenerate rsa * 生成路由器的公钥和私钥对。
路由器会有如下提示:
The name for the keys willbe: r1.ccna.com
Choose the size of the keymodulus in the range of 360 to 2048 for your General Purpose Keys. Choosing a key modulus greater than 512 maytake a few minutes.
How many bits in the modulus [512]:建立密钥对模数的长度,保持默认就可以了。
% Generating 512 bit RSA keys, keys will be non-exportable...[OK]
路由器提示:SSH 1.99被正式启动。
*May 19 13:51:27.707: %SSH-5-ENABLED: SSH1.99 has been enabled
第二步:实现SSH客户机的登录。就目前而言,Windows还没有提供专用的SSH客户端软件,所以需要第三方软件进行支持。而PuTTY就是一款非常好的第三方SSH客户端软件,如下图9.5所示。
第三步:利用协议分析器分析SSH的数据帧。在192.168.1.2上SSH连接到路由器(192.168.1.1)以前打开的协议分析器,然后完成整个SSH的过程,再暂停协议分析器,可得到如下图9.6所示的数据帧和如下图9.7所示的被SSH加密后的效果。