第20章 OpenSSH
SSH™ (または Secure SHell)は、クライアント/サーバーアーキテクチャーを使用した 2 つのシステム間のセキュアな通信を容易にし、ユーザーがリモートでサーバーホストシステムにログインできるようにするプロトコルです。FTP や Telnet などの他のリモート通信プロトコルとは異なり、SSH はログインセッションを暗号化するため、侵入者が接続して暗号化されていないパスワードを収集するのが困難になります。
SSH は、telnet や rsh などのリモートホストへのログインに使用される、以前の、安全ではない端末アプリケーションを置き換えるように設計されています。scp と呼ばれる関連プログラムは、ホスト間でファイルをコピーするために設計された rcp などの古いプログラムに代わるものです。このような旧式アプリケーションは、クライアントとサーバーとの間で送信するパスワードを暗号化しないため、可能な限り使用しないようにしてください。リモートシステムへのログインにセキュアな方法を使用すると、クライアントシステムとリモートホストの両方のリスクが軽減されます。
20.1. SSH の機能
SSH プロトコルは、以下のような保護手段を提供します。
- クライアントは、初回接続後に、以前接続したサーバーと同じサーバーに接続していることを確認できます。
- クライアントは、強力な 128 ビット暗号化を使用して、サーバーへ認証情報を送信します。
- セッション中に送受信された全データは、128 ビット暗号化を使用して転送されるため、傍受された送信データの暗号解読と読み取りは非常に困難になります。
- クライアントは X11 を転送できます。[4] サーバーからのアプリケーション。X11 転送 と呼ばれるこの手法は、ネットワーク上でグラフィカルアプリケーションを使用する安全な手段を提供します。
SSH プロトコルは送受信するものをすべて暗号化するため、セキュアでないプロトコルをセキュアにするために使用できます。SSH サーバーは、ポート転送 と呼ばれる技術を使用して、POP などのセキュリティー保護されていないプロトコルをセキュアにし、システム全体のシステムおよびデータセキュリティーを強化できます。
OpenSSH サーバーおよびクライアントは、サーバーマシンとクライアントマシン間のトラフィックの仮想プライベートネットワークと同様のトンネルを作成するように設定することもできます。
最後に、OpenSSH サーバーおよびクライアントは、Kerberos ネットワーク認証プロトコルの GSSAPI 実装を使用して認証するように設定できます。Kerberos 認証サービスの設定に関する詳細は、「Kerberos」 を参照してください。
Red Hat Enterprise Linux には、一般的な OpenSSH パッケージ(
openssh
)と、OpenSSH サーバー(openssh-server
)およびクライアント(openssh-clients
)のパッケージが含まれます。OpenSSH パッケージには、OpenSSL パッケージ(openssl
)が必要です。このパッケージは、重要な暗号化ライブラリーを複数インストールし、OpenSSH が暗号化された通信を提供するようにします。
20.1.1. SSH を使用する理由
Nefarious コンピューターユーザーは、システムにアクセスするためにネットワークトラフィックの中断、傍受、および再ルーティングを可能にするさまざまなツールを利用できます。一般的には、これらの脅威は以下のとおり分類できます。
- 2 つのシステム間の通信の 傍受:このシナリオでは、攻撃者は通信者間で渡される情報をネットワーク上のどこかに置くことができます。攻撃者は情報を傍受して維持したり、情報を変更したり、目的の受信者に送信したりする可能性があります。この攻撃は、一般的なネットワークユーティリティーであるパケットスニッファーを使用してマウントできます。
- 特定ホストの偽装 - このストラテジーを使用すると、攻撃者のシステムは、送信の対象となる受信者として機能するように設定されています。このストラテジーが機能すると、ユーザーのシステムは間違ったホストと通信していることを認識しません。
いずれの手法でも、潜在的な機密情報を傍受することが可能です。その傍受が悪意のある理由で行われる場合には、多大な損害をもたらしかねません。
リモートシェルログインとファイルコピー用に SSH を使用すると、こうしたセキュリティーの脅威を大幅に軽減できます。これは、SSH クライアントとサーバーがデジタル署名を使用してそれぞれの ID を確認するためです。さらに、クライアントシステムとサーバーシステムとの間の通信はすべて暗号化されます。各パケットはローカルシステムとリモートシステムのみに知られている鍵を使用して暗号化されるため、通信のいずれか一方の ID をスプーフィングする試みは成功しません。