「あなたの通信を秘密にしておくこと」 | |
| 開発者 | OpenBSDプロジェクト |
|---|---|
| 初回リリース | 1999年12月1日 |
| 安定リリース | 9.9 [1]
/ 2024年9月19日 |
| リポジトリ | github.com/openssh/openssh-portable |
| 書かれた | C |
| オペレーティング·システム | クロスプラットフォーム[2] |
| 標準 | RFC 4250、RFC 4251、RFC 4252、RFC 4253、RFC 4254、RFC 4255、RFC 4256、RFC 4335、RFC 4344、RFC 4345、RFC 4419、RFC 4462、RFC 5656、RFC 6594、RFC 6668、RFC 7479 [3] |
| タイプ | リモートアクセス |
| ライセンス | BSD、ISC、パブリックドメイン |
| Webサイト | 出典: |
OpenSSH ( OpenBSD Secure Shell [a]とも呼ばれる)は、 Secure Shell (SSH)プロトコルに基づく安全な ネットワークユーティリティスイートであり、クライアントサーバーアーキテクチャの安全でないネットワーク上で安全なチャネルを提供します。[4] [5]
OpenSSHは、Tatu Ylönenが開発した無料のSSHプログラムのフォークとして始まりました。YlönenのSSHの後のバージョンは、 SSH Communications Securityによって提供される独自のソフトウェアでした。[6] OpenSSHは1999年に最初にリリースされ、現在はOpenBSDオペレーティングシステムの一部として開発されています。
OpenSSHは単一のコンピュータプログラムではなく、TelnetやFTPなどの暗号化されていないプロトコルの代替として機能するプログラムスイートです。OpenSSHは、Microsoft Windows、macOS、ほとんどのLinuxオペレーティングシステムなど、いくつかのオペレーティングシステムに統合されています。 [7] [8]ポータブルバージョンは、他のシステムでパッケージとして利用できます。[9] [10] [11]
歴史
OpenBSD Secure Shell は、現在ではプロプライエタリソフトウェアとなっている Tatu Ylönen によるオリジナルの SSH ソフトウェアの代替として、OpenBSD開発者によって作成された。[12]オリジナルの SSH のソースコードは入手可能であるが、その使用と配布にはさまざまな制限が課されている。OpenSSH はBjörn Grönvall のOSSHのフォークとして作成されたが、 OSSH自体は Tatu Ylönen のオリジナルのフリー SSH 1.2.12 リリースのフォークであり、[13]これはフォークに適したライセンスを持つ最後のリリースであった。[14] [15] OpenSSH の開発者は、クリーンかつ監査済みのコード を作成するというポリシーと、名前の「オープン」という言葉の由来となっているオープンソースライセンスであるBSD ライセンスの下でリリースされているため、 OpenSSH のアプリケーションはオリジナルよりも安全であると主張している。
OpenSSHはOpenBSD 2.6で初めて登場しました。最初のポータブルリリースは1999年10月に行われました。[16]それ以降の開発には、暗号の追加(例:2014年1月の6.5のChaCha20-Poly1305 [17] )、 OpenSSLへの依存の削減(2014年10月の6.7 [18] )、信頼できるホストの公開鍵の検出とローテーションを容易にする拡張機能( DSAからEd25519公開ホスト鍵への移行用、2015年3月のバージョン6.8 [19])などがあります。
2015年10月19日、マイクロソフトはOpenSSHがMicrosoft Windowsでネイティブにサポートされ、PowerShellを通じてアクセスできるようになると発表し、早期実装をリリースしてコードを公開した。[20] OpenSSHベースのクライアントおよびサーバープログラムは、バージョン1803以降、 Windows 10に含まれている。SSHクライアントとキーエージェントはデフォルトで有効化され利用可能であり、SSHサーバーはオプションの機能オンデマンドである。[21]
2019年10月、 OpenSSH 8.1では、 RAMに保存されている秘密鍵を投機攻撃やメモリサイドチャネル攻撃から保護する機能が追加されました。 [22]
発達

