电脑技术学习

配置路由器和交换机上的安全Shell运行的Cisco IOS

dn001

  前言
  本文讨论配置和调试安 全外壳(SSH)在运行的Cisco IOS软件的版本支持 SSH® Cisco 路由器或交换机。欲知关于特定 版本和软件镜象的,下面请参阅更多信息。
  
  使 用的组件
  本文的信息根 据以下的软件及硬件版本。
  
  Cisco IOS 3600软件(C3640-IK9S-M),版本 12.2(2)T1
  
  SSH介绍到 IOS platforms/images如下所示。
  
  SSH版本1.0 (SSHv1)服务器在起动在12.0.5.S 的一 些IOS platforms/images被引入了。
  
  SSH客户端在开始在12.1.3.T的一些IOS platforms/images介绍。
  
  SSH终端线 路接入(亦称反向Telnet)在开始在12.2.2.T的一些 IOS platforms/images被引入。
  
  关 于信息关于SSH技术支持在交换机,参见 如何 配置SSH在运行CatcOs的Catalyst交换机。
  
  关于一张完全特性集列表不同的平台 支持用不同的Cisco IOS版本和,参见 软件 顾问 (注册的用户)。
  
  本文提供的信息在特定实验室环境里从设备被创建了 。用于本文的所有设备开始了以一个缺省(默认)配置。 假如在一个真实网络工作,保证您使用它以前了解所有命令 的潜在影响。
  
  SSHv1与SSHv2
  此时,IOS只支持SSHv1; Cisco没有计划实现 SSHv2。有此的几个原因,如下所述。
  
  Cisco在Cisco IOS实现SSH当IP安全(IPSec) 通过互 联网工程任务组(IETF)被开发。在IPSec 开发过程期间,而 SSH的实施在IOS是更多一项战术措施提供接入路由器一个安全的方 法IPSec 是核心功能。Cisco投入人员维护SSH功能为修正, 但增进将制定要求低优先级。Cisco 做到配置IPSec为获取 所有数据流,包括治理数据流到/从Cisco网络设备。
  
  假如弱点在SSHv1的协议或实施被发 现,将制定他们的复核最优先考虑的事,和所有潜在安全漏洞。 注重Cisco IOS编码不是相同作为代码在UNIX、Windows,或 者所有其他设备查找。同样地,一个编码问题在那些实施之 一中在Cisco IOS很可能不会查找。 另外,不是所有的SSHv1 功能在Cisco实施可以被发现。值得注重,SSH在Cisco IOS不 提供"会话转发",亦不提供建立隧道X11。 缺陷在通用代码 的这些部分不会是一个问题在Cisco IOS。假如任何申明的协 议缺陷回顾表示,SSHv1协议在Cisco IOS是根本上残破的,则Cisco 确定那时移植到SSHv2是否是适当的。
  
  
