はじめに
ネットワーク上のデバイス間のデータ伝送は、デバイスが適切に通信するために規制する必要があります。送信は、ネットワークプロトコルと呼ばれる一連のルールを使用して実行されます。
Telnetやrshなどの初期のネットワークプロトコルは、悪意のあるサイバー攻撃に対する十分な保護を提供していませんでした。より安全なネットワーク通信方法の必要性は、SSHプロトコルの作成に影響を与えました。
このチュートリアルでは、SSHとは何か、SSHが使用される理由、およびSSHの仕組みについて説明します。
SSHとは何ですか?
SSH(Secure Shellの略)は、2台のコンピューターがリモートで接続するための安全な方法を提供するネットワークプロトコルです。 SSHは暗号化を採用して、ハッカーが接続された2つのデバイス間のトラフィックを解釈できないようにします。
SSHは3つの異なるレイヤーで構成されています:
- トランスポート層 認証中および認証後に、クライアントとサーバー間の安全で安全な通信を確立します。データの暗号化、復号化、および整合性の保護を監視します。さらに、データの圧縮とキャッシュを提供することにより、データ交換を高速化するのに役立ちます。
- 認証レイヤー サポートされている認証方法をクライアントに伝達します。また、ユーザー認証プロセス全体を実行します。
- 接続レイヤー 認証が成功した後、マシン間の通信を管理します。通信チャネルの開閉を処理し、複数のセッションに複数のチャネルを許可します。
SSHは何に使用されますか?
SSHは、マシン間の情報転送にセキュリティの層を提供します。 SSHの重要な使用例は次のとおりです。
- リモートアクセス– SSHは、ユーザーとプロセスの暗号化されたリモート接続を保証します。
- ファイル転送 – SSHによって管理される安全なファイル転送プロトコルであるSFTPは、ネットワークを介してファイルを操作するための安全な方法を提供します。
- X11転送 –ユーザーは、サーバーでホストされるXアプリケーションをクライアントマシンから実行できます。
- ポート転送–クライアントのポートをサーバーのリモートポートにマッピングすることにより、SSHはTCP/IPなどの他のネットワークプロトコルを保護するのに役立ちます。
- トンネリング –このカプセル化技術は、安全なデータ転送を提供します。トンネリングは、VPNの便利な代替手段として機能できるため、セキュリティで保護されていないネットワークからビジネスに敏感なオンライン資料にアクセスするのに役立ちます。
- ネットワーク管理 – SSHプロトコルは、ネットワークインフラストラクチャおよびシステムの他の部分を管理します。
SSHはどのように機能しますか?
SSHは、クライアントサーバーベースのプロトコルです。これは、プロトコルにより、情報またはサービスを要求するデバイス(クライアント)が別のデバイス(サーバー)に接続できることを意味します。
クライアントがSSH経由でサーバーに接続すると、マシンをローカルコンピューターのように制御できます。
サーバーには、ネットワークを監視する指定されたTCPポートがあり、クライアントが接続を初期化するのを待ちます。クライアントが接続してSSHコマンドの発行を開始する前に、認証プロセスに合格する必要があります。
SSH接続の確立
クライアントマシンで次のコマンドを実行して、SSH接続を開始します。
ssh [username]@[server_ip_or_hostname]
サーバーがリクエストを受信すると、セッション暗号化ネゴシエーションが開始されます。
セッション暗号化ネゴシエーション
接続要求を受信すると、サーバーはクライアントにサポートされている暗号化プロトコルのセットを送信します。サーバーは、認証方法として公開鍵を使用します。
クライアントは、プロトコルを独自のセットと比較します。一致するプロトコルがある場合、マシンは接続を確立するためにそれを使用することに同意します。
クライアントは、最初の接続試行時に、サーバーの公開鍵をシステムに保存されている保存された秘密鍵と比較します。キーが一致する場合、クライアントとサーバーは、SSHセッション中に通信するために対称暗号化を使用することに同意します。この目的のために、Diffie-Hellman(DH)鍵交換アルゴリズムを採用した非対称暗号化プロセスを使用して通信します。
DHアルゴリズムを使用すると、マシンが連携して、パブリックネットワーク上で暗号化キーを安全に作成できます。キーを生成するために、マシンは次の手順を実行します。
- マシンは2つの数値に同意します :モジュラスとベース番号。ブルートフォースキーの復号化を防ぐために、選択されたモジュラスは少なくとも600桁の素数です。
- マシンは個別に1つの番号を選択します そしてそれを2つの公的な数を含む方程式に適用します。
- サーバーとクライアントは計算値を交換します 。
- 各マシンが計算を実行する 他から受け取った結果を使用します。
上記の手順を実行することにより、両方のマシンが同じ値、つまり秘密鍵を計算します。最後に、サーバーはアクセスを要求するユーザーの認証を試みます。
ユーザー認証
使用される最も一般的な2つのSSHユーザー認証方法は、パスワードとSSHキーです。クライアントは暗号化されたパスワードをサーバーに安全に送信します。ただし、パスワードは、強力なパスワードを作成する理由に対するユーザーの認識に依存するため、危険な認証方法です。
非対称に暗号化されたSSH公開鍵と秘密鍵のペアがより適切なオプションです。クライアントがメッセージを復号化すると、サーバーはクライアントにシステムへのアクセスを許可します。
SSHキーペアを生成するには、 ssh-keygen
と入力します ターミナルで。その結果、システムはキーを生成して保存します。
このプロセスの詳細については、UbuntuでSSHキーを生成する方法を参照してください(プロセスは、すべてのLinuxディストリビューションとMac OSで基本的に同じです)。
SSH暗号化テクノロジーの説明
SSHは、マシン間の通信中に3つのデータ暗号化タイプを使用します。これらは次のとおりです。
- 対称暗号化
- 非対称暗号化
- ハッシュ。
対称暗号化
対称暗号化は、2台のマシンが交換する単一のキーを生成します。次に、マシンは暗号化と復号化の両方にキーを使用します。この方法は迅速で、リソースを大量に消費することはなく、SSHはセッションごとに使用します。
クライアントとサーバーがSSHセッションに使用するアルゴリズムをネゴシエートするときは常に、サーバーがサポートするクライアントのリストの最初のアルゴリズムを選択します。
非対称暗号化
マシンが暗号化を実行するために、公開と秘密の2つの異なるが数学的に関連するキーを使用する場合、データは非対称的に暗号化されます。暗号化の設定に参加したクライアントマシンは、秘密鍵を使用して情報を復号化できます。
SSHは、ユーザー認証プロセス中など、一時的な非対称キーを使用して対称キーを交換します。
ハッシュ
SSHはハッシュを使用して、データパケットが送信元から送信されているように見えるかどうかを検証します。 SSHでハッシュを生成するために使用されるハッシュアルゴリズムは、メッセージ認証コード(MAC)とハッシュメッセージ認証コード(HMAC)です。
ハッシュアルゴリズムは、データパケットを使用して一意のハッシュ文字列を作成します。パケットを送信するマシンは、常にハッシュ値と一緒にパケットを送信します。
受信側のマシンは、ハッシュの作成に使用されたアルゴリズムを認識しており、それをデータに適用できます。目的は、計算されたハッシュ値が同じになるかどうかを確認することです。取得したハッシュ値が送信者のハッシュと異なる場合、転送中にデータが破損しました。