アーカイブ

2011年04月

カテゴリ:

今回はSCPを利用したファイルの転送を設定します。以前のIOSはftp-serverコマンドを利用してFTPサーバとして稼動させることが出来ましたが、現在は通常利用出来ません。代わりにより安全なSCPを使います。SCPはSSHの機能の一つで、暗号化した状態でファイルを転送しますのでFTPより安全です。

SCPを利用するには、SSHが必要です。まず、SSHを有効にします。

R1(config)#ip domain-name example.com
R1(config)#crypto key generate rsa modulus 1024

F0/0はR2(12.12.12.2)に接続されており、F0/1はLANでLinuxサーバと接続されています。

R1(config)#do sh ip int b
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            12.12.12.1      YES manual up                    up
FastEthernet0/1            192.168.0.100   YES manual up                    up

まず認証のためにAAAを有効にします。

R1(config)#aaa new-model

AAAでauthentication loingとauthorization execを有効します。今回はローカル認証を利用します。

R1(config)#aaa authentication login default local
R1(config)#aaa authorization exec default local

認証に使うユーザを作成します。ユーザ名とパスワード共、ciscoにしました。privilegeの設定に注意が必要です。レベルによってファイルの保存がエラーになります。

R1(config)#username cisco privilege 15 secret cisco

最後にip scp server enableでSCPを有効にします。SSHを有効にしただけではSCPは利用できません。

R1(config)# ip scp server enable

接続の確認のためにデバグを有効します。

R1#debug ip scp
Incoming SCP debugging is on

まずLinuxにあるファイル(scp-test.txt)をR1に転送します。ここではルータのflashに保存を実行しています。ファイル名(from_linux)まで指定します。

$ cat scp-test.txt
File from Linux to IOS.
$ scp scp-test.txt cisco@192.168.0.100:flash:from_linux
The authenticity of host '192.168.0.100 (192.168.0.100)' can't be established.
RSA key fingerprint is 1d:a4:f5:d8:f8:88:6c:03:41:2c:b7:e2:d7:da:d1:51.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.100' (RSA) to the list of known hosts.
Password: ← パスワードを入力
scp-test.txt                                  100%   24     0.0KB/s   00:00

R1のログを確認し、届いたファイルをmoreコマンドで表示しています。

R1#
Apr 25 07:53:26.823: SCP: [22 -> 192.168.0.180:34063] send <OK>
Apr 25 07:53:26.843: SCP: [22 <- 192.168.0.180:34063] recv C0644 24 scp-test.txt
Apr 25 07:53:26.855: SCP: [22 -> 192.168.0.180:34063] send <OK>
Apr 25 07:53:26.875: SCP: [22 <- 192.168.0.180:34063] recv 24 bytes
Apr 25 07:53:27.071: SCP: [22 <- 192.168.0.180:34063] recv <OK>
Apr 25 07:53:27.075: SCP: [22 -> 192.168.0.180:34063] send <OK>
Apr 25 07:53:27.079: SCP: [22 <- 192.168.0.180:34063] recv <EOF>
R1#
R1#dir flash:
Directory of flash:/

   12  -rw-          24  Apr 25 2011 16:53:27 +09:00  from_linux

16777212 bytes total (16499660 bytes free)
R1#more flash:from_linux
File from Linux to IOS.

IOSからSCPを利用するにはcopyコマンドを利用します。下記はrunning-configをコピーする例です。

R2#copy running-config scp://cisco@12.12.12.1/
Address or name of remote host [12.12.12.1]?
Destination username [cisco]?
Destination filename [r2-confg]?
Writing r2-confg
Password:
← パスワードを入力
!
1289 bytes copied in 14.320 secs (90 bytes/sec)

転送されていることが分かります。

R1#dir flash:
Directory of flash:/
〜略〜
   15  -rw-        1289  Apr 25 2011 17:00:09 +09:00  r2-confg
〜略〜
R1#more flash:r2-confg
!
! Last configuration change at 15:13:53 JST Mon Apr 25 2011
!
version 12.4
〜略〜

ANA機体工場見学の写真

カテゴリ:

ANAの機体工場見学に行きました。間近で見る飛行機は本当に大きくてビックリします。いずれJALの方も行ってみたい。

Boeing 777-300

__.JPG

Boeing 747-400

Boeing 767-300

Boeing 767-300

Boeing 767-300

カテゴリ:

現在ではCCNAでもルータのアクセスに関してSSHの問題が出るようです。Linuxなどではかなり前からtelnetは標準で無効であり、当然といえば当然ですが…。

今回はSSHの基本的な利用を確認します。初期値ではSSHは無効になっています。

