开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

深入剖析Cisco SDM安装过程及对路由器Flash卡进行文件传输的RCP、SCP协议

简介:
+关注继续查看

事情的起因源于需要对路由器的Flash卡进行远程读写操作,就是上传下载文件。由于以前只对ftp、tftp之类的服务熟悉,所以在查看cisco的设备资料后发现,普适性不是很高,主要在如下几点:

1、ftp server不是什么型号、什么特性集的IOS上都有,低端设备和低端IOS如IPbase的特性集上不具备ftp server的功能。

2、tftp server就更加受到cisco的限制,在路由器上开启tftp都是要指定文件名,即对于cisco的设计理念来讲,tftp只是一个保存路由器资料到别的地方的方式,连写flash和创建文件的权限都没有。

 

那么究竟有什么办法能够即最小量的修改配置,又能实现远程对路由器flash卡进行读写上传下载文件的操作呢,而且这个文件还不能是flash卡里的已有文件,必须是可以自定义的任意文件。

 

在这个思路的指导下,首先想到了SDM,这个管理软件是cisco在主流路由器上力推的软件,SDM有一种管理方式是安装到路由器上,这样就不需要带有SDM的客户端,即可访问http或者https,得到SDM的管理界面。那么问题就来了,cisco是通过什么方式把文件上传到路由器上的呢?既然cisco用这种方法上传,只要不是它私有的封装或者只认证cisco客户端的通讯方式,那么很有可能就是用一种简便的而且普适性较强的方式,那么这种方法必然可以为我所用。

 

 

首先我们观察下cisco采用了什么管道上传文件的。

打开SDM的安装界面:

image

 

填写好测试用的IP地址后,就可以下一步了。

image

 

通过查看连接,发现采用ssh和路由器通讯。中途会小开个80端口,其实在设备上开了80的用户密码认证也是可以的。因为这一步主要是和设备通讯,执行指令,这些指令检查设备的型号、IOS、环境等看是否便于安装SDM。

image

 

检查完成以后会弹出窗口,选择安装类型,

image

 

然后下一步就开始安装了,注意到,这里SDM开始启动路由器的RCP协议。

image

 

查看连接发现打开了514端口,这个端口正是RCP的端口。

image

然后RCP打开以后,就是复制文件,复制完成安装就结束了

 

在这里我做了个测试,因为有个疑惑,众所周知的是,22和514协议都是可以传输文件的,22用的是ssh,具备远程执行命令和传输文件的能力,514是Rcmd,也就是RSH和RCP这一家,也具备远程执行命令和传输文件的能力;那么SDM究竟用了哪个协议执行命令,哪个协议传输文件呢?

 

我的测试是,如果中途用防火墙关闭22端口的出连,将会报“和路由器通讯出错,终止安装”。如果关闭514端口,会报“复制文件操作失败”,那么很显然,SDM是用22通讯,用514传文件了。

 

那么RCP协议应该是具备用户密码就可以对路由器上传输和下载任意文件了。下面我们来尝试RCP传输文件如何实现。

 

前面在测试SDM安装的时候,我中途关闭了SSH访问,结果SDM装了一半,并且在路由器上留下了如下信息:

ip rcmd remote-host sdmR15dbbdf7 192.168.0.31 L15dbbdf7 enable 
ip rcmd remote-host sdmR1e877f9a 192.168.0.31 L1e877f9a enable 
ip rcmd remote-username sdmR1e877f9a

 

显然,RCP的配置就是按照如上语句来的,通过查看资料,对RCP有了解后开始RCP的测试:

 

首先测试什么都不开的情况下在winxp上执行rcp客户端,这里要说明的是,win7以后的系统都不具备rcp客户端,xp和2K等系统是自带的,同时,ubuntu等系统也因为安全问题,采用scp,不再采用rcp。

执行如下命令,去路由器上取一个vlan.dat文件,这个文件是路由器上flash卡里的。

C:\>rcp 10.110.0.1.cisco:vlan.dat vlan.dat 
> 10.110.0.1:连接被拒绝

 

下面打开RCP:

因为我在设备上有个cisco的15级用户,我就配置:

(config)#ip rcmd rcp-enable

(config)#ip rcmd remote-host cisco 192.168.0.39 cisco enable

