SSH(セキュアシェルプロトコル)とは何ですか?

SSH は Secure Shell の略で、アプリケーション層に基づくセキュリティ プロトコルです。 SSH を使用してリモート サーバーとデスクトップに安全にアクセスし、さまざまなコマンドを実行します。つまり、ログイン情報と SSH サーバー アクセスがあれば、システム全体をリモートで制御できます。セキュア シェル (SSH) は、送信前にデータを暗号化することで、Telnet を置き換え、安全でないリモート シェル上でもリモート システムにアクセスできるように設計された暗号化ネットワーク プロトコルだからです。

ポート 22 は SSH の標準ポートとして使用されます。主に UNIX のようなシステム向けに設計されていますが、OpenSSH をインストールすることで Windows システムでも動作します。

FTP、ポップ、テルネットなどの従来の Web サービスは、パスワードとデータをネットワーク上で平文で送信するため、本質的に安全ではありません。そのため、悪意のある人々がこれらのパスワードやデータを簡単に傍受できます。

また、これらのサービスプログラムのセキュリティ検証方法には、中間者攻撃を受けやすいという弱点があります。いわゆる「ミドルマン」攻撃手法とは、「ミドルマン」が実サーバーになりすまして、サーバーに渡したデータを受け取り、そのデータを実サーバーに渡すふりをすることを意味します。サーバーとユーザーの間のデータ転送が「仲介者」によって変更されると、重大な問題が発生します。

SSH を使用すると、すべての送信データを暗号化できるため、中間者攻撃が不可能になり、DNS スプーフィングや IP スプーフィングも防ぐことができます。 SSH を使用すると、データ転送が圧縮されるため、転送速度が向上するというさらなる利点もあります。 SSH には多くの機能があり、Telnet を置き換えることができ、FTP、PoP、さらには PPP に安全な「チャネル」を提供できます。

SSH は主に次の 3 つの部分で構成されます。

トランスポート層プロトコル [SSH-TRANS]

サーバー認証、機密性、完全性を提供します。さらに、圧縮を提供する場合もあります。 SSH-TRANS は通常、TCP/IP 接続上で実行されますが、他の信頼できるデータ ストリーム上でも使用される場合があります。 SSH-TRANS は、強力な暗号化テクノロジー、パスワード ホスト認証、整合性保護を提供します。このプロトコルの認証はホストに基づいており、ユーザー認証は行われません。上位層のユーザー認証プロトコルは、このプロトコルの上に配置されるように設計できます。

ユーザー認証プロトコル [SSH-USERAUTH]

クライアントのユーザー認証をサーバーに提供するために使用されます。上記のトランスポート層プロトコル SSH-TRANS で実行されます。 SSH-USERAUTH が開始されると、下位層プロトコルから (最初の鍵交換の交換ハッシュ H から) セッション識別子を受け取ります。セッション識別子はこのセッションを一意に識別し、秘密キーの所有権を証明するためにトークンに適用されます。 SSH-USERAUTH は、下位層プロトコルがプライバシー保護を提供しているかどうかも知る必要があります。

接続プロトコル「SSH-CONNECT」

ユーザー認証プロトコル上で実行され、対話型ログイン セッション、リモート コマンド実行、TCP/IP 接続の転送、および X11 接続の転送を提供します。

クライアント側の SSH セキュリティ検証レベル

クライアント側から見ると、SSH は 2 レベルのセキュリティ検証を提供します。

第 1 レベル (パスワードベースのセキュリティ検証)

アカウントとパスワードを知っていれば、リモート ホストにログインできます。送信されるデータはすべて暗号化されますが、接続したいサーバーに接続していることを保証することはできません。他のサーバーが実際のサーバーを装っている、つまり「仲介者」によって攻撃されている可能性があります。

第 2 レベル (キーベースのセキュリティ検証)