R1#sh ip ssh
SSH Disabled - version 1.99
%Please create RSA keys (of atleast 768 bits size) to enable SSH v2.
Authentication timeout: 120 secs; Authentication retries: 3

SSHを利用するにはRSAキーを作成します。

R1(config)#crypto key generate rsa modulus 1024
% Please define a domain-name first.

ただ上記の結果から分かるとおり、あらかじめドメイン名の指定が必須です。

R1(config)#ip domain-name example.com
R1(config)#crypto key generate rsa modulus 1024
The name for the keys will be: R1.example.com

% The key modulus size is 1024 bits
% Generating 1024 bit RSA keys, keys will be non-exportable...[OK]

この時点でSSHで接続が可能となります。

R1(config)#
Apr 20 05:52:11.391: %SSH-5-ENABLED: SSH 1.99 has been enabled

R1(config)#do sh ip ssh
SSH Enabled - version 1.99
Authentication timeout: 120 secs; Authentication retries: 3

接続を行うユーザを作成します。

R1(config)#username cisco secret cisco

そしてローカル認証を有効にします。

R1(config)#line vty 0 15
R1(config-line)#login local
R1#debug ip ssh client
SSH Client debugging is on

では隣接するR2(12.12.12.2)よりR1(12.12.12.1)にSSHでログインします。R2では特に設定は必要ありません。またWindowsなどからでももちろん利用できます。

IOSでsshコマンドを利用するには-lオプションでユーザ名を指定します。

R2#ssh -l cisco 12.12.12.1

Password: ← パスワードを入力

R1>

この時、R1では下記のようなログが表示されます。

R1#
Apr 20 06:26:07.135: SSH0: sent protocol version id SSH-1.99-Cisco-1.25
Apr 20 06:26:07.147: SSH0: protocol version id is - SSH-1.99-Cisco-1.25

このまま利用するにはあまりセキュリティ的に望ましくないので、まずアクセスリストを設定します。この設定により12.12.12.0/24からの接続のみが許可されます。

R1(config)#access-list 1 per 12.12.12.0 0.0.0.255
R1(config)#line
R1(config)#line vty 0 15
R1(config-line)#access-class 1 in
R1(config-line)#do sh ip acce 1
Standard IP access list 1
    10 permit 12.12.12.0, wildcard bits 0.0.0.255 (2 matches)

この時点ではTELNETが有効です。せっかくSSHを有効にしたのに、このままでは意味がありません。SSHのみでの接続とするにはtransport inputコマンドを利用します。

R1(config)#line vty 0 15
R1(config-line)#transport input ssh

この時点でR2からのTELNETが利用できくなりました。

R2#telnet 12.12.12.1
Trying 12.12.12.1 ...
% Connection refused by remote host

初期値の設定ではSSHのバージョン1とバージョン2の両方が有効ですが、古いバージョン1をあえて利用する必要はありません。無効にします。sshコマンドで-vオプションを利用するとバージョンを指定できます。

R2#ssh -l cisco -v 1 12.12.12.1

下記はバージョン1で接続されたときのR1のログです。

Apr 20 06:35:27.827: SSH0: sent protocol version id SSH-1.99-Cisco-1.25
Apr 20 06:35:27.831: SSH0: protocol version id is - SSH-1.5-Cisco-1.25

R1でバージョン2のみを許可するように変更します。

R1(config)#do sh ip ssh
SSH Enabled - version 1.99
Authentication timeout: 120 secs; Authentication retries: 3
R1(config)#ip ssh version ?
  <1-2>  Protocol version

R1(config)#ip ssh version 2
R1(config)#do sh ip ssh
SSH Enabled - version 2.0
Authentication timeout: 120 secs; Authentication retries: 3

するとR2からバージョン1での接続が不可能になり、かなり安全な設定となりました。

R2#ssh -l cisco -v 1 12.12.12.1

[Connection to 12.12.12.1 aborted: error status 0]

R1(config)#
Apr 20 06:38:33.671: SSH0: Session terminated normally
Apr 20 06:38:35.567: SSH0: sent protocol version id SSH-2.0-Cisco-1.25
Apr 20 06:38:35.579: SSH0: receive failure - status 0x07
Apr 20 06:38:35.683: SSH0: Session disconnected - error 0x07

SSHの設定をする時にはip ssh logging eventsを有効にすると便利です。

