Secure Shell
From Wikipedia, the free encyclopedia
| TCP/IP群 |
|---|
| アプリケーション層 |
|
| トランスポート層 |
| カテゴリ |
| インターネット層 |
| カテゴリ |
| リンク層 |
| カテゴリ |
| インターネットセキュリティ プロトコル |
|---|
| キーマネジメント |
| アプリケーション層 |
| DNS |
| インターネット層 |
Secure Shell(セキュア シェル、SSH)は、暗号や認証技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。パスワードなどの認証を含むすべてのネットワーク上の通信が暗号化される。
従来からTelnet、rsh、rloginなどリモートホストのシェルを利用するためのプロトコルは存在した。しかしながら、これらはネットワークに平文でパスワードを送信するため、パスワードを覗き見(盗聴)される危険性が高く、特にインターネット上では大きな問題であった。SSHは通信を暗号化した代替の通信プロトコルである。
オリジナルのSSHは、フィンランド出身のプログラマであるタトュ・ウルネン (Tatu Ylönen) により1995年に開発され、はじめフリーで公開された。しかし、同年12月には、SSH社 (SSH Communications Security) が設立され、プロプライエタリソフトウェアとなった。[1]
ファイルコピー用のコマンドrcpを代替するscpや、FTPを代替するsftpも用意されている。
SSHの暗号通信はいわゆるハイブリッド暗号であり:
- 鍵交換アルゴリズム(ディフィー・ヘルマン鍵共有など)で共通鍵暗号のセッション鍵を生成し
- 共通鍵暗号(トリプルDES、AESなど)で通信を暗号化し
- 公開鍵暗号(RSAやDSA)でホストやユーザ認証を行なう
現在はバージョン1と2の2種類のプロトコルが共存している。バージョン1は既知の脆弱性があり推奨されない。
商用、自由ソフトウェア含めて幾つかの実装があり、特許や互換性の問題などでやや混乱があったが、2006年にSSHおよびその関連技術がRFCとして制定された[2]。2008年の時点で最も普及しているのは、オープンソースのOpenSSHである[3]。Linuxなどでも標準利用されており、現在では単にSSHと言った場合、OpenSSHの実装系を指すことが多い。
ソフトウェア
SSHサーバ
- OpenSSH (マルチプラットフォーム)
- SSH Tectia Server (マルチプラットフォーム)
- Reflection for Secure IT - ウェイバックマシン(2010年9月14日アーカイブ分)(マルチプラットフォーム)
- Dropbear (Unix系)
SSHクライアント
認証
SSHの認証方式は公開鍵認証の他にも、パスワード認証、ワンタイムパスワードなどが提供されており、各個人/企業の情報セキュリティポリシーに合わせて選択できる。近年では、SSH Agent Forwardingというプロトコルで、多段のサーバー接続(マルチホップSSH)における認証プロセスを劇的に簡素化することが可能になっている。この機能を用いることで、ユーザーはローカルマシン上のSSH秘密鍵を、接続先の中間サーバーにコピーすることなく、さらにその先のサーバーへの認証に利用できる 。
SSHフォワーディング
SSHポートフォワーディングは、SSH接続によって確立された暗号化通信路を利用して、任意のTCP通信を転送する技術、またはその機能のことである。SSHプロトコルはアプリケーション層で動作し、転送対象となる通信データを暗号化する。この暗号化されたデータはペイロードとしてTCP/IPパケットにカプセル化されるため、通信経路上での盗聴や改ざんを防ぐことが可能となる[4]。
SSHサーバー自体は通常TCPポート22番で待ち受けるが、ポートフォワーディングでは利用者が指定した任意のポートへの通信を、この確立済みのSSHトンネルを経由させる形で実現する。主な方式として、ローカルポートフォワーディング、リモートポートフォワーディング、そしてSOCKSプロキシとして機能するダイナミックポートフォワーディングが存在し、ファイアウォールの内側にあるサーバーへのアクセスなど、多様な用途で利用される。これによりポートを狙い撃ちにする攻撃を回避できる。