其实其他参数还是好理解的,这里有点鄙视cisco等设备厂商,对参数的解释非常的“专业”。第一个cisco这个地方要填写的是“Local username”,第二个cisco填写的是“Remote username”,那么正常思维下,本地用户名,自然是在设备上已有的用户,远程用户,自然是登陆过来时候要带过来认证的用户,也就是在客户端输入的用户了。其实不然,再往下看。

 

C:\>rcp 10.110.0.1.cisco:vlan.dat vlan.dat 
10.110.0.1: Permission denied.

被拒绝了,而且没有要求输密码。

 

我们来看看是不是配置出现了错误:

#debug ip packet

#terminal monitor

通过这样的操作返回了很多无用的信息,我们换种方式:

#debug ip tap rcmd

再次测试rcp获取文件,debug信息出来了:

*Mar 26 03:51:30.931: RCMD: [514 <- 192.168.0.39:1023] recv \0 
*Mar 26 03:51:31.127: RCMD: [514 &lt;- 192.168.0.39:1023] recv Administrator\0cisco\0rcp -f home.shtml\0 
*Mar 26 03:51:31.127: RCMD: [514 &lt;- 192.168.0.39:1023] recv -- cisco 192.168.0.39 Administrator not in trusted hosts database 
*Mar 26 03:51:31.127: RCMD: [514 -> 192.168.0.39:1023] send <BAD,Permission denied.>\nsh run

 

原来,路由器发现192.168.0.39,就是我执行rcp客户端的机器来访问的时候,带过来的Administrator这个东东不在路由器的信任列表里。那我前面设置的cisco用户等于是毫无意义,换句话说,这个用户是winxp系统登陆时候的用户,也是rcp客户端默认携带的用户信息,这样的细节,rcp协议和cisco的参数里均没有详细描述,只有的unix等系统里是通过.rhosts等文件进行标注,同时互联网上的相关路由器rcp上传下载的资料基本没有,有的都是在说怎么通过路由器往别的rcp服务器上备份和恢复配置和IOS,这让很多人都无所适从。这样的情况下,就必须将winxp客户端的Administrator配置进路由器的Remote username参数,同时Local username是个可以和路由器本地用户毫无关系的账户,比如aa。

 

我们测试下: 
(config)#ip rcmd remote-host aa 192.168.0.39 Administrator enable

客户端执行:

C:\&gt;rcp -a 10.110.0.1.aa:home.tar home.tar

顺利完成,查看debug信息:

*Mar 26 04:01:29.315: RCMD: [514 <- 192.168.0.39:1023] recv \0 
*Mar 26 04:01:29.511: RCMD: [514 &lt;- 192.168.0.39:1023] recv Administrator\0aa\0rcp -f home.tar\0 
*Mar 26 04:01:29.511: RCMD: [514 -> 192.168.0.39:1023] send <OK> 
*Mar 26 04:01:29.511: RCMD: [514 <- 192.168.0.39:1023] recv &lt;OK> 
*Mar 26 04:01:29.547: RCP: [514 -&gt; 192.168.0.39:1023] send C0644 112640 home.tar\n 
*Mar 26 04:01:29.551: RCMD: [514 <- 192.168.0.39:1023] recv &lt;OK> 
*Mar 26 04:01:29.811: RCP: [514 -&gt; 192.168.0.39:1023] send 112640 bytes 
*Mar 26 04:01:29.811: RCMD: [514 -&gt; 192.168.0.39:1023] send <OK> 
*Mar 26 04:01:29.815: RCMD: [514 <- 192.168.0.39:1023] recv &lt;OK> 
 

都正常了。

以上是RCP的内容,接下来顺便测试下SCP,相对于RCP,SCP是加密传输的,要求路由器开启SSH。

我们配置:

(config)#line vty 0 15

(config-line)#transport input ssh

 

通过putty客户端里的scp工具:

D:\Greensoft\putty&gt;PSCP.EXE -scp cisco@10.110.0.1:vlan.dat vlan.dat 
Using keyboard-interactive authentication. 
Password: 
Administratively disabled.

原来光打开ssh还不够,系统里还有一个指令。

(config)#ip scp server enable

 

测试下载

D:\Greensoft\putty&gt;PSCP.EXE -scp cisco@10.110.0.1:vlan.dat vlan.dat 
Using keyboard-interactive authentication. 
Password: 
vlan.dat                  | 0 kB |   0.9 kB/s | ETA: 00:00:00 | 100%

