STAGE 05 / セキュリティの基本

装置を守る:パスワードとSSH

考えてみよう

ルーターやスイッチに誰でもログインできてしまったら、どんなことが起きるでしょうか?

設定を勝手に書き換えられたり、通信を盗み見られたりするかもしれません。装置そのものを守るには、どんな手を打てばよいか考えながら読み進めてください。

装置は「家の玄関」

前回、CIAと多層防御という考え方を学びました。今回はその第一歩、ルーターやスイッチという装置そのものを守るデバイスハードニングを扱います。装置は、ネットワークという家の玄関です。玄関の鍵がかかっていなければ、いくら家の中を整理整頓しても意味がありません。まずは玄関、つまり装置へのログインをしっかり守りましょう。

パスワードで保護する

特権EXECモードへの昇格を守るコマンドが enable secret です。

Router(config)# enable secret Str0ngP@ss

enable secret で設定したパスワードは、設定ファイル上で自動的に暗号化(ハッシュ化)されます。古い enable password というコマンドもありますが、こちらは平文で保存されるため、現在は基本的に enable secret を使います。

ユーザーEXECモードへのログイン(コンソールやVTY回線)にもパスワードを設定できますが、username コマンドでユーザー登録し、ログイン時にローカルデータベースを参照させる方法が推奨されます。

Router(config)# username admin secret Str0ngP@ss
Router(config)# line vty 0 4
Router(config-line)# login local

login local を指定すると、VTY回線(Telnet/SSHでの仮想端末接続)へのログイン時に、ローカルに登録した username のID・パスワードで認証されます。

service password-encryption

enable secretusername ... secret は自動的に暗号化されますが、それ以外の一部のパスワード(回線パスワードなど)は設定ファイル上に平文で残ることがあります。これらもまとめて暗号化するのが次のコマンドです。

Router(config)# service password-encryption

ただし、この暗号化は簡易的なもの(Type 7)で、専用ツールで簡単に復号できてしまう点には注意が必要です。本当に重要なパスワードは、必ず secret 系のコマンド(Type 8/9などの強固なハッシュ)で設定します。

SSHの設定手順

Telnetは通信が平文のため、パスワードも盗聴されてしまいます。リモート管理には暗号化通信のSSHを使うのが基本です。SSHを有効にするには、次の順番で設定します。

Router(config)# hostname R1
R1(config)# ip domain-name example.com
R1(config)# username admin secret Str0ngP@ss
R1(config)# crypto key generate rsa
R1(config)# line vty 0 4
R1(config-line)# login local
R1(config-line)# transport input ssh

  1. hostname でホスト名を設定する(SSHの鍵生成に必要)
  2. ip domain-name でドメイン名を設定する(同じく鍵生成に必要)
  3. username ... secret でログイン用ユーザーを登録する
  4. crypto key generate rsa でRSA鍵ペアを生成する(この時点でSSHが有効になる)
  5. line vty 0 4 に入り、login local でローカル認証を指定する
  6. transport input ssh で、VTY回線への接続方法をSSHのみに限定する

transport input ssh を指定しない場合、初期状態やデバイスによってはTelnetも許可されたままになるため、SSHのみに限定するこの一文が重要です。hostname → domain-name → 鍵生成 → transport input ssh という順番は、そのまま覚えてしまいましょう。

banner motdで注意喚起する

ログイン時にメッセージを表示する banner motd(Message Of The Day) も、法的な観点から重要です。

Router(config)# banner motd #
Warning: Unauthorized access is prohibited.
#

# のように、メッセージに含まれない文字を区切り記号(デリミタ)として使います。「無許可のアクセスを禁止する」といった警告文を表示しておくことで、不正アクセスがあった際の法的措置の根拠にもなります。

確認問題

Telnetではなく、SSHを使ってリモート管理すべき理由は何でしょうか?

答えを見る

Telnetは通信内容が平文で送られるため、パスワードやコマンドの内容を盗聴されるおそれがあります。SSHは通信が暗号化されるため、盗聴されても内容を読み取られにくく、安全にリモート管理できます。

確認問題

SSHを有効にするために crypto key generate rsa を実行したところ、エラーになって鍵が生成できませんでした。事前に設定しておくべきものは何でしょう?

答えを見る

答えはホスト名(hostname)とドメイン名(ip domain-name)です。RSA鍵の名前は「ホスト名+ドメイン名」から作られるため、初期値のままでは鍵を生成できません。SSH設定の手順「hostname → ip domain-name → crypto key generate rsa → transport input ssh」は、順序ごと問われる定番問題です。

試験でのポイント

CCNA試験では、SSH設定の順番(hostname → ip domain-name → crypto key generate rsa → transport input ssh)が抜き出し問題や並べ替え問題として問われやすいポイントです。特に「hostnameとdomain-nameを先に設定しないと鍵が生成できない」という依存関係を理解しているかが狙われます。また、enable passwordenable secret の違い(暗号化されるかどうか)、service password-encryption が簡易的な暗号化にすぎないことも定番の出題です。transport input ssh を忘れるとTelnetでも接続できてしまう、という運用上の落とし穴も押さえておきましょう。

ゆみちゃん
ゆみ

enable secret、username+login local、SSHの設定手順(hostname→domain-name→crypto key generate rsa→transport input ssh)、banner motd——装置の玄関を守る基本セットだよ。私も昔、hostnameを設定し忘れて鍵が生成できずに焦った経験があるから、この順番はしっかり覚えてね。次は、こうしたログイン管理をもっと体系的に行うAAAの仕組みを見ていくよ。