キーに依存する必要があります。つまり、自分用のキーのペアを作成し、アクセスする必要があるサーバーに公開キーを置く必要があります。 SSH サーバーに接続している場合、クライアント ソフトウェアはキーを使用してセキュリティ検証をサーバーに要求します。サーバーがリクエストを受信したら、サーバーのホーム ディレクトリで公開キーを探し、送信した公開キーと比較します。 2 つのキーが一致する場合、サーバーは公開キーを使用して「チャレンジ」を暗号化し、クライアント ソフトウェアに送信します。クライアント ソフトウェアは「チャレンジ」を受信すると、秘密キーを使用してそれを復号化し、サーバーに送信します。

このように、キーのパスワードを知っている必要があります。ただし、第 2 レベルでは、第 1 レベルと比べて、ネットワーク上でパスワードを送信する必要がありません。

2 番目のレベルでは、送信されるすべてのデータが暗号化されるだけでなく、「仲介者」攻撃も不可能になります (仲介者は秘密キーを持っていないため)。ただし、ログインプロセス全体には数秒かかる場合があります。

SSH はクライアント ソフトウェアとサーバー ソフトウェアで構成されます。

SSH には、1.x と 2.x という 2 つの互換性のないバージョンがあります。 SSH 2.x を使用するクライアントは、SSH 1.x サーバーに接続できません。 OpenSSH 2.x は、SSH 1.x と 2.x の両方をサポートします。

サーバーはバックグラウンドで実行され、クライアントからの接続要求に応答するデーモンです。サーバーは通常、公開キー認証、キー交換、対称キー暗号化、および非セキュア接続を含むリモート接続の処理を提供する SSHD プロセスです。

クライアントには、ssh プログラムと、SCP (リモート コピー)、slogin (リモート ログイン)、sftp (安全なファイル転送) などの他のアプリケーションが含まれます。

その動作メカニズムは、大まかに言うと、ローカル クライアントがリモート サーバーに接続リクエストを送信するというものです。サーバーは、要求されたパッケージと IP アドレスを確認し、キーを SSH クライアントに送信し、さらにキーをサーバーに送り返します。それ以来、接続が確立されています。 SSH 1.x と SSH 2.x では、接続プロトコルにいくつかの違いがあります。

安全なトランスポート層接続が確立されると、クライアントはサービス要求を送信します。ユーザー認証が完了すると、2 回目のサービス要求が送信されます。これにより、新しく定義されたプロトコルが上記のプロトコルと共存できるようになります。接続プロトコルは、安全な対話型セッション シェルを確立し、独自の TCP/IP ポートと X11 接続を転送する (「トンネリング テクノロジ」) ための標準的な方法を備えた、使用できるさまざまなチャネルを提供します。

SSH はスーパー サーバー ( inetd ) を利用せずに単独で動作するように設計されていますが、SSH プロセスは inetd 上の tcpd 経由で実行できますが、これはまったく必要ありません。 SSH サーバーを起動すると、sshd が起動し、デフォルトの 22 ポートでリッスンします (# ps -waux | grep sshd を使用して、sshd が正しく実行されているかどうかを確認できます)。 inetd によって開始された SSH ではない場合、SSH は常に接続要求を待ちます。リクエストが受信されると、SSH デーモンは子プロセスを生成し、接続処理を実行します。

また、SSH は、バークレー バージョンの r コマンド セットを置き換えるように設計されています。また、同様の構文も継承します。その結果、ユーザーは SSH の使用と r コマンド セットの使用の違いに気づきません。これを使用すると、いくつかの素晴らしいことができます。 SSH を使用すると、安全でないネットワーク経由でメッセージを送信する場合でも心配する必要はありません。 Telnet および POP チャネル モードも使用でき、SSH PPP で仮想プライベート ネットワーク (仮想プライベート ネットワーク、チャネル VPN) を作成するために使用できます。 SSH は、Kerberos やセキュア ID カードなど、他のいくつかの認証方法もサポートしています。
ただし、著作権と暗号化アルゴリズムの関係で、将来的には Telnet や POP3 の代わりに SSH を使用する人が増えることが予想されます。

ご覧になりたいかもしれません: