第 10章SSHプロトコル

SSH™ユーザーは、ホストシステムへリモートからログインが可能となります。rlogintelentと異なり、クリアテキストのパスワードを侵入者が集められない様に、SSHはログインセッションを暗号化します。

SSHは、コマンドシェルを介して、他のシステムにリモートからログインする一般的な方法を置き換えようとするものです。関連する、scpと呼ばれるプログラムは、ftprcpといった、ホスト間でファイルをコピーする古いプログラムを置き換えます。というのは、これら古いアプリケーションは、クライアントとサーバー間の接続で送られるパスワードを暗号化しないためです。なるべく使用を避けなければいけません。セキュアな方法を使ってリモートから他のシステムにログインすれば、ユーザーシステム、リモートシステムともセキュリティ上のリスクが軽減されます。

はじめに

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

SSHでは、次の保護手段が取られます。

SSHプロトコルは送受信する全てのものを暗号化するので、セキュアでないプロトコルを、セキュアにするために使われます。port forwardingと呼ばれる方法を用いると、SSHサーバーは、POPのようなセキュアでないプロトコルをセキュアにする経路となり、システム全体やデータの安全性が増大します。

Red Hat Linux 7.3には、一般的なOpenSSHパッケージ(openssh)、OpenSSHサーバーのパッケージ(openssh-server)とクライアントのパッケージ(openssh-clients)も含まれています。OpenSSHのインストール方法と配置方法については、オフィシャル Red Hat Linux カスタマイズガイドOpenSShを参照してください。また、OpenSSHパッケージには、OpenSSLパッケージ(openssl)が必要です。OpenSSLは、OpenSSHによる暗号化通信をサポートする、いくつかの重要な暗号ライブラリをインストールします。

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]

偽装とは、侵入者がネットワーク上の信用できるホストからネットワークパケットを送信しているように見せることを意味します。