ぎじゅつめも

とある工学系学生が学んだことをメモするだけのブログです。

Ciscoルータ設定作業めも2【認証/telnet/ssh編】

勉強用にサービス統合型ルータ Cisco 1812-Jを購入し、設定を行ってみた際のめもです。学生の身には少し手痛い出費でしたが、色々勉強になりました。
コンソール接続、telnet接続、ssh接続と、それぞれのパスワードの設定の仕方について記載してます。
passwordコマンドとsecretコマンドの違いとクラックについても少し触れています。
もし何か記載に間違いがあれば指摘していただければ幸いです。

1. 用語

1.1. サービス統合型ルータ(Integrated Services Router,ISR)とは?

1812-JをはじめとするCiscoルータは、サービス統合型ルータと呼ばれています。これまで様々なサービスを異なるアプライアンスで実現していたものを統合して、ワンボックスで提供できるルータです。
Cisco公式サイトでは、"スイッチング、ワイヤレス LAN、WAN 最適化、セキュリティ、ネットワーク解析、音声など"を統合できると説明されています。ワンボックス化することで管理・運用すべきリソースを減らし、ネットワークの単純化や省電力化ができます。

2. 作業環境

2.1. ノード

Ciscoルータ 1812-J
・コンソール用PC(Windows 8.1、Tera Termインストール済み)

2.2. ケーブルなどの機材類

・コンソールケーブル
・LANケーブル
・LANアダプタ搭載USB3.0ハブ

2.3. 接続

今回はコンソール接続で設定した後にtelnet/ssh接続を試みるだけですので複雑な接続はしません。
参考までに以下に接続内容を示します。
f:id:white-hawk:20180226003211p:plain
LANポートのないノートPCから接続するため、LANアダプタ搭載USBハブを介しています。
また、コンソールケーブルはRJ-45⇔USBのものを利用しています。

3. 作業内容

3.1. I/FへのIPアドレス割り当て

後の作業のため、事前にIPアドレスを割り当てておきます。
1812-JのFast Ethernet 0に192.168.0.100/24を割り当てます。(※前回説明したので省略形で記述)
Ethernetポート0のI/Fコンフィギュレーションモードへ移行し、デフォルトではI/Fはダウンしているので、no shutdownで立ち上げます。
さらにip address [IPアドレス] [サブネットマスク]でIPアドレスを割り振っています。
f:id:white-hawk:20180222233516p:plain

show running-configで設定確認。
f:id:white-hawk:20180222233905p:plain

PCに静的に192.168.0.101/24を割り当ててルータのFE0に接続し、pingを飛ばしてみます。
f:id:white-hawk:20180223005124p:plain
ちゃんと届いてますね。

3.2. ルータへの接続方法

Ciscoルータへアクセスするための接続方法を確認します。
背面のポートを見ればわかりますが一応コマンドでも確認します。
特権モードに入り、show line。
f:id:white-hawk:20180222211840p:plain
Tty(Tele-typewriter)の種類が3つ表示されています。

CTY

コンソールポート経由の端末への接続。
この回線は"line console 0"で表す。

AUX

AUX(補助)ポート経由の端末への接続。
この回線は"line aux 0"で表す。

VTY

LANポート経由のtelnet/sshを受け付ける仮想端末への接続。
複数のtelnet/ssh接続を同時に受け付けられるようにVTYも複数個あります。
この回線は"line vty 0 4"等の表し方をします。

また、本機にはありませんでしたがもう1種類存在します。

TTY

モデムとの接続で利用されます

3.3. パスワード設定

3.3.1 パスワード設定方法