R1(config)# ip ssh logging events
R1(config)#
Apr 20 06:46:32.455: SSH0: sent protocol version id SSH-2.0-Cisco-1.25
Apr 20 06:46:32.463: SSH0: protocol version id is - SSH-1.99-Cisco-1.25
Apr 20 06:46:32.567: %SSH-5-SSH2_SESSION: SSH2 Session request from 12.12.12.2 (tty = 0) using crypto cipher 'aes128-cbc', hmac 'hmac-sha1' Succeeded
Apr 20 06:46:33.739: %SSH-5-SSH2_USERAUTH: User 'cisco' authentication for SSH2 Session from 12.12.12.2 (tty = 0) using crypto cipher 'aes128-cbc', hmac 'hmac-sha1' Succeeded

IOSでのhttp serverの設定

カテゴリ:

今回はIOSでhttp serverの設定を行います。R1のF0/1に設定してある192.168.0.100に対してクライアント(Windows 7)のブラウザから接続をします。

R1#show ip interface brief
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/1            192.168.0.100   YES manual up                    up

初期値ではhttp serverは無効になっています。

R1#show ip http server status
HTTP server status: Disabled
HTTP server port: 80
HTTP server authentication method: enable
HTTP server access class: 0
HTTP server base path:
HTTP server help root:
〜略〜

ip http serverコマンドで有効になります。

R1(config)#ip http server
R1(config)#do sh ip http server status
HTTP server status: Enabled
〜略〜

ではブラウザよりhttp://192.168.0.100/に接続します。ユーザ認証を促すプロンプトが表示されますが、level_15_accessのサーバと表示されることに注意してください。

Http1_2

ユーザ名は無し、パスワードはenableパスワードを入力することでログイン出来ます。

Http2

画面上のリンク、Monitor the routerを利用することでブラウザ上からIOSのコマンドを実行することが可能です。

Http3

現在の設定ではアクセス制限がなく、望ましい状態とは言えません。下記はaccess-listを利用し、192.168.0.0/24からのみアクセス出来るようにする例です。

R1(config)#access-list 1 permit 192.168.0.0 0.0.0.255
R1(config)#ip http access-class 1
R1(config)#do sh ip http server status | i class
HTTP server access class: 1

次にユーザ名を利用した認証を確認します。まずユーザciscoをパスワードciscoで作成します。下記のようにprivilegeを指定しない場合、privilege levelは1となります。

R1(config)#username cisco secret cisco
R1(config)#do sh run | i username
username cisco secret 5 $1$wLzt$1ERo8cQ7l4xSpjzVTJoMv1

ユーザ認証を有効にするため、ip http authentication localを実行します。

R1(config)#ip http authentication local
R1(config)#do sh ip http server status | i method
HTTP server authentication method: local

この状態でデバグを有効にし、ログインを実行するとどうなるか確認します。

R1#debug ip http authentication
HTTP Server Authentication debugging is on

認証に必要なレベル15ではないためログインは失敗し、下記のように表示されます。

Apr 11 06:37:46.139: HTTP: Authentication failed for level 15

ここでユーザciscoのprivilegeを15に変更します。

R1(config)#username cisco privilege 15
R1(config)#do sh run | i username
username cisco privilege 15 secret 5 $1$wLzt$1ERo8cQ7l4xSpjzVTJoMv1

問題なくログイン出来るようになりました。

Apr 11 06:40:20.423: HTTP: Priv level granted 15

http serverのパスを指定し、その場所にファイルを置くとそのままブラウザで表示可能です。

R1(config)#ip http path flash:
R1(config)#do sh ip http server status | i path
HTTP server base path: flash:

コマンドの結果はredirectを利用すると直接指定した場所に保存できます。

R1#show ip http server statistics | redirect flash:http.txt

上記のファイルは http://192.168.0.100/http.txt で表示可能です。このように、普通のWebサーバとして出来ることが分かります。

Http4_2

カテゴリ:

今回はRIPの認証を確認します。R2とR3はシリアルケーブルで直接接続(23.23.23.0/24)されています。

R2(config)#do sh ip int b
Interface                  IP-Address      OK? Method Status                Protocol
Serial1/2                  23.23.23.2      YES manual up                    up
Loopback0                  17.17.2.2       YES NVRAM  up                    up

R3(config)#do sh ip int b
Interface                  IP-Address      OK? Method Status                Protocol
Serial1/3                  23.23.23.3      YES manual up                    up
Loopback0                  17.17.3.3       YES NVRAM  up                    up

R2(config)#do pin 23.23.23.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 23.23.23.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/26/72 ms

まず認証なしでRIPを設定します。CCIE(R&S)ではRIPはバージョン2のみの利用ですので、version 2は必須コマンドです。

R2(config)#router rip
R2(config-router)#version 2
R2(config-router)#no auto-summary
R2(config-router)#network 23.23.23.2
R2(config-router)#network 17.17.2.2