网络图

  

  测试认证
  测试认证没有 SSH
  我们测试认证没有 SSH首先将确信,认证通过用路由器卡特在添加SSH之前。 认 证可以用运行TACACS+或RADIUS的验证、授权和记帐(AAA)服务器是 带有一个本地用户名/密码或。(认证通过线路密码不是可能 的与SSH。) 下面的示例显示本地认证,让我们远程登录到路 由器带有用户名"cisco" 和密码"cisco"。
  
  !--- aaa new-model causes the local username/passWord on the router
  !--- to be used in the absence of other aaa statements.
  
  aaa new-model
  username cisco password 0 cisco
  line vty 0 4
  
  !--- Instead of aaa new-model, the login local command may be used.
  
  测试认证与 SSH
  对测试认证与SSH, 我们在卡特补充说到前面的语句,启用SSH和测试SSH从PC和UNIX 工作站。
  
  ip domain-name rtp.cisco.com
  
   !--- Generate an SSH key to be used with SSH.
  
   cry key generate rsa
   ip ssh time-out 60
   ip ssh authentication-retries 2
  这时,显示 生成的键, show cry key mypubkey rsa命令应该。在添加SSH配置以后 ,我们测试访问路由器从PC和UNIX 工作站。
  
  可选配置设置
  防止Non-SSH连接
  假如我们想要防止non-SSH连接,我们添加 transport input SSH 在 线路之下对仅SSH连接限制路由器。平直的 (non-SSH) Telnets将拒绝。
  
  line vty 0 4
  
   !--- Prevent non-SSH Telnets.
  
   transport input ssh
  
  我们测 试是确保的non-SSH用户不能远程登录到路由器卡特。
  
  设置IOS 路由器或交换机作为SSH 客户端
  有为启用SSH技术支持要求的四个步骤在IOS路由器。
  
  配置 hostname命令。
  
  配置DNS域。
  
  生成将使用的SSH键。
  
  启用SSH vtys的传输技术支持。
  
  假如我们想要有一次设备操作作为SSH 客户端对其 他,我们能添加SSH到第二个设备,Reed。设备然后在客户端 服务器排列,用作为服务器和Reed的卡特作为客户端。 IOS SSH客户端配置在Reed是相同象为SSH 服务器配置需要 在卡特。
  
  !--- Step 1: Configure hostname if you have not previously done so.
  
  hostname carter
  
  !--- aaa new-model causes the local username/password on the router
  !--- to be used in the absence of other AAA statements.
  
  aaa new-model
  username cisco password 0 cisco
  
  !--- Step 2: Configure the router's DNS domain.
  
  ip domain-name rtp.cisco.com
  
  !--- Step 3: Generate an SSH key to be used with SSH.
  
  cry key generate rsa
  ip ssh time-out 60
  ip ssh authentication-retries 2
  
  !--- Step 4: By default the vtys' transport is Telnet. In this case,
  !--- Telnet has been disabled and only SSH is supported.
  
  line vty 0 4
  transport input SSH
  
  !--- Instead of aaa new-model, the login local command may be used.
  
  测试此,发出以下命令对 SSH从IOS SSH 客户端(Reed)到IOS SSH服务器(卡特):
  
   ssh -l cisco -c 3des 10.13.1.99
  
  添加SSH 终端线路接入
  假如 我们需要出局SSH终端线路验证,我们能为出局反向Telnet配置和测 试SSH通过卡特,作为通用服务器对Philly。
  
  ip ssh port 2001 rotary 1
   line 1 16
    no exec
    rotary 1
    transport input ssh
    exec-timeout 0 0
    modem In Out
    Stopbits 1
  假如Philly附有Carter端口2,我们会SSH 对Philly 通过卡特从Reed用以下命令:
  
   ssh -c 3des -p 2002 10.13.1.99
  
  从 Solaris,我们会使用以下命令:
  
   ssh -c 3des -p 2002 -x -v 10.13.1.99
  
  debug及show命令
  在发出如下 被描述和说明的debug命令 之前,请参阅 重要信息关于Debug命令。 输 出解释器工具支持 某些show命令 (注 册的用户),答应您查看show命令输出分析 。
  
  debug IP SSH - 显示调 试消息为SSH。
  
  show SSH - 显示SSH服 务器连接状态。
  
  carter#show ssh
    Connection  Version Encryption  State       Username
    0      1.5   DES      Session started  cisco
  
  show ip ssh - 显示版 本和配置数据为SSH。
  
  carter#sho ip ssh
    SSH Enabled - version 1.5
    Authentication timeout: 60 secs; Authentication retries: 2
  
  示例调试输出
  注重一些此"好"调试输出包裹对多条线路由于间距注 意事项。
  
  路由器调试
  00:23:20: SSH0: starting SSH control process
  00:23:20: SSH0: sent protocol version id SSH-1.5-Cisco-1.25
  00:23:20: SSH0: protocol version id is - SSH-1.5-1.2.26
  00:23:20: SSH0: SSH_SMSG_PUBLIC_KEY msg
  00:23:21: SSH0: SSH_CMSG_SESSION_KEY msg - length 112, type 0x03
  00:23:21: SSH: RSA decrypt started
  00:23:21: SSH: RSA decrypt finished
  00:23:21: SSH: RSA decrypt started
  00:23:21: SSH: RSA decrypt finished
  00:23:21: SSH0: sending encryption confirmation
  00:23:21: SSH0: keys exchanged and encryption on
  00:23:21: SSH0: SSH_CMSG_USER message received
  00:23:21: SSH0: authentication request for userid cisco
  00:23:21: SSH0: SSH_SMSG_FAILURE message sent
  00:23:23: SSH0: SSH_CMSG_AUTH_PASSWORD message received
  00:23:23: SSH0: authentication sUCcessful for cisco
  00:23:23: SSH0: requesting TTY
  00:23:23: SSH0: setting TTY - requested: length 24, width 80; set:
    length 24, width 80
  00:23:23: SSH0: invalid request - 0x22
  00:23:23: SSH0: SSH_CMSG_EXEC_SHELL message received
  00:23:23: SSH0: starting shell for vty
  
  服务器调试
  注重: 此输出在Solaris 设备 被获取了。
  
  rtp-evergreen.rtp.cisco.com# ssh -c 3des -l cisco -v 10.31.1.99
  rtp-evergreen# /opt/CISssh/bin/ssh -c 3des -l cisco -v 10.13.1.99
  SSH Version 1.2.26 [sparc-sun-solaris2.5.1], protocol version 1.5.
  Compiled with RSAREF.
  rtp-evergreen: Reading configuration data /opt/CISssh/etc/ssh_config
  rtp-evergreen: ssh_connect: getuid 0 geteuid 0 anon 0
  rtp-evergreen: Allocated local port 1023.
  rtp-evergreen: Connecting to 10.13.1.99 port 22.
  rtp-evergreen: Connection established.
  rtp-evergreen: Remote protocol version 1.5,
    remote software version Cisco-1.25
  rtp-evergreen: Waiting for server public key.
  rtp-evergreen: Received server public key (768 bits)
    and host key (512 bits).
  rtp-evergreen: Host '10.13.1.99' is known and matches the host key.
  rtp-evergreen: Initializing random; seed file //.ssh/random_seed
  rtp-evergreen: Encryption type: 3des
  rtp-evergreen: Sent encrypted session key.
  rtp-evergreen: Installing crc compensation attack detector.
  rtp-evergreen: Received encrypted confirmation.
  rtp-evergreen: Doing password authentication.
  cisco@10.13.1.99's password:
  rtp-evergreen: Requesting pty.
  rtp-evergreen: Failed to get local xauth data.
  rtp-evergreen: Requesting X11 forwarding with authentication spoofing.
  Warning: Remote host denied X11 forwarding, perhaps xauth program
    could not be run on the server side.
  rtp-evergreen: Requesting shell.
  rtp-evergreen: Entering interactive session.
  
  错在何处
  下面是示例调试输出从几个不正确的配置。
  
  SSH从SSH 客户端没被编译带有数据加密标准 (DES)
  
  Solaris调试
  rtp-evergreen# /opt/CISssh/bin/ssh -c des -l cisco -v 10.13.1.99
  SSH Version 1.2.26 [sparc-sun-solaris2.5.1], protocol version 1.5.
  Compiled with RSAREF.
  rtp-evergreen: Reading configuration data /opt/CISssh/etc/ssh_config
  rtp-evergreen: ssh_connect: getuid 0 geteuid 0 anon 0
  rtp-evergreen: Allocated local port 1023.
  rtp-evergreen: Connecting to 10.13.1.99 port 22.
  rtp-evergreen: Connection established.
  rtp-evergreen: Remote protocol version 1.5,
    remote software version Cisco-1.25
  rtp-evergreen: Waiting for server public key.
  rtp-evergreen: Received server public key (768 bits)
    and host key (512 bits).
  rtp-evergreen: Host '10.13.1.99' is known and matches the host key.
  rtp-evergreen: Initializing random; seed file //.ssh/random_seed
  rtp-evergreen: Encryption type: des
  rtp-evergreen: Sent encrypted session key.
  cipher_set_key: unknown cipher: 2
  
  路由器调试
  
  00:24:41: SSH0: Session terminated normally
  00:24:55: SSH0: starting SSH control process
  00:24:55: SSH0: sent protocol version id SSH-1.5-Cisco-1.25
  00:24:55: SSH0: protocol version id is - SSH-1.5-1.2.26
  00:24:55: SSH0: SSH_SMSG_PUBLIC_KEY msg
  00:24:55: SSH0: SSH_CMSG_SESSION_KEY msg - length 112, type 0x03
  00:24:55: SSH: RSA decrypt started
  00:24:56: SSH: RSA decrypt finished
  00:24:56: SSH: RSA decrypt started
  00:24:56: SSH: RSA decrypt finished
  00:24:56: SSH0: sending encryption confirmation
  00:24:56: SSH0: Session disconnected - error 0x07
  
  错误密码
  路由器调试
  00:26:51: SSH0: starting SSH control process
  00:26:51: SSH0: sent protocol version id SSH-1.5-Cisco-1.25
  00:26:52: SSH0: protocol version id is - SSH-1.5-1.2.26
  00:26:52: SSH0: SSH_SMSG_PUBLIC_KEY msg
  00:26:52: SSH0: SSH_CMSG_SESSION_KEY msg - length 112, type 0x03
  00:26:52: SSH: RSA decrypt started
  00:26:52: SSH: RSA decrypt finished
  00:26:52: SSH: RSA decrypt started
  00:26:52: SSH: RSA decrypt finished
  00:26:52: SSH0: sending encryption confirmation
  00:26:52: SSH0: keys exchanged and encryption on
  00:26:52: SSH0: SSH_CMSG_USER message received
  00:26:52: SSH0: authentication request for userid cisco
  00:26:52: SSH0: SSH_SMSG_FAILURE message sent
  00:26:54: SSH0: SSH_CMSG_AUTH_PASSWORD message received
  00:26:54: SSH0: password authentication failed for cisco
  00:26:54: SSH0: SSH_SMSG_FAILURE message sent
  00:26:54: SSH0: authentication failed for cisco (code=7)
  00:26:54: SSH0: Session disconnected - error 0x07
  
  SSH客户端发送不支持的(Blowfish) 密码
  路由器调试
  00:39:26: SSH0: starting SSH control process
  00:39:26: SSH0: sent protocol version id SSH-1.5-Cisco-1.25
  00:39:26: SSH0: protocol version id is - SSH-1.5-W1.0
  00:39:26: SSH0: SSH_SMSG_PUBLIC_KEY msg
  00:39:26: SSH0: SSH_CMSG_SESSION_KEY msg - length 112, type 0x03
  00:39:26: SSH0: Session disconnected - error 0x20