拾い物のコンパス

まともに書いたメモ

CiscoルータからSCPでIOSを抽出する方法メモ

CiscoのルータからIOSを抜き出すときは,FTP経由での方法をよく聞く.
そこでFTPを試してみたが,上手く行かない.
デバッグする気が起きなかったから,SCPで抜き出してみることにした.
コピー先のWindows上でサーバを立てるのは手間だから,ルータ上でSSHサーバを立てて,SCP接続する.
コマンドメモがうろ覚えだから,上手く行かなかったら訂正してくれると嬉しい.

なにがしたかったか

Cisco機器からIOSのバイナリファイルを抜き出すと,それを使ってGNS3でネットワーク構成を仮想でいじることができる.
というわけでバイナリが欲しかった.

準備

最初はいつも通りにシリアルコンソールで接続する.
加えて,ルータのLANポートのどれかとPCをLANケーブルで接続しておく.
挿したらPCからTelnetでログインしておく.
OSがWindowsならputtyから,putty.zipをダウンロード・適当なところに解凍する. 今回はデスクトップに解凍した前提で進めていく.
dirコマンドで一応自分が抜き出そうとしているIOSのバージョンを確認しておいたほうが良い.
GNS3でサポートしていないバージョンの可能性がある.

ルータ側での設定

CiscoルータからWindowsがインストールされた端末にコピーする.
ただ打ち込んでいくだけ.
大きな流れは以下の通り.

  1. IPを割り振る
  2. ユーザを作成
  3. SSH鍵の作成(今回は1024bit)・有効化
  4. SCPを許可
$ enable
$ configure terminal

$ interface vlan 1
$ ip address 192.168.1.100 255.255.255.0

$ username cisco privilege 15 password cisco
$ line vty 0 4
$ login local
$ hostname R1 # ここは適当で良い
$ ip domain-name r1.com # ここは適当で良い
$ crypto key generate rsa modulus 1024
$ ip ssh version 2
$ ip ssh time-out 120
$ ip ssh authentication-retries 3
$ ip scp server enable

$ aaa new-model
$ aaa session-id unique
$ aaa authentication login default local # 認証にローカルDBを利用
$ aaa authorization exec default local none # ログイン認可方式として,全ての回線にローカルDBを使用して認可する.
$ enable secret cisco

ルータ側の設定はこれで終了.
ポイントはaaa 認証部分.
aaaAuthentication/Authorization/Accountingに関する制御コマンド.
認証方式を全てローカルのDBに設定しないと,認証が上手く行かない.

IOSを抜き出す

ルータ側で

$ dir flash

IOSのファイル名を確認する.
Windowsでプロンプトを開く.

$ cd C:\Users\Desktop\putty # puttyを解凍したフォルダに移動
$ pscp.exe -scp cisco@192.168.1.100:???.bin C:\Users\poppycompass\Desktop\IOS

これでダウンロードできる.
Linuxならscpを打つだけで良い.

失敗談

失敗した事例をメモしておく.

  • SCP: [22 -> 192.168.1.100:?????] send Privilege denied.が出る.

    • 多分,ユーザの権限が十分じゃない.username cisco privilege 15 password ciscoなどで権限を最高にしていないか(show privilegeで確認),aaaを設定していない
  • WinSCPでSCPできない

    • ログインターミナルの関係でエラーが出て上手く行かない.Linuxのターミナル使うか,puttyCUI(pscp.exe)を使おう.
  • スイッチで同じ設定してみたが,上手く行かない

    • 原因不明.知りたい.

おまけ

抜き出してから,IOSのバージョンがGNS3のサポート対象外であることに気づいた.
呆然としつつ,fileコマンドすると ELF 32-bit MSB executable, Sunplus S+core7 RISC, version 1 (SYSV), statically linked, strippedと出て驚いた.
どうやらIOSの正体はELF形式のプログラムのようだ.Wikiにも碌に情報が載っていない.
これはまたマニアックなアーキテクチャを使っているな・・・.

OSがELFってことは,BIOSかそれに準ずるプログラムがELFを実行できるということだろうか.
OSを実行するためのOSでも存在するのかな.
謎だけ残ってしまった.

所感

SCPだとファイアウォールの無効化とかがいらないから,躓きが少なくて良い.

参考

Memo.html[Cisco]IOSイメージの抽出(追記2017/4/3)

Cisco IOS セキュリティ コマンド リファレンス:コマンド D ~ L、Cisco IOS XE Release 3SE(Catalyst 3850 スイッチ) - ip scp server enable [Cisco Catalyst 3850 シリーズ スイッチ] - Cisco

Solved: SCP error - Cisco Community

IOSでSCPを利用する : TEMPEST社長ブログ

AAAとは