ルーターやスイッチに誰でもログインできてしまったら、どんなことが起きるでしょうか?
設定を勝手に書き換えられたり、通信を盗み見られたりするかもしれません。装置そのものを守るには、どんな手を打てばよいか考えながら読み進めてください。
装置は「家の玄関」
前回、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 secret や username ... 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
hostnameでホスト名を設定する(SSHの鍵生成に必要)ip domain-nameでドメイン名を設定する(同じく鍵生成に必要)username ... secretでログイン用ユーザーを登録するcrypto key generate rsaでRSA鍵ペアを生成する(この時点でSSHが有効になる)line vty 0 4に入り、login localでローカル認証を指定する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 password と enable 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の仕組みを見ていくよ。