OSPFのように、インターフェイスのIPアドレスをそのまま入力してもクラスフルのネットワークアドレスに自動的に置き換わる点に注意してください。

R2(config-router)#do sh run | s rip
router rip
version 2
network 17.0.0.0
network 23.0.0.0
no auto-summary

RIPの設定を確認するには"show ip protocols"や"show ip rip database"を使います。

"show ip protocols"によりバージョン2が利用されていることや、指定したネットワークが有効であることが確認できます。

R2#show ip protocols
Routing Protocol is "rip"
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Sending updates every 30 seconds, next due in 10 seconds
  Invalid after 180 seconds, hold down 180, flushed after 240
  Redistributing: rip
  Default version control: send version 2, receive version 2
    Interface             Send  Recv  Triggered RIP  Key-chain
    Serial1/2             2     2
    Loopback0             2     2
  Automatic network summarization is not in effect
  Maximum path: 4
  Routing for Networks:
    17.0.0.0
    23.0.0.0
  Routing Information Sources:
    Gateway         Distance      Last Update
  Distance: (default is 120)

"show ip rip database"では、現在自分のネットワークしか表示されていないことが分かります。

R2#show ip rip database
17.0.0.0/8    auto-summary
17.17.2.0/24    directly connected, Loopback0
23.0.0.0/8    auto-summary
23.23.23.0/24    directly connected, Serial1/2

デバグを有効にして、同じコマンドをR3にも入力します。しばらくするとR2からのアップデートが確認できます。

R3#debug ip rip
R3(config-router)#do sh run | s rip
router rip
version 2
network 17.0.0.0
network 23.0.0.0
no auto-summary

Apr  4 07:02:06.631: RIP: received v2 update from 23.23.23.2 on Serial1/3
Apr  4 07:02:06.635:      17.17.2.0/24 via 0.0.0.0 in 1 hops

R2で確認するとRouting Information SourcesにR3のIPアドレスが表示されることが分かります。

R2#show ip protocols | begin Sources
  Routing Information Sources:
    Gateway         Distance      Last Update
    23.23.23.3           120      00:00:23
  Distance: (default is 120)

R3のLo0のネットワークアドレスが追加されています。

R2#show ip rip database
17.0.0.0/8    auto-summary
17.17.2.0/24    directly connected, Loopback0
17.17.3.0/24
    [1] via 23.23.23.3, 00:00:12, Serial1/2
23.0.0.0/8    auto-summary
23.23.23.0/24    directly connected, Serial1/2

では認証を利用するにあたり、キーチェーンを作成します。ここではキーチェーン名を"RIP"としキー番号は"1"としました。キーの文字列は"CISCO"です。同じものをR3でも作成します。キーの文字列の最後に余計なスペースが入ると認証エラーとなりますので注意してください。

R2(config)#key chain RIP
R2(config-keychain)#key 1
R2(config-keychain-key)#key-string CISCO
R2(config-keychain-key)#do sh key chain
Key-chain RIP:
    key 1 -- text "CISCO"
        accept lifetime (always valid) - (always valid) [valid now]
        send lifetime (always valid) - (always valid) [valid now]

まずテキストモードで認証を有効にしてみます。認証はテキストモードが初期値のため、"ip rip authentication mode text"は入れても入れなくても同じです。

R2(config-keychain-key)#int s1/2
R2(config-if)#ip rip authentication key-chain RIP

R2(config-if)#do sh ip prot | b Interface
    Interface             Send  Recv  Triggered RIP  Key-chain
    Serial1/2             2     2                    RIP
    Loopback0             2     2

この時、R3では下記のように表示されます。

Apr  4 07:30:40.923: RIP: ignored v2 packet from 23.23.23.2 (invalid authentication)

R3でも認証を有効にしてみます、テキストモードのためキーの文字列"CISCO"がそのまま表示されることが分かります。

R3(config-router)#int s1/3
R3(config-if)#ip rip authentication key-chain RIP

Apr  4 07:32:04.659: RIP: received packet with text authentication CISCO
Apr  4 07:32:04.659: RIP: ignored v2 packet from 23.23.23.2 (invalid authentication)

より望ましい認証である、MD5モードに変更します。

R2(config)#int s1/2
R2(config-if)#ip rip authentication mode md5

R3(config)#int s1/3
R3(config-if)#ip rip authentication mode md5

確かにMD5が利用されていることが分かります。RIPではこのようにdebugコマンドを利用して、認証を確認します。

Apr  4 07:52:35.035: RIP: received packet with MD5 authentication

このページのトップヘ

見出し画像
×