ネットワーク上で安全に通信を行う為のプロトコルの事です。
1.SSHの概要
ネットワーク上で安全な通信を行う為のプロトコルやそれに関するツールを含めたものを言います。SSHはリモートマシンへの安全なログイン・コマンド実行及びファイル転送を可能にしています。
以前にSSLについて説明いたしましたが、SSHとSSLの違いについて簡単に説明いたします。
1-1 SSHとSSLの違い
どちらも、セキュアな通信を実現する仕組みとしては同じようなものです。
SSHは主にリモートシステム管理と安全なファイル転送の為に使用します。SSLは主にインターネット上の通信を暗号化して安全に運用する為に使用しています。
1-2 SSH(Secure Shell)
・目的:
主にリモートシステムの管理とセキュアなログイン・コマンド実行・ファイル転送の為に使用しています。
・プロトコル:
SSHプロトコルを用います。
・使用例:
リモートサーバへのログイン
安全なファイルの転送(SCP,SFTP)
・使用ポート番号
デフォルトではTCPポート22を使用します。
・認識方法:
パスワード認証、公開鍵認証、多要素認証(MFA)など。
1-3 SSL(Secure Sockets Layer)
・目的:インターネット上の通信を暗号化して安全にするために使用されていまいす。特にウエブブラウジング(HTTPS)・メール送受信(SMTPS)・その他のプロトコルで使用されています。
・プロトコル:
SSLはTSLに置き換えられていますが、一般的にはTLS/SSLと呼ばれています。
・使用例:
安全なウエブブラウジング(HTTPS)
安全なメール通信(SMTOS,IMAPS)
・ポート番号:
HTTPSはデフォルトでTCPポート443を使用します。
SMTP overSSLはポート465、IPAM overSSLはポート993などとなります。
・認証方法:
サーバ認証が主で、クライアント認証も可能。デジタル証明書をしようして認証を行います。
比較表:
特徴 | SSH | SSL/TLS |
主な用途 | リモートシステム管理、ファイル転送 | ウエブブラウジング、メール送受信 |
プロトコル | SSHプロトコル | SSL/TLSプロトコル |
使用例 | リモートログイン、SCP、SFTP | HTTPS、SMTPS、IMAPS |
ポート番号 | デフォルトでTCPポート22 | HTTPSはTCPポート443、他はプロトコルによる |
認証方法 | パスワード、公開鍵、多要素認証 | デジタル証明書、サーバおよびクライアント認証 |
2.SSHの動作原理について
暗号化された通信チャネルを使用してリモートシステムへのセキュアなアクセスを提供するプロトコルとなります。その動作原理は次の様な内容にとなります。
2-1 接続の確立
・クライアントとサーバの接続:
クライアント(リモートマシンに接続するユーザ)は、サーバにTCP接続を確立します。デフォルトでは、SSHはTCPポート22番を使用します。
・バージョン交換:
クライアントとサーバはお互いにSSHプロトコルのバージョン情報を交換します。
2-2 セキュリティの確立
・鍵交換:
クライアントとサーバはDiffie-Hellman鍵交換や楕円曲線Diffie-Hellman鍵交換などのアルゴリズムを使用してセッション鍵を生成します。この鍵は通信時の暗号化に使用いたします。
・サーバ認証:
サーバは自分の公開鍵をクライアントに送信します。次にクライアントは事前に入手しているサーバの公開鍵と照合することでサーバを認証します。このような手順によって中間者攻撃(MITM)を防御します。
(*)中間者攻撃(MITM):
Man in the middle Attackの略です。
二者間での通信に割り込んでその通信内容の盗聴や改ざんを行う攻撃です。
・暗号化方法の選択:
クライアントとサーバは通信に使用する暗号化の方式・ハッシュ関数・圧縮方法を決定し選択します。一般的に使用されている暗号化方式はAES・3DES・Blowfishなどがあります。
2-3 ユーザ認証
・ユーザ認証のリクエスト:
サーバはクライアントにユーザ認証を要求行います。次にクライアントは通信に使用する認証方法(パスワード・公開鍵・キーボードインタラティブなど)をリクエストします。
・公開鍵認証:
公開鍵認証の場合は、クライアントはサーバに公開鍵を送信します。サーバはその公開鍵に対応する秘密鍵を持っていることを証明するためにチャレンジ【送信者は平文(暗号化したい文)を、公開鍵を使って暗号化し送信します。
】を発行します。
クライアントはそのチャレンジに対して署名を行い応答します。サーバはその署名を検証しクライアントを認証します。
・パスワード認証:
パスワード認証の場合は、クライアントはサーバに対してユーザ名・パスワードを送信します。 サーバはこの要求内容を確認して、そのユーザを認証します。
2-4 セッションの確立
・セッションの開始:
認証が完了すると、セキュアなセッションが確立されます。このセッションでは、暗号化された通信チャンネルを介してデータを送受信しています。
・シェルの起動:
クライアントはリモートシェルを開始し、リモートコマンドを実行できます。このことによってユーザはリモートサーバ上でコマンドの実行・ファイル操作が可能となります。
2-5 データ転送
・コマンド実行:
ユーザがクライアント側で入力したコマンドは暗号化されてサーバに送信されてサーバ上でコマンドが実行されます。その実行結果は暗号化されてクライアントに反映されます。
・ファイル転送:
CPC(Secure Copy)やSFTP(SSH File Transfer Protocol)を使用して、安全にファイル転送ができます。これらのプロトコルもSSHの暗号化された通信チャネルを使用しています。
(*)SCP(Secure Copy):
セキュリティの高い(セキュアな)ファイル転送を行うコマンドの一つです。
(*)SFTP(SSH File Transfer Protocol):
信頼性の高いデータストリーム上でファイル転送やファイル管理を提供する通信プロトコルの事です。
2-6 セッションの終了
・セッション終了:
ユーザ(クライアント)がログアウトするか、接続を終了するとSSHのセッションは終了(閉じる)となります。 この状態ではすべてのリソースが解放となり、通信接続が切断されます。
3.SSHの欠点について
3-1 設定と管理の複雑さ
SSHは強力で柔軟性が高い反面適切な設定を行うには専門的な知識が必要となります。不適切な設定を行いますとセキュリティリスクを招く事になります。
3-2 鍵管理の課題
公開鍵認証を使用する場合、鍵の管理が複雑となります。規模の大きな環境ではユーザの鍵の生成・配布・ローテーション・廃棄が難しくなります。
3-3 パスワード認証の脆弱性
パスワード認証はブルートフォース攻撃に対して脆弱となります。また使用するパスワードが弱いまたは再利用されたパスワードが使用されることがその要因となります。
(*)ブルートフォース攻撃:
総当たり攻撃と言われる暗号解読方法のひとつです。可能な組み合わせをすべて試すやり方です。
3-4 中間者攻撃(Man-in-the-Middle, MITM)
SSHの初回接続時にサーバの公開鍵が検証されない場合、中間者攻撃のリスクがあります。攻撃者がクライアントとサーバの間に割り込み通信を盗聴または改ざんを行う事が可能です。
3-5 ポートスキャンと攻撃の標的
SSHはデフォルトでポート22を使用していますので、ポートスキャンの標的となりやすいです。攻撃側はこのポートスキャンを行って脆弱性を探す行為を行います。
3-6 多要素認証の未導入
多要素認証(MFA)を導入していない場合認証の安全性が低くなります。パスワードや鍵が漏洩した場合不正アクセスのリスクが高くなります。
(*)多要素認証(MFA):
アクセス権限を得る為に必要な本人確認の種類を複数の要素をユーザに要求する認証方法の事です。