OpenSSH は、OpenBSDオペレーティング システムの一部として開発されています。他のオペレーティング システムの変更を OpenSSH に直接組み込むのではなく、OpenSSH 移植性チームによって別の移植性インフラストラクチャが維持され、「移植可能なリリース」が定期的に作成されます。このインフラストラクチャが充実しているのは、OpenSSH が認証を実行する必要があるためです。認証にはさまざまな実装方法があります。このモデルは、OpenNTPDなどの他の OpenBSD プロジェクトでも使用されています。
OpenSSH スイートには、次のコマンドライン ユーティリティとデーモンが含まれています。
- scpはrcpの代替です。
- sftp は、コンピュータ間でファイルをコピーするためのftpの代替です
- ssh は、 rlogin、rsh、telnetの代替であり、リモート マシンへのシェルアクセスを可能にします。
- ssh-addおよびssh-agent は、キーを準備しておき、使用するたびにパスフレーズを入力する必要がなくなるようにすることで認証を容易にするユーティリティです。
- ssh-keygen は、ユーザーおよびホストの認証に使用されるRSA、 DSA、楕円曲線キーを検査および生成するツールです。
- ssh-keyscan は、ホストのリストをスキャンし、その公開鍵を収集します。
- sshd、SSH サーバーデーモン。
OpenSSH サーバーは、SSHプロトコルでサポートされている標準的な方法を使用してユーザーを認証できます。標準的な方法は、パスワード、ユーザーごとのキーを使用する公開鍵認証、公開鍵を使用するrloginのホスト信頼関係のセキュアなバージョンであるホストベース認証、単純なパスワード認証によく使用される汎用のチャレンジレスポンスメカニズムであるキーボードインタラクティブ、トークンなどのより強力な認証子を使用することもできます。また、Kerberos / GSSAPIもあります。サーバーは、ホストオペレーティングシステムにネイティブな認証方法を使用します。これには、BSD 認証システムまたはプラグ可能認証モジュール(PAM) を使用して、ワンタイムパスワードなどの方法による追加の認証を有効にすることが含まれます。ただし、これには副作用が時々あります。PAM を OpenSSH で使用する場合、通常、PAM を操作するには root 権限が必要なため、OpenSSH をrootとして実行する必要があります。3.7 (2003 年 9 月 16 日) 以降の OpenSSH バージョンでは、実行時に PAM を無効にできるため、一般ユーザーが sshd インスタンスを実行できます。
OpenBSD では、OpenSSH はデフォルトで専用のsshdユーザーを使用して権限を削除し、最小権限の原則に従って権限の分離を実行します。この原則は、 Xenocara X サーバーを含むオペレーティング システム全体に適用されます。
特徴
OpenSSH には、ローカルのクライアント側Unix ドメイン ソケットまたはローカルのクライアント側TCPポートに送信されたデータを「転送」 (セキュア チャネルを介して送信) してサーバー側でルーティングするためのセキュア チャネルを設定する機能が含まれています。この転送が設定されると、サーバーは転送されたデータをソケットまたは TCP ホスト/ポートに送信するように指示されます (ホストはサーバー自体 (「localhost」) の場合もあれば、他のコンピューターの場合もあります。その場合、他のコンピューターにはサーバーがデータの発信元であるように見えます)。データの転送は双方向で、つまり、返送された通信はすべて同じ方法でクライアント側に転送されます。これは「SSH トンネル」と呼ばれ、[23] 2004 年以降、追加の TCP 接続を単一の SSH 接続で多重化するために使用でき、[24]接続を隠蔽し、それ以外ではセキュアでないプロトコルを暗号化し、ファイアウォールによって許可されている 1 つのポートを介してあらゆる種類のデータを送受信することでファイアウォールを回避できます。例えば、 OpenSSHを使用してリモートホストに接続すると、 X Window Systemトンネルが自動的に作成され、HTTPやVNCなどの他のプロトコルも簡単に転送できるようになります。[25]
TCPカプセル化ペイロード ( PPPなど) を TCP ベースの接続 (SSH のポート転送など) でトンネリングすることを「TCP-over-TCP」と呼び、これを行うとTCP メルトダウン問題[26] [27]により伝送性能が大幅に低下する可能性があるため、仮想プライベート ネットワークソフトウェアではトンネル接続に TCP よりも単純なプロトコルを使用する場合があります。ただし、OpenSSH のポート転送を使用する場合は、多くのユース ケースで TCP-over-TCP トンネリングが不要なため、この問題は発生しません。メルトダウンは、OpenSSH クライアントがローカルのクライアント側 TCP 接続を処理して送信する実際のペイロードを取得し、そのペイロードをトンネルの TCP 接続を通じて直接サーバー側に送信するため回避されます。サーバー側では、OpenSSH サーバーが同様にペイロードを「アンラップ」して、最終的な宛先にルーティングするために再度「ラップ」します。[28]
さらに、一部のサードパーティ製ソフトウェアには、SSH 経由のトンネリングのサポートが含まれています。これには、DistCC、CVS、rsync、Fetchmailが含まれます。一部のオペレーティング システムでは、 sshfs ( FUSEを使用) などのツールを使用して、SSH 経由でリモートファイル システムをマウントできます。
OpenSSH を使用してアドホックSOCKSプロキシ サーバーを作成できます。これにより、通常のポート転送よりも柔軟なプロキシが 可能になります。
OpenSSHバージョン4.3以降では、OSIレイヤー2/3のtunベースのVPNを実装しています。これはOpenSSHのトンネリング機能の中で最も柔軟性が高く、アプリケーションはSOCKSを利用するために変更を加えることなく、リモートネットワークリソースに透過的にアクセスできます。[29]
サポートされている公開鍵の種類
OpenSSHは以下の公開鍵タイプをサポートしています: [30] [31]
- ssh- dss(2015年にリリースされたOpenSSH 7.0以降、実行時に無効化)[32]
- ssh- rsa(2021年にリリースされたOpenSSH 8.8以降、実行時に無効化)[33]
- ecdsa - sha2 -nistp256 (2011年リリースのOpenSSH 5.7以降) [34]
- ecdsa - sha2 -nistp384 (OpenSSH 5.7 以降)
- ecdsa - sha2 -nistp521 (OpenSSH 5.7 以降)
- ssh- ed25519(2014年リリースのOpenSSH 6.5以降)[35]
- rsa - sha2 -256 (2016年にリリースされたOpenSSH 7.2以降) [36]
- rsa - sha2 -512 (OpenSSH 7.2 以降)
- ecdsa -sk (OpenSSH 8.2以降、2020年リリース) [37]
- ed25519 -sk (OpenSSH 8.2 以降)
- NTRU Prime - x25519(OpenSSH 9.0以降、2022年リリース)[38]
脆弱性
OpenSSHバージョン5.2より前では、攻撃者は成功確率2 −14で最大14ビットの平文を復元することが可能でした。[39]この脆弱性はCBC暗号化モードに関連していました。AES CTRモードとarcfour暗号はこの攻撃に対して脆弱ではありません。
OpenSSH 6.8から6.9( CVE - 2015-6565)には、世界書き込み可能(622) TTYデバイスによるローカル権限昇格の脆弱性が存在し、サービス拒否の脆弱性であると考えられていました。[40] TIOCSTI ioctlを使用すると、認証されたユーザーが他のユーザーの端末に文字を挿入し、Linux上で任意のコマンドを実行することができました。[41]
悪意のある、または侵害された OpenSSH サーバーは、OpenSSH クライアントの文書化されていない接続再開機能に依存する脆弱性を利用して、他のシステムのプライベートログインキーなどのクライアントの機密情報を読み取ることができます。この機能はローミングと呼ばれ、クライアントではデフォルトで有効になっていますが、OpenSSH サーバーではサポートされていません。これは、OpenSSH クライアントのバージョン 5.4 (2010 年 3 月 8 日にリリース[42] ) から 7.1 に適用され、2016 年 1 月 14 日にリリースされた OpenSSH 7.1p2 で修正されました。 この脆弱性に関連付けられているCVE 番号は、 CVE - 2016-0777 (情報漏洩) とCVE - 2016-0778 (バッファオーバーフロー) です。[43] [44]
2024 年 3 月 29 日、XZ Utilsに対する深刻なサプライ チェーン攻撃が報告されました。これは、Linux 上で実行されている OpenSSH サーバー (sshd) を間接的に標的としています。OpenSSH コードは直接関係していませんが、バックドアは、さまざまな Linux ディストリビューションによって適用された tierce パッチによって適用されたlibsystemd経由の liblzma への依存関係によって発生します。 [引用が必要]
2024年7月1日、RegreSSHionセキュリティ脆弱性が公開されました。これにより、リモート攻撃者がOpenSSHに任意のコードを実行させ、完全なルートアクセスを取得できる可能性があります。これは、2020年10月に以前のOpenSSHバージョン8.5p1で誤って導入され、バージョン9.8 / 9.8p1に続いて修正されました。[45] [46]
商標
2001 年 2 月、SSH Communications Security の会長兼 CTO である Tatu Ylönen 氏は、OpenSSH 開発メーリング リストで、同社が「SSH」および「Secure Shell」商標の所有権を主張する意向であることを通知し、[47]「SSH」という名称の管理を維持するために、プロトコルへの参照を「SecSH」または「secsh」に変更しようとしました。彼は、訴訟を避けるために OpenSSH に名称変更を提案しましたが、開発者はこれに抵抗しました。OpenSSH 開発者の Damien Miller 氏は、Ylönen 氏に再考を促し、「SSH」はずっと前から一般的な商標であると主張しました。[48]
当時、プロトコルをオープン スタンダードとして提案する文書には、「SSH」、「Secure Shell」、「ssh」が登場していた。提案書の中でこれらを登録商標としてマークしなかったため、Ylönen はプロトコルを説明する手段としての名称に対する独占権をすべて放棄するリスクを負っていた。商標を不適切に使用したり、他者に商標を不適切に使用させたりした場合、商標はKleenexやAspirinのような一般用語となり、他者が商標を使用できるようになる。[49] USPTO商標データベースを調査した結果、多くのオンライン専門家は、「ssh」という用語が商標登録されておらず、小文字の「ssh」を使用したロゴが商標登録されているだけだと意見を述べた。さらに、会社設立から商標の防衛を開始するまでの 6 年間、および OpenSSH だけが法的影響の脅威にさらされていたことが、商標の有効性に反すると判断した。[50]
OpenSSH の開発者と Ylönen 自身は、新しい標準を開発する IETF ワーキング グループのメンバーでした。数回の会議の後、このグループは、IETF に対する他の商標の申し立てに悪い前例となることを懸念して、プロトコルの名前を変更するという Ylönen の要求を拒否しました。参加者は、「Secure Shell」と「SSH」はどちらも一般的な用語であり、商標にはなり得ないと主張しました。[6]
参照
注記
- ^ 「OpenBSD Secure Shell」という名前は、主にさまざまなsshd起動スクリプトで使用されます。
参考文献
- ^ "release-9.9" . 2024年9月20日閲覧。
- ^ 「OpenSSH ポータブルリリース」。OpenBSD 。 2015年10月15日閲覧。
- ^ 「OpenSSH によって実装された仕様」。OpenBSDプロジェクト。2015年10 月 14 日閲覧。
- ^ Venkatachalam, Girish (2007 年 4 月)。「The OpenSSH Protocol under the Hood」。Linux Journal (156): 74–77 – LSU の Discovery Database 経由。
- ^ IETF のネットワーク ワーキング グループ、2006 年 1 月、RFC 4252、Secure Shell (SSH) 認証プロトコル。
- ^ ab Duffy Marsan, Carolyn (2001年3月22日). 「Secure Shellの発明者が商標登録申請を拒否」ITworld.com . 2021年12月14日閲覧。
- ^ "dragonfly.git/blob - crypto/openssh/README". gitweb.dragonflybsd.org . 2016 年5 月 19 日閲覧。
これは、OpenBSD の優れた OpenSSH を Linux およびその他の Unix に移植したものです。
- ^ "src/crypto/external/bsd/openssh/dist/README - view - 1.4". NetBSD CVS リポジトリ. 2016 年5 月 19 日閲覧。
- ^ "openssh". OpenSUSE . 2016年5月17日閲覧。
- ^ 「Debian -- jessie の openssh-client パッケージの詳細」。Debian。2016年5月 17 日閲覧。
- ^ 「Arch Linux - openssh 7.2p2-1 (x86_64)」。Arch Linux 。 2016年5月17日閲覧。
- ^ 「プロジェクトの歴史とクレジット」。OpenBSD 。 2008年4月8日閲覧。
- ^ OSSH ソース
- ^ ssh-1.2.13 が利用可能になりました: コピー ポリシーが変更されました (ssh を商用販売するには許可が必要になりましたが、使用は引き続きあらゆる目的で許可されています)
- ^ 「OpenSSH: プロジェクトの歴史とクレジット」openssh.com。2004 年 12 月 22 日。2014年2 月 27 日閲覧。
- ^ 「Portable OpenSSH – Freecode」。Freshmeat.net 。 2014年2月11日閲覧。
- ^ Murenin, Constantine A. (2013 年 12 月 11 日). 不明 Lamer (編). 「OpenSSH に DJ Bernstein による新しい暗号 Chacha20-poly1305 が登場」. Slashdot . 2014 年12 月 26 日閲覧。
- ^ Murenin, Constantine A. (2014 年 4 月 30 日). Soulskill (編). 「OpenSSH はもはや OpenSSL に依存する必要はありません」. Slashdot . 2014 年12 月 26 日閲覧。
- ^ Murenin, Constantine A. (2015 年 2 月 1 日). Soulskill (編). 「OpenSSH は、Ed25519 への切り替えを容易にするためにキー検出とローテーションを備えています」. Slashdot . 2015 年2 月 1 日閲覧。
- ^ 「OpenSSH for Windows Update」。2015年10月19日。 2015年10月23日閲覧。
- ^ Durr, Yosef (2018 年 3 月 7 日)。「Windows 10 バージョン 1803 のコマンド ラインの新機能」。開発者向け Windows コマンド ライン ツール。
- ^ 「RAM に保存されている秘密鍵の保護」。
- ^ 「OpenBSD マニュアルページ: SSH」。openbsd.org。2014年 7 月 3 日。2014 年7 月 14 日閲覧。
- ^ 「OpenSSH リリースノート」。
- ^ 「機能」。OpenSSH 。 2016年6月26日閲覧。
- ^ Titz, Olaf (2001 年 4 月 23 日)。「TCP Over TCP がなぜ悪い考えなのか」 。2015年10 月 17 日閲覧。
- ^ 本田 修、大崎 博之、今瀬 誠、石塚 美香、村山 純一 (2005 年 10 月)。「TCP over TCP の理解: TCP トンネリングがエンドツーエンドのスループットと待ち時間に与える影響」。Atiquzzaman, Mohammed、Balandin, Sergey I (編)。次世代通信およびセンサー ネットワークのパフォーマンス、サービス品質、および制御 III 。第3 巻。6011 号。Bibcode :2005SPIE.6011..138H。CiteSeerX 10.1.1.78.5815。doi : 10.1117 /12.630496。S2CID 8945952。
- ^ Kaminsky, Dan (2003 年 6 月 13 日)。「Re: 長くて太いネットワークの拡張機能?」openssh-unix-dev@mindrot.org (メーリング リスト)。TCP
転送コードもかなり高速です。質問に事前に答えると、ssh は TCP をカプセル化解除して再カプセル化するため、TCP を介した TCP の典型的な問題は発生しません。
- ^ 「OpenSSH 4.3 リリースノート」。openssh.com。2006年2 月 1 日。2014 年7 月 14 日閲覧。
- ^ 「SSHD(8) - Linuxマニュアルページ」。
- ^ 「Sshd_config(5) - OpenBSDマニュアルページ」。
- ^ 「OpenSSH 7.0 リリースノート」。OpenSSH 。 2015年8月11日。 2022年11月13日閲覧。
- ^ 「OpenSSH 8.8 リリースノート」。OpenSSH 。 2021年9月26日。 2022年11月13日閲覧。
- ^ 「OpenSSH 5.7 リリースノート」。OpenSSH 。 2011年1月24日。 2022年11月13日閲覧。
- ^ 「 OpenSSH 6.5 リリースノート」。OpenSSH 2014年1月29日。 2022年11月13日閲覧。
- ^ 「OpenSSH 7.2 リリースノート」。OpenSSH 2016年2月29日。 2022年11月13日閲覧。
- ^ 「 OpenSSH 8.2 リリースノート」。OpenSSH . 2020年2月14日。 2022年11月13日閲覧。
- ^ 「OpenSSH 8.9 以降の変更点 (OpenSSH 9.0 リリースノート)」。OpenSSH 開発者。2022 年 4 月 8 日。
- ^ OpenSSH セキュリティアドバイザリ CBC 攻撃
- ^ CVE - 2015-6565
- ^ OpenSSH PTY の脆弱性
- ^ OpenSSH 5.4 リリース
- ^ Thomson, Iain (2016 年 1 月 14 日). 「悪意のある OpenSSH サーバーが他のシステムへの秘密ログイン キーを盗む可能性があります - 今すぐパッチを適用してください」. The Register .
- ^ OpenSSH 7.1p2 がリリースされました。
- ^ 「The regreSSHion Bug」。Qualys。Qualys 。 2024年7月16日閲覧。
- ^ 「OpenSSH リリースノート」。OpenSSH 。OpenSSH。2024年7月16日閲覧。
- ^ Ylonen, Tatu (2001 年 2 月 14 日). 「SSH 商標と OpenSSH 製品名」. openssh-unix-dev (メーリング リスト). MARC . 2014 年2 月 11 日閲覧。
- ^ Miller, Damien (2001 年 2 月 14 日). 「Re: SSH 商標と OpenSSH 製品名」. openssh-unix-dev (メーリング リスト). MARC . 2014 年2 月 11 日閲覧。
- ^ Lemos, Robert (2002年1月2日). 「シーッ! その商標は使わないで」. CNET . 2016年5月19日閲覧。
- ^ Ylonen, Tatu (2002年3月1日). 「Ylönen: 私たちはsshの商標を所有していますが、ここに提案があります」。NewsForge。2002年3月1日時点のオリジナルよりアーカイブ。 2016年5月20日閲覧。
外部リンク
- 公式サイト
- – OpenBSD一般コマンドマニュアル
- – OpenBSDシステム管理者マニュアル
- スーパーユーザーの BSD 相互参照 (BXR.SU) OpenGrokの OpenSSH
- SSH OpenSSH - Windows CMD - SS64.com