测试上传

D:\Greensoft\putty&gt;PSCP.EXE -scp putty.chm cisco@10.110.0.1:putty.chm 
Using keyboard-interactive authentication. 
Password: 
putty.chm                 | 420 kB |  84.1 kB/s | ETA: 00:00:00 | 100%

这样就都正常了。这里SCP比RCP好的是,有链接的速率等信息显示。缺点是,scp的普适性也不是很强,低端的型号和IOS上也没有scp服务器的指令。

同时要说明的是,rcp和scp等都是可以连带子目录一起下载的,参数是-r。

 

到这里,通过rcp和scp协议就实现了对路由器flash卡进行远程任意读写操作。

 

 

最后要备注一个东东,在试验过程中,需要清除一个路由器上的配置,发现只要有生成过pki方面的东西,最终在配置里会存在一个:

crypto pki trustpoint TP-self-signed……

crypto pki certificate chain TP-self-signed……一大堆密钥的配置

这个东西在删除nvram中所有cer文件也不行,重启就会出现,这应该是出于安全的目的,毕竟ca发的证书不能随意被误删吧。





     本文转自 beansprouts 51CTO博客,原文链接:http://blog.51cto.com/netwalk/526765,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
精彩回顾 | 大数据+AI Meetup 2020 第二季 ·上海站(附PPT下载)
开源届前浪后浪全员凶猛,合体也成为主流。此次 Meetup 分享了 Flink 和 Iceberg,Flink 和 Hologres,Flink 和 Pulsar 的深度融合探索实践、Spark 高性能向量化查询引擎解析、热度冲天的数据湖存储架构选型、bilibili 和滴滴的 kafka 平台优化方案;还 有Elasticsearch、开源流式存储系统 Pravega 的企业级实践。
3883 0
精彩回顾 | 大数据+AI Meetup 2020 第二季 ·上海站(附PPT下载)
开源届前浪后浪全员凶猛,合体也成为主流。此次 Meetup 分享了 Flink 和 Iceberg,Flink 和 Hologres,Flink 和 Pulsar 的深度融合探索实践、Spark 高性能向量化查询引擎解析、热度冲天的数据湖存储架构选型、bilibili 和滴滴的 kafka 平台优化方案;还 有Elasticsearch、开源流式存储系统 Pravega 的企业级实践。
5933 0
快速搭建平头哥安全处理器的可信执行环境
平头哥安全处理器系列包括CK802T, CK803T, CK804T和E902T等, 结合平头哥SoC安全机制,搭建的芯片平台具有良好的兼容性和健壮性。基于平头哥TEE OS接口的扩展性和移植性,可以方便地快速地移植到其他平头哥安全处理器的芯片平台上。本文介绍了如何在不同的芯片平台快速创建可信执行环境的步骤和注意点,帮助设计开发者迅速的在平头哥安全处理器上开发TEE OS。
552 0
快速搭建平头哥安全处理器的可信执行环境
平头哥安全处理器系列包括CK802T, CK803T, CK804T和E902T等, 结合平头哥SoC安全机制,搭建的芯片平台具有良好的兼容性和健壮性。基于平头哥TEE OS接口的扩展性和移植性,可以方便地快速地移植到其他平头哥安全处理器的芯片平台上。本文介绍了如何在不同的芯片平台快速创建可信执行环境的步骤和注意点,帮助设计开发者迅速的在平头哥安全处理器上开发TEE OS。
1801 0
《DNS稳定保障系列2--全局流量管理保障异地容灾》
背景 随着互联网的快速发展,为保证业务的持续高可用,同城多活、异地多活已成为各企业的不二之选。服务设置多中心,中心内部多地址负载,是多数企业采用的常规做法。这种情况下,如何对流量进行有效控制以达到最佳的用户访问效率变得尤为重要。
1355 0
【windows】windows系统下,在任务管理器的进程选项卡中查看PID/任务管理器怎么查看PID
PID,就是windows上的进程ID,是一个进程的唯一标识值。   那今天启动JDK跑起来一个项目之后,想要在任务管理器中查看这个JDK所在进程的PID但是看不到。 怎么解决?   1.我在任务管理器的服务中查看上面PID 但是排序之后最大值才是7000多     2.
1223 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载