一、原理概述
由于Telnet缺少安全的认证方式,而且传输过程采用TCP进行明文传输,存在很大的安全隐患,单纯提供Telnet服务容易招致主机IP地址欺骗、路由欺骗等恶意攻击。传统的Telnet和FTP等通过明文传送密码和数据的方式,已经慢慢不被接受。
STelnet 是 Secure Telnet 的简称。在一个传统不安全的网络环境中,服务器通过对用户端的认证及双向的数据加密,为网络终端访问提供安全的Telnet服务。
SSH(Secure Shell)是一个网络安全协议,通过对网络数据的加密,使其能够在一个不安全的网络环境中,提供安全的远程登录和其他安全网络服务。SSH特性可以提供安全的信息保障和强大的认证功能,以保护路由器不受诸如IP地址欺诈、明文密码截取等攻击。SSH数据加密传输,认证机制更加安全,而且可以代替Telnet,已经被广泛使用,成为了当前重要的网络协议之一。
SSH基于TCP协议22端口传输数据,支持Password认证。用户端向服务器发出Password认证请求,将用户名和密码加密后发送给服务器;服务器将该信息解密后得到用户名和密码的明文,与设备上保存的用户名和密码进行比较,并返回认证成功或失败的消息。
SFTP 是SSH File Transfer Protocol的简称,在一个传统不安全的网络环境中,服务器通过对用户端的认证及双向的数据加密,为网络文件传输提供了安全的服务。
二、实验目的
- 理解SSH的应用场景
- 理解SSH协议的原理
- 掌握配置SSH Password认证的方法
- 掌握SFTP的配置
三、实验内容
使用路由器R1模拟PC,作为SSH的Client:路由器R2作为SSH的Server,模拟远程用户端R1通过SSH协议远程登录到路由器R2上进行各种配置。本实验将通过Password 认证方式来实现。
四、实验拓扑
配置通过STelnet登录系统的拓扑如图1-37所示。
图1-37配置通过STelnet登录系统拓扑
五、实验编址
实验编址见表1-4。
六、实验步骤
1)基本配置
由于eNSP模拟软件自带PC没有SSH用户端,本实验采用两台路由器模拟实验,路由器R1作为SSH的Client,路由器R2作为SSH的Server。
根据实验编址表进行相应的基本配置,并使用ping命令检测各直连链路的连通性。
2)配置SSH Server
相比于Telnet协议,SSH协议支持对报文加密传输,而非明文传送。因此,在跨越互联网的远程登录管理中,建议使用SSH协议。
由于SSH用户使用Password方式验证,需要在SSH服务器端生成本地RSA密钥,因此生成本地RSA密钥对是完成SSH登录配置的首要操作。
在R2上使用rsa local-key-pair create命令来生成本地RSA主机密钥对。
[R2]rsa local-key-pair create
The key name will be: Host
% RSA keys defined for Host already exist.
Confirm to replace them? (y/n)[n]:y ##输入y确认创建秘钥
The range of public key size is (512 ~ 2048). ##输入秘钥长度,回车默认使用512
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Input the bits in the modulus[default = 512]:
Generating keys...
..++++++++++++
.......++++++++++++
....++++++++
......................++++++++
配置完成后,使用display rsa local-key-pair public命令查看本地密钥对中的公钥部分信息。
[R2]display rsa local-key-pair public
=====================================================
Time of Key pair created: 2024-10-09 09:27:08-08:00
Key name: Host
Key type: RSA encryption Key
=====================================================
Key code:
3047
0240
D6C5EE15 242A7D08 06175764 36F8BAF3 60A80CD5
DA82C804 ED528804 E54B71A0 0CD1EBF4 2186745D
740397B2 8D2EBC76 BA10B411 5F32D28C C19A5BDB
B8ABA8E1
0203
010001
=====================================================
Time of Key pair created: 2024-10-09 09:27:10-08:00
Key name: Server
Key type: RSA encryption Key
=====================================================
Key code:
3067
0260
B4924940 93F90ABD DF408614 62D1E90C 2040113F
D460E83C 7CE4010A B1F4A931 9A131E0C 4E4B82E8
5E71D2EE 17BB7264 2CB4B725 AD825B72 6D73349A
5A845EF1 5C2A83D2 B7967D21 7D23F9C2 F0B3FAB3
019F1D6B A20C19B7 7A603ED1 22C9E55B
0203
010001
可以观察到,此时已经生成了本地RSA主机密钥对。“Time of Key pair created”描述公钥生成的时间,“Key name”描述公钥的名称,“Key type”描述公钥的类型。
在R2上配置VTY用户界面,设置用户的验证方式为AAA授权验证方式。
[R2]user-interface vty 0 4
[R2-ui-vty0-4]authentication-mode aaa
##指定VTY类型用户界面只支持SSH协议,设备将自动禁止Telnet功能。
[R2-ui-vty0-4]protocol inbound ssh
[R2-ui-vty0-4]quit
使用 local-user 命令创建本地用户和用户口令,并以密文方式显示用户口令,指定用户名为huawei1,密码为huawei1。
[R2]aaa
[R2-aaa]local-user huawei1 password cipher huawei1
[R2-aaa]local-user huawei1 service-type ssh
##配置本地用户的接入类型为SSH。
[R2-aaa]local-user huawei1 privilege level 15
[R2-aaa]quit
使用ssh user命令新建SSH用户,用户名为huawei1,指定SSH用户的认证方式为Password,即密码认证方式。
[R2]ssh user huawei1 authentication-type password
此处还可以继续使用local-user huaweil privilege level命令配置本地用户的优先级。其取值范围为0~15,取值越大,代表用户的优先级越高。不同级别的用户登录后,只能使用等于或低于自身级别的命令,默认值为3,代表管理级。
默认情况下,设备的SSH服务器功能为关闭状态,只有开启了此功能后,用户端才能以SSH方式与设备建立连接。在R2上开启设备的SSH功能。
[R2]stelnet server enable
配置完成后,使用display ssh user-information huawei1命令在SSH服务器端查看SSH用户的配置信息。如果不在命令末尾指定SSH用户,则可以查看SSH服务器端所有的SSH用户配置信息。
[R2]display ssh user-information huawei1
-------------------------------------------------------------------------------
Username Auth-type User-public-key-name
-------------------------------------------------------------------------------
huawei1 password null
-------------------------------------------------------------------------------
[R2]
可以观察到所配置的SSH用户名及认证方式。
运行 display ssh server status 命令,可以查看 SSH 服务器全局配置信息。
[R2]display ssh server status
SSH version :1.99
SSH connection timeout :60 seconds
SSH server key generating interval :0 hours
SSH Authentication retries :3 times
SFTP Server :Disable
Stelnet server :Enable
可以观察到,此时R2上STelnet Server服务器状态为启用状态。
3、配置 SSH Client
当SSH用户端第一次登录SSH服务器时,用户端还没有保存SSH服务器的RSA公钥,会对服务器的RSA有效性公钥检查失败,从而导致登录服务器失败。因此当用户端R1首次登录时,需开启SSH用户端首次认证功能,不对SSH服务器的RSA公钥进行有效性检查。
[R1]ssh client first-time enable
在SSH用户端RI上使用stelnet命令连接SSH服务器。
[R1]stelnet 10.1.1.2
Please input the username:huawei1 ##登录成功后,输入用户名huawei1。
Trying 10.1.1.2 ...
Press CTRL+K to abort
Connected to 10.1.1.2 ...
The server is not authenticated. Continue to access it? (y/n)[n]:y
Save the server's public key? (y/n)[n]:y
The server's public key will be saved with the name 10.1.1.2. Please wait...
Enter password: ##输入用户 huawei1 的密码 huawei1。
<R2>
第一次登录时,由于开启了SSH用户端首次认证功能,在STelnet用户端第一次登录SSH服务器时,将不对SSH服务器的RSA公钥进行有效性检查。登录后,系统将自动分配并保存RSA公钥,为下次登录时认证。
输入密码后,远程登录R2成功,使用display ssh server session命令查看SSH服务器端的当前会话连接信息。
[R2]display ssh server session
--------------------------------------------------------------------
Conn Ver Encry State Auth-type Username
--------------------------------------------------------------------
VTY 0 2.0 AES run password huawei1
--------------------------------------------------------------------
[R2]
可以观察到,用户huaweil已经成功通过VTY线路0远程登录上来,用户端已经成功连接到SSH服务器,可以进行各种配置。如果要退出登录,使用quit命令即可。
4)配置 SFTP Server 与 Client
在R2上进入AAA视图,创建一个名称为huawei2的用户,并配置密码为huawei2,以密文方式显示。
[R2]aaa
[R2-aaa]local-user huawei2 password cipher huawei2
[R2-aaa]local-user huawei12 service-type ssh ##配置本地用户的接入类型为SSH。
[R2-aaa]local-user huawei2 privilege level 3 ##配置本地用户的优先级,不同级别的用户登录后,只能使用等于或低于自身级别的命令。取值范围为0~15,取值越大,用户的优先级越高。
[R2-aaa]local-user huawei2 ftp-directory flash: ##指定FTP用户的可访问目录。默认为空,如果不配置,FTP用户将无法登录。
[R2-aaa]quit
使用ssh user命令新建SSH用户,用户名为huawei2,指定SSH用户的认证方式为Password,即密码认证方式。
[R2]ssh user huawei2 authentication-type password
使用sftp server enabe命令开启SFTP服务器功能。
[R2]sftp server enable
配置完成后,查看SSH服务器的配置信息。
[R2]display ssh server status
SSH version :1.99
SSH connection timeout :60 seconds
SSH server key generating interval :0 hours
SSH Authentication retries :3 times
SFTP Server :Enable
Stelnet server :Enable
[R2]
可以观察到,此时SFTP服务已经开启。
在R1上使用sftp命令连接SSH服务器,并输入用户名huawei2和口令huawei2。
[R1]sftp 10.1.1.2
Please input the username:huawei2 ##输入账号
Trying 10.1.1.2 ...
Press CTRL+K to abort
Enter password: ##输入密码
sftp-client>
sftp-client>ls ##输入ls命令查看flash下的文件
drwxrwxrwx 1 noone nogroup 0 Oct 09 01:18 dhcp
drwxrwxrwx 1 noone nogroup 0-rwxrwxrwx 1 noone nogroup 1218
02 May 26 2014 portalpage.zip
-rwxrwxrwx 1 noone nogroup 540 Oct 09 01:27 rsa_server_key.efs
-rwxrwxrwx 1 noone nogroup 396 Oct 09 01:27 rsa_host_key.efs
-rwxrwxrwx 1 noone nogroup 2263 Oct 09 01:18 statemach.efs
-rwxrwxrwx 1 noone nogroup 828482 May 26 2014 sslvpn.zip
drwxrwxrwx 1 noone nogroup 0 Oct 09 01:27 .
sftp-client>
可以观察到已经成功登录。
在R2上查看SSH会话连接信息。
[R2]display ssh server session
--------------------------------------------------------------------
Conn Ver Encry State Auth-type Username
--------------------------------------------------------------------
VTY 0 2.0 AES run password huawei2
--------------------------------------------------------------------
[R2]
可以观察到,用户huawei2已经成功通过VTY线路0远程登录上来,用户端已经成功连接到SSH服务器,可以进行各种配置。如果要退出登录,使用quit命令即可。