第 10章SSHプロトコル

本章では、SSH™プロトコルの長所、リモートシステムとの安全な接続を確立する際に発生するイベントのシーケンス、SSHのさまざまな層、そして、システムに接続しているユーザーが確実にSSHを使用する方法を紹介します。

一般に、シェル(telnetrloginrsh)を介してリモートから別のシステムにログインしたり、ホスト(ftprcp)間でファイルをコピーしたりする方法は、クライアントとサーバー間の接続で送られるデータを暗号化しないので、避けなければいけません。SSHや暗号化された仮想プライベートネットワークを使用しているリモートホストにのみ接続するようにするべきです。安全な方法を使ってリモートから他のシステムにログインすれば、ユーザーシステム、リモートシステムともセキュリティ上のリスクが軽減されます。

はじめに

SSH(Secure Shellの略)は、2つのシステム間で安全な接続を確立するためのプロトコルです。SSHプロトコルで、クライアントマシンはサーバーとの接続を開始します。SSHでは、次の保護手段が取られます。

特に実行しているサービスが多い場合は、サーバーもSSHも利用します。ポートフォワーディングを使用すると、安全性に欠けるプロトコル(たとえばPOP)が暗号化され、リモートマシンとの安全な通信を確立することができます。SSHにより、通常は公衆網上での送信に危険を伴うさまざまなタイプの通信を比較的簡単に暗号化することができます。

Red Hat Linux 7.2には、OpenSSHパッケージ(openssh)のほかに、OpenSSHサーバーのパッケージ(openssh-server)とクライアントのパッケージ(openssh-clients)も含まれています。OpenSSHパッケージをインストールしておかなければ、サーバーパッケージとクライアントパッケージを動作させることはできません。Red Hat LinuxシステムへのOpenSSHのインストール方法と配置方法については、オフィシャル Red Hat Linuxカスタマイズガイドを参照してください。

OpenSSHパッケージには、OpenSSLパッケージ(openssl)が必要です。OpenSSLは、OpenSSHによる暗号化通信をサポートする、いくつかの重要な暗号ライブラリをインストールします。OpenSSHパッケージをインストールする前に、opensslパッケージをインストールしておいてください。

オープンソースのアプリケーションや自由に利用できるアプリケーションを含め、SSHプロトコルを使用できるクライアントプログラムとサーバープログラムはたくさんあります。現在使用されている主要なほとんどすべてのオペレーティングシステムに合わせて、各種のSSHクライアントバージョンが用意されています。システムに接続しているユーザーがRed Hat Linuxを実行していない場合でも、そのユーザーのオペレーティングシステムに固有のSSHクライアントを探し、使用することができます。

SSHを使用する理由

ネットワークトラフィック問題としては、パケットの盗聴、DNSやIPの偽装[2]、偽のルーティング情報の公開などが挙げられます。一般的に、これらの問題を分類すると次のようになります。

  • 2つのシステム間の通信の干渉この場合は、ネットワーク上の通信エンティティ間のどこかに第三者が介在し、その通信エンティティ間で受け渡しを行っている情報がコピーされます。介在している第三者は、情報を横取りしたり、情報を変更してから当初の宛先に送信したりすることもあります。

  • 特定ホストの偽装この場合は、介在しているシステムが、メッセージの本来の宛先であるかのように振る舞います。この手口が成功すると、クライアントはだまされたことに気づかずに、トラフィックが正しく所定の宛先に届いているものと勘違いして、介在するシステムと通信し続けることになります。

どちらの手口でも結果的に情報が横取りされ、不快な思いをすることになります。LAN上のすべてパケットを盗聴された場合でも、不当な複製ホストを指すようにDNSサーバーがハックされた場合でも、いずれにしても大きな被害を受ける可能性があります。

リモートシェルログインとファイルコピーにSSHを使用すれば、これらのセキュリティ問題を大幅に減らすことができます。サーバーのデジタル署名により、サーバーの同一性を確認できます。パケットはそれぞれ暗号化されるため、クライアントシステムとサーバーシステムの間に介入しても、2つのシステム間の通信全体を使用することはできません。各パケットは、ローカルシステムとリモートシステムしか知らない鍵を使用して暗号化されるので、サーバー側、クライアント側のいずれかのシステムを偽装しようとしても成功しません。

注意

[1]

X11とは、X11R6ウィンドウディスプレイシステムのことです(旧称はX)。Red Hat Linuxには、XFree86という、X11R6をベースとする、幅広く使用されているオープンソースのX Window Systemが組み込まれています。

[2]

偽装とは一般に、実際にはそのシステムとは関係ないのに、そのシステムの所有者であるかのように装うことを意味します。