パスワードの設定方法には以下の2種類の方法があります。
①passwordコマンドで設定する方法(非推奨!今回は歴史をなぞる意味で一部使用していますが実際は②の方法を利用してください。
②secretコマンドで設定する方法(推奨。今回は3.3.4の項目で手順説明。)

①の場合、configファイルに平文でパスワードが載ってしまうので、service password-encryptionコマンドを実行して暗号化を施す必要があります。しかしながら暗号化後のテキストから簡単に元のパスワードをクラックできてしまいます。
例えば"crack type 7 password"等とGoogle検索するとクラックのためのWebサービスが見つかります。実際にパスワードをクラックしてみた結果もこのブログに記載します(次の3.3.2の項目で記載)。

②の場合、パスワードのMD5一方向ハッシュ値を生成してconfigファイルに記載します。ハッシュ値に一致する文字列を特定することは①よりは難しいので、こちらの方がベターとされています。一応レインボーテーブルを使って推定するようなことは可能なので、これを少し意識してパスワードを作成した方が良いかも…

ちなみにpasswordコマンドとsecretコマンドの両方が設定された場合、secretコマンドのパスワードが優先される模様。
参考サイト様*1

3.3.2 パスワードのみの認証

前述した各接続方法に対してパスワードを設定できます。ここでは、試験的にpasswordコマンドでパスワードを設定してみます。
以下の画像では、まず特権モードからグローバルコンフィギュレーションモードへ移動。
その後、line console 0でコンソール回線のコンフィグモードへ移動しています。
※ここで仮にauxのコンフィグをしたい場合はline aux 0などとすればよいです。
さらにパスワード(ここではtestpass)を設定しています。
その後loginで、接続時のパスワード認証を有効にしています。
f:id:white-hawk:20180222214900p:plain

show running-configで、設定が反映されたか確認してみます。
f:id:white-hawk:20180222215915p:plain
該当部分は以下です。
f:id:white-hawk:20180222220050p:plain
ここまででctyにはパスワードが設定できましたがauxやvtyはパスワードが設定されていません。しかし同様の手順で登録できます。

exitしてctyアクセスを試みるとパスワード入力を求められる。
f:id:white-hawk:20180222220449p:plain
無事パスワード認証が機能している。
※パスワード暗号化は次の3.3.3にて

3.3.3. telnet接続を行う

vty接続に対してパスワード認証をオンにするとtelnet接続が可能になります。
※ただし特権モードにパスワードが設定されていないとtelnet接続できない模様

次の画像では、まず特権モード移行時のパスワード(testpass)をpasswordコマンドで設定しています(実運用時はsecretで行うこと)。そして、vty接続に対し、パスワードだけでなく、ユーザ名(user1)とパスワード(testpass)の組を設定しています。
※今回は便宜上パスワードをtestpassで統一していますが、実際は異なるパスワードを設定してください。
f:id:white-hawk:20180223011342p:plain
username [username] password [password]でユーザ名とパスワードを登録します(もしちゃんとsecretを使う場合は、passwordの部分をsecretに置き換えるだけでOKです)。
vtyのコンフィグモードへ入り、login localを実行することでユーザ名/パスワードをログイン時に利用できるようになります。

show running-configで設定が正しく済んでいるか確認します。
まずはユーザ名とパスワードの組みについて見てみます。
f:id:white-hawk:20180223012121p:plain
正しく設定されているようですね。passwordの後ろの数字0は、パスワードが平文であることを示しています。この数字が7の場合、パスワードが暗号化されていることを示します。今回は平文でそのまま表示されています。
もし暗号化した方が良いのでservice password-encryptionを実行してみます。
f:id:white-hawk:20180223012613p:plain
これを実行後、再度show running-configでuser1のパスワードを確認。
f:id:white-hawk:20180223012721p:plain
数字は7になっており、パスワードもtestpassではなく暗号化されたものになっています。

vtyの設定を見てみると、次のように変更が適用されていました。
f:id:white-hawk:20180223011656p:plain
transport input [all/none/telnet]はリモートアクセスプロトコルを制限するもの。allの場合すべて許可し、noneの場合すべて拒否し、telnetの場合はtelnetのみ許可します。今回はallなのでtelnetを許可しています。

PCでTera Termを起動し、ルータにtelnet接続を試みます。
f:id:white-hawk:20180223010251p:plain
ユーザ名とパスワードが要求され、登録した内容で認証できています。

ちなみに、前述したとおりpasswordコマンドで生成された平文をservice password-encryptionで暗号化したものは簡単にクラックできます。試しにクラックサイト*2に暗号文を入力してみます。
f:id:white-hawk:20180226020200p:plain
そして送信すると...
f:id:white-hawk:20180226020405p:plain
確かに平文testpassが特定されていますね。
ここまで非推奨のpasswordコマンドでの設定を行ってみましたが、secretコマンドで行いたい場合基本passwordの部分をsecretで実行すれば良いです。次の3.3.4からは実際に推奨のsecretコマンドでのパスワード設定の方法を記述します。

3.3.4. ssh接続

secretコマンドを用いてssh認証のための設定を行いたいと思います。
下記ではユーザとパスワードのセット(admin/testpass)を仮想端末の接続(line vty 0 4)に設定しています。
f:id:white-hawk:20180308094054p:plain

さらにsshで必要なRSA暗号鍵のための設定を行います。
まずはホスト名とドメイン名を設定します。(これを設定していなければRSA鍵を生成できないようです。)
f:id:white-hawk:20180308094542p:plain

次にRSA鍵を生成します。生成にあたって鍵のサイズを要求されるので入力します。ここでは2048としています。
f:id:white-hawk:20180308095032p:plain

次にsshのバージョンを指定します。
f:id:white-hawk:20180308095129p:plain

もし特権モードのsecretが設定されていなければ以下のようにenable secret [password]で行います。今回はパスワードをsecretpassとしています。
f:id:white-hawk:20180308095314p:plain
これで設定は終了です。

それでは外部から実際にアクセスしてみましょう。
Tera Termからユーザ名とパスワードでssh接続。
f:id:white-hawk:20180308095608p:plain
f:id:white-hawk:20180308095652p:plain
実際に特権モードへも移行できました。

4.1. 設定の保存

Cisco IOS(CiscoのOS)では、電源を落とすと消える一時的な設定変更内容がrunning-configに存在しています。
電源再投入後も設定を引き継ぎたい場合、running-configの内容をstartup-configへコピーする必要があります。
従って、設定を保存したい場合次のコマンドを実行します。
f:id:white-hawk:20180223014315p:plain
コピー先ファイル名が正しいか確認されるのでEnterを押下し[OK]が出力されれば設定保存完了です。

さいごに

今回はCiscoのサービス統合型ルータで初歩的なコマンドの実行を行いました。今後も引き続き設定と動作検証を行っていく予定です。
あともしFW筐体(FortiGate 50E)を入手できればその設定の様子と攻撃の試験を行ってみる予定です。学生なので資金不足なのがつらいですが、買えるように頑張ります。