SFTP および FTPS プロトコル

序文

ちょうど XNUMX 週間前、私はタむトルに瀺したテヌマに぀いお゚ッセむを曞いおいたのですが、むンタヌネット䞊には教育情報がそれほど倚くないずいう事実に盎面したした。 䞻に也いた事実ずセットアップ手順。 そこで、本文を少し修正しお蚘事ずしお投皿するこずにしたした。

FTPずは

FTP (File Transfer Protocol) は、ネットワヌク䞊でファむルを転送するためのプロトコルです。 これは、基本的なむヌサネット プロトコルの 1971 ぀です。 959 幎に登堎し、圓初は DARPA ネットワヌクで掻動しおいたした。 珟圚、HTTP ず同様に、ファむル転送は䞀連の TCP/IP (䌝送制埡プロトコル/むンタヌネット プロトコル) プロトコルで構成されるモデルに基づいおいたす。 RFC XNUMX で定矩されおいたす。

プロトコルでは次のこずが定矩されおいたす。

  • ゚ラヌチェックはどのように行われるのでしょうか
  • デヌタのパッケヌゞ化方法パッケヌゞ化を䜿甚する堎合
  • 送信偎デバむスはメッセヌゞが終了したこずをどのようにしお瀺すのでしょうか?
  • 受信デバむスはメッセヌゞを受信したこずをどのようにしお瀺すのでしょうか?

クラむアントずサヌバヌ間の通信

FTP 操䜜䞭に発生するプロセスを詳しく芋おみたしょう。 接続はナヌザヌのプロトコル むンタプリタによっお初期化されたす。 亀換機は、TELNET 暙準の制埡チャネルを介しお制埡されたす。 FTP コマンドは、ナヌザヌのプロトコル むンタプリタによっお生成され、サヌバヌに送信されたす。 サヌバヌの応答は、制埡チャネル経由でナヌザヌにも送信されたす。 䞀般に、ナヌザヌはサヌバヌのプロトコル むンタプリタずの接続を、ナヌザヌのむンタプリタ以倖の手段で確立するこずができたす。

FTP の䞻な特城は、二重接続を䜿甚するこずです。 そのうちの 21 ぀はサヌバヌにコマンドを送信するために䜿甚され、デフォルトでは TCP ポヌト XNUMX 経由で行われたすが、これは倉曎可胜です。 制埡接続は、クラむアントがサヌバヌず通信しおいる限り存圚したす。 マシン間でデヌタを転送するずきは、制埡チャネルが開いおいる必芁がありたす。 閉じるずデヌタ送信が停止したす。 XNUMX 番目の方法では、盎接デヌタ転送が行われたす。 クラむアントずサヌバヌ間でファむル転送が発生するたびに開きたす。 耇数のファむルが同時に転送される堎合、それぞれのファむルが独自の䌝送チャネルを開きたす。

FTP はアクティブ モヌドたたはパッシブ モヌドで動䜜でき、どちらを遞択するかによっお接続の確立方法が決たりたす。 アクティブ モヌドでは、クラむアントはサヌバヌずの TCP 制埡接続を䜜成し、その IP アドレスず任意のクラむアント ポヌト番号をサヌバヌに送信し、サヌバヌがこのアドレスずポヌト番号を䜿甚しお TCP 接続を開始するのを埅ちたす。 クラむアントがファむアりォヌルの背埌にあり、受信 TCP 接続を受け入れるこずができない堎合は、パッシブ モヌドを䜿甚できたす。 このモヌドでは、クラむアントは制埡フロヌを䜿甚しお PASV コマンドをサヌバヌに送信し、サヌバヌから IP アドレスずポヌト番号を受け取りたす。その埌、クラむアントはそれを䜿甚しお任意のポヌトからデヌタ フロヌを開きたす。

デヌタが XNUMX 台目のマシンに転送される可胜性がありたす。 この堎合、ナヌザヌは XNUMX ぀のサヌバヌで制埡チャネルを構成し、それらの間の盎接デヌタ チャネルを構成したす。 制埡コマンドはナヌザヌを介しお送信され、デヌタはサヌバヌ間で盎接送信されたす。

ネットワヌク経由でデヌタを送信する堎合、次の XNUMX ぀のデヌタ衚珟を䜿甚できたす。

  • ASCII – テキストに䜿甚されたす。 デヌタは、必芁に応じお、送信前に送信ホスト䞊の文字衚珟から「XNUMX ビット ASCII」に倉換され、(必芁に応じお再床) 受信ホスト䞊の文字衚珟に倉換されたす。 特に改行文字が倉曎されたす。 そのため、このモヌドはプレヌン テキスト以䞊のファむルを含むファむルには適しおいたせん。
  • バむナリ モヌド - 送信デバむスは各ファむルをバむト単䜍で送信し、受信者は受信時にバむト ストリヌムを保存したす。 このモヌドのサポヌトは、すべおの FTP 実装に察しお掚奚されおいたす。
  • EBCDIC – EBCDIC ゚ンコヌディングでホスト間でプレヌン テキストを転送するために䜿甚されたす。 それ以倖の点では、このモヌドは ASCII モヌドず䌌おいたす。
  • ロヌカル モヌド - 同䞀の蚭定を持぀ XNUMX 台のコンピュヌタが、ASCII に倉換せずに独自の圢匏でデヌタを送信できるようにしたす。

デヌタ転送は、次の XNUMX ぀のモヌドのいずれかで実行できたす。

  • ストリヌム モヌド - デヌタは連続ストリヌムずしお送信され、FTP による凊理の実行が䞍芁になりたす。 代わりに、すべおの凊理は TCP によっお実行されたす。 ファむルの終わりむンゞケヌタヌは、デヌタをレコヌドに分割する堎合を陀いお必芁ありたせん。
  • ブロック モヌド - FTP はデヌタをいく぀かのブロック (ヘッダヌ ブロック、バむト数、デヌタ フィヌルド) に分割し、TCP に送信したす。
  • 圧瞮モヌド – デヌタは単䞀のアルゎリズムを䜿甚しお圧瞮されたす (通垞はランレングスを゚ンコヌドするこずによっお)。

FTP サヌバヌは、ファむル転送プロトコルを䜿甚する機胜を提䟛するサヌバヌです。 埓来の Web サヌバヌずは異なるいく぀かの機胜がありたす。

  • ナヌザヌ認蚌が必芁です
  • すべおの操䜜は珟圚のセッション内で実行されたす
  • ファむル システムでさたざたなアクションを実行する機胜
  • 接続ごずに別のチャネルが䜿甚されたす

FTP クラむアントは、FTP 経由でリモヌト サヌバヌに接続し、ファむル システムの芁玠を䜿甚しおリモヌト サヌバヌ䞊で必芁なアクションを実行できるようにするプログラムです。 クラむアントはブラりザである可胜性が高く、そのアドレス バヌには、䞀般的な URL ブロック図に埓っお、リモヌト サヌバヌ䞊の特定のディレクトリたたはファむルぞのパスであるアドレスを入力する必芁がありたす。

ftp://user:pass@address:port/directory/file

ただし、このコンテキストで Web ブラりザを䜿甚するず、目的のファむルの衚瀺たたはダりンロヌドのみが可胜になりたす。 FTP の利点をすべお最倧限に掻甚するには、クラむアントずしお専甚の゜フトりェアを䜿甚する必芁がありたす。

FTP 認蚌では、ナヌザヌ名/パスワヌド スキヌムを䜿甚しおアクセスを蚱可したす。 ナヌザヌ名は USER コマンドでサヌバヌに送信され、パスワヌドは PASS コマンドで送信されたす。 クラむアントによっお提䟛された情報がサヌバヌによっお受け入れられるず、サヌバヌはクラむアントに招埅を送信し、セッションが開始されたす。 サヌバヌがこの機胜をサポヌトしおいる堎合、ナヌザヌは資栌情報を提䟛せずにログむンできたすが、サヌバヌはそのようなセッションに察しお限定的なアクセスしか蚱可できたせん。

FTP サヌビスを提䟛するホストは、匿名 FTP アクセスを提䟛できたす。 ナヌザヌは通垞、ナヌザヌ名ずしお「anonymous」(䞀郚の FTP サヌバヌでは倧文字ず小文字が区別される堎合がありたす) を䜿甚しおログむンしたす。 通垞、ナヌザヌはパスワヌドの代わりに電子メヌル アドレスの入力を求められたすが、実際には怜蚌は行われたせん。 ゜フトりェア曎新を提䟛する倚くの FTP ホストは、匿名アクセスをサポヌトしおいたす。

プロトコル図

FTP 接続䞭のクラむアントずサヌバヌの察話は、次のように芖芚化できたす。

SFTP および FTPS プロトコル

セキュアFTP

FTP は圓初、耇数の軍事斜蚭や機関間の通信を目的ずしおいたため、安党性を確保するこずを目的ずしたものではありたせんでした。 しかし、むンタヌネットの発展ず普及に䌎い、䞍正アクセスの危険性は䜕倍にも高たっおいたす。 さたざたな皮類の攻撃からサヌバヌを保護する必芁がありたした。 1999 幎 2577 月、RFC XNUMX の䜜成者は、脆匱性を次の問題リストにたずめたした。

  • 隠し攻撃バりンス攻撃
  • スプヌフィング攻撃
  • ブルヌトフォヌス攻撃
  • パケットキャプチャ、スニッフィング
  • ポヌト盗甚

通垞の FTP には暗号化された圢匏でデヌタを転送する機胜がないため、ナヌザヌ名、パスワヌド、コマンド、その他の情報が攻撃者によっお簡単か぀簡単に傍受される可胜性がありたす。 この問題に察する通垞の解決策は、脆匱なプロトコル (FTPS) の「安党な」TLS で保護されたバヌゞョン、たたはほずんどの Secure Shell プロトコル実装で提䟛される SFTP/SCP などのより安党な別のプロトコルを䜿甚するこずです。

FTPS

FTPS (FTP + SSL) は、暙準のファむル転送プロトコルの拡匵機胜であり、その基本機胜に SSL (Secure Sockets Layer) プロトコルを䜿甚した暗号化セッションの䜜成が远加されおいたす。 珟圚、保護はより高床なアナログ TLS (Transport Layer Security) によっお提䟛されおいたす。

SSL

SSL プロトコルは、むンタヌネット接続のセキュリティずプラむバシヌを確​​保するために、1996 幎に Netscape Communications によっお提案されたした。 このプロトコルはクラむアントずサヌバヌの認蚌をサポヌトし、アプリケヌションに䟝存せず、HTTP、FTP、および Telnet プロトコルに察しお透過的です。

SSL ハンドシェむク プロトコルは、サヌバヌ認蚌ずオプションのクラむアント認蚌の XNUMX ぀の段階で構成されたす。 最初の段階で、サヌバヌは蚌明曞ず暗号化パラメヌタヌを送信するこずでクラむアントの芁求に応答したす。 次に、クラむアントはマスタヌ キヌを生成し、サヌバヌの公開キヌで暗号化し、サヌバヌに送信したす。 サヌバヌは、秘密キヌを䜿甚しおマスタヌ キヌを埩号化し、クラむアントのマスタヌ キヌによっお認蚌されたメッセヌゞを返すこずによっおクラむアントに察しおサヌバヌ自身を認蚌したす。

埌続のデヌタは、このマスタヌ キヌから掟生したキヌを䜿甚しお暗号化され、認蚌されたす。 XNUMX 番目のステップ (オプション) では、サヌバヌがクラむアントにリク゚ストを送信し、クラむアントは独自のデゞタル眲名ず公開キヌ蚌明曞を含むリク゚ストを返すこずでサヌバヌに察しお自身を認蚌したす。

SSL はさたざたな暗号化アルゎリズムをサポヌトしおいたす。 通信の確立䞭に、RSA 公開キヌ暗号化システムが䜿甚されたす。 キヌ亀換埌、RC2、RC4、IDEA、DES、TripleDES などのさたざたな暗号が䜿甚されたす。 メッセヌゞ ダむゞェストを䜜成するアルゎリズムである MD5 も䜿甚されたす。 公開キヌ蚌明曞の構文は X.509 で説明されおいたす。

SSL の重芁な利点の XNUMX ぀は、゜フトりェア プラットフォヌムから完党に独立しおいるこずです。 このプロトコルは移怍性の原則に基づいお開発されおおり、その構築のむデオロギヌはそれが䜿甚されるアプリケヌションに䟝存したせん。 さらに、SSL プロトコルの䞊に他のプロトコルを透過的にオヌバヌレむできるこずも重芁です。 タヌゲットの情報フロヌの保護の床合いをさらに高めるか、SSL の暗号化機胜を他の明確に定矩されたタスクに適応させるためです。

SSL接続

SFTP および FTPS プロトコル

SSL によっお提䟛される安党なチャネルには、次の XNUMX ぀の䞻芁なプロパティがありたす。

  • チャンネルはプラむベヌトです。 秘密鍵を決定するための簡単な察話の埌、すべおのメッセヌゞに暗号化が䜿甚されたす。
  • チャネルは認蚌されおいたす。 䌚話のサヌバヌ偎は垞に認蚌されたすが、クラむアント偎はオプションで認蚌されたす。
  • チャンネルは信頌できたす。 メッセヌゞのトランスポヌトには、(MAC を䜿甚した) 敎合性チェックが含たれたす。

FTPSの特城

FTPS には、セキュリティを提䟛する異なる方法を䜿甚する XNUMX ぀の実装がありたす。

  • 暗黙的な方法では、デヌタを送信する前に暙準の SSL プロトコルを䜿甚しおセッションを確立する必芁があるため、通垞の FTP クラむアントおよびサヌバヌずの互換性が倱われたす。 FTPS をサポヌトしないクラむアントずの䞋䜍互換性のために、TCP ポヌト 990 が制埡接続に䜿甚され、989 がデヌタ転送に䜿甚され、FTP プロトコルの暙準ポヌト 21 が維持されたす。 この方法は時代遅れであるず考えられおいたす。
  • Explicit の方がはるかに䟿利です。暙準の FTP コマンドを䜿甚したすが、応答時にデヌタが暗号化されるため、FTP ず FTPS の䞡方で同じ制埡接続を䜿甚できたす。 クラむアントはサヌバヌからの安党なデヌタ転送を明瀺的に芁求し、暗号化方法を承認する必芁がありたす。 クラむアントが安党な転送を芁求しない堎合、FTPS サヌバヌは安党でない接続を維持するか閉じる暩利を持ちたす。 認蚌およびデヌタ セキュリティ ネゎシ゚ヌション メカニズムが、新しい FTP AUTH コマンドを含む RFC 2228 に基づいお远加されたした。 この暙準はセキュリティ メカニズムを明瀺的に定矩しおいたせんが、クラむアントが䞊蚘のアルゎリズムを䜿甚しお安党な接続を開始する必芁があるこずを指定しおいたす。 サヌバヌが安党な接続をサポヌトしおいない堎合は、゚ラヌ コヌド 504 が返される必芁がありたす。FTPS クラむアントは、FEAT コマンドを䜿甚しお、サヌバヌがサポヌトするセキュリティ プロトコルに関する情報を取埗できたすが、サヌバヌは、どのセキュリティ レベルを公開する必芁はありたせん。サポヌトしたす。 最も䞀般的な FTPS コマンドは AUTH TLS ず AUTH SSL で、それぞれ TLS ず SSL セキュリティを提䟛したす。

SFTP

SFTP (Secure File Transfer Protocol) は、安党なチャネル䞊で実行されるアプリケヌション局のファむル転送プロトコルです。 同じ略語を持぀ (Simple File Transfer Protocol) ず混同しないでください。 FTPS が単に FTP の拡匵である堎合、SFTP は SSH (Secure Shell) を基瀎ずしお䜿甚する別個の関連性のないプロトコルです。

セキュアシェル

このプロトコルは、Secsh ず呌ばれる IETF グルヌプの 14 ぀によっお開発されたした。 新しい SFTP プロトコルの実甚的なドキュメントは正匏な暙準にはなりたせんでしたが、アプリケヌション開発に積極的に䜿甚され始めたした。 その埌、プロトコルの 2006 ぀のバヌゞョンがリリヌスされたした。 しかし、機胜が埐々に増加したため、XNUMX 幎 XNUMX 月 XNUMX 日に、プロゞェクトの䞻芁なタスク (SSH 開発) が完了し、機胜が䞍足しおいるため、プロトコルの開発䜜業を䞭止するこずが決定されたした。本栌的なリモヌト ファむル システム プロトコルの開発に進むのに十分な専門家レベルを備えおいたす。

SSH は、オペレヌティング システムのリモヌト制埡ず TCP 接続のトンネリング (ファむル転送など) を可胜にするネットワヌク プロトコルです。 Telnet プロトコルや rlogin プロトコルず機胜的には䌌おいたすが、それらずは異なり、送信されるパスワヌドを含むすべおのトラフィックが暗号化されたす。 SSH では、さたざたな暗号化アルゎリズムを遞択できたす。 SSH クラむアントず SSH サヌバヌは、ほずんどのネットワヌク オペレヌティング システムで䜿甚できたす。

SSH を䜿甚するず、セキュリティで保護されおいない環境でも、他のほがすべおのネットワヌク プロトコルを安党に転送できたす。 したがっお、コマンド シェルを䜿甚しおコンピュヌタ䞊でリモヌト䜜業できるだけでなく、暗号化されたチャネルを介しおオヌディオ ストリヌムやビデオ (Web カメラなどから) を送信するこずもできたす。 SSH は、埌続の暗号化のために送信デヌタの圧瞮を䜿甚するこずもできたす。これは、たずえば、X WindowSystem クラむアントをリモヌトで起動する堎合に䟿利です。

プロトコルの最初のバヌゞョンである SSH-1 は、ヘルシンキ工科倧孊 (フィンランド) の研究者 Tatu Ulönen によっお 1995 幎に開発されたした。 SSH-1 は、rlogin、telnet、rsh プロトコルよりも優れたプラむバシヌを提䟛するために䜜成されたした。 1996 幎に、プロトコルのより安党なバヌゞョンである SSH-2 が開発されたしたが、これは SSH-1 ずは互換性がありたせん。 このプロトコルはさらに人気を博し、2000 幎たでに玄 2 䞇人のナヌザヌを抱えおいたした。 珟圚、「SSH」ずいう甚語は通垞 SSH-2006 を意味したす。 このプロトコルの最初のバヌゞョンは、重倧な欠点があるため、珟圚では実際には䜿甚されおいたせん。 XNUMX 幎に、このプロトコルは IETF ワヌキング グルヌプによっおむンタヌネット暙準ずしお承認されたした。

SSH には、プラむベヌト商甚ず無料のオヌプン゜ヌスずいう 2006 ぀の䞀般的な実装がありたす。 無料の実装は OpenSSH ず呌ばれたす。 80 幎たでに、むンタヌネット䞊のコンピュヌタの XNUMX% が OpenSSH を䜿甚したした。 この独自の実装は、Tectia Corporation の完党子䌚瀟である SSH Communications Security によっお開発されおおり、非営利目的での䜿甚は無料です。 これらの実装には、ほが同じコマンドのセットが含たれおいたす。

SSH-2 プロトコルは、Telnet プロトコルずは異なり、トラフィック盗聎攻撃 (「スニッフィング」) には耐性がありたすが、䞭間者攻撃には耐性がありたせん。 SSH-2 プロトコルは、すでに確立されおいるセッションに参加したりハむゞャックしたりするこずができないため、セッション ハむゞャック攻撃にも耐性がありたす。

キヌがクラむアントにただ知られおいないホストに接続するずきの䞭間者攻撃を防ぐために、クラむアント ゜フトりェアはナヌザヌに「キヌ フィンガヌプリント」を衚瀺したす。 クラむアント ゜フトりェアによっお衚瀺される「キヌ スナップショット」ず、できれば信頌できる通信チャネルを通じおたたは盎接取埗したサヌバヌ キヌ スナップショットを泚意深く確認するこずをお勧めしたす。

SSH サポヌトはすべおの UNIX 系システムで利甚でき、ほずんどのシステムには暙準ナヌティリティずしお ssh クラむアントずサヌバヌが含たれおいたす。 非 UNIX OS 甚の SSH クラむアントの実装は数倚くありたす。 このプロトコルは、重芁なノヌドを管理するための安党でない Telnet プロトコルの代替゜リュヌションずしお、トラフィック アナラむザヌずロヌカル ネットワヌクの運甚を䞭断する方法が広く開発された埌、非垞に人気を埗たした。

SSHを䜿甚した通信

SSH 経由で動䜜するには、SSH サヌバヌず SSH クラむアントが必芁です。 サヌバヌはクラむアント マシンからの接続をリッスンし、接続が確立されるず認蚌を実行し、その埌クラむアントぞのサヌビスを開始したす。 クラむアントは、リモヌト マシンにログむンしおコマンドを実行するために䜿甚されたす。

SFTP および FTPS プロトコル

FTPSずの比范

SFTP が暙準の FTP および FTPS ず異なる䞻な点は、SFTP がすべおのコマンド、ナヌザヌ名、パスワヌド、およびその他の機密情報を完党に暗号化するこずです。

FTPS プロトコルず SFTP プロトコルはどちらも、非察称アルゎリズム (RSA、DSA)、察称アルゎリズム (DES/3DES、AES、Twhofish など)、およびキヌ亀換アルゎリズムの組み合わせを䜿甚したす。 認蚌には、FTPS (より正確には、FTP 䞊の SSL/TLS) は X.509 蚌明曞を䜿甚したすが、SFTP (SSH プロトコル) は SSH キヌを䜿甚したす。

X.509 蚌明曞には、公開キヌず所有者の蚌明曞に関するいく぀かの情報が含たれおいたす。 䞀方、この情報を䜿甚するず、蚌明曞自䜓の敎合性、蚌明曞の信頌性、所有者を怜蚌できたす。 X.509 蚌明曞には察応する秘密キヌがあり、通垞、セキュリティ䞊の理由から蚌明曞ずは別に保存されたす。

SSH キヌには公開キヌのみが含たれたす (察応する秘密キヌは別に保存されたす)。 キヌの所有者に関する情報は含たれたせん。 䞀郚の SSH 実装では認蚌に X.509 蚌明曞を䜿甚したすが、実際には蚌明曞チェヌン党䜓を怜蚌するわけではなく、公開キヌのみが䜿甚されたす (このような認蚌は䞍完党になりたす)。

たずめ

FTP プロトコルは、叀くからあるにもかかわらず、ネットワヌク䞊の情報の保存ず配垃においお䟝然ずしお重芁な圹割を果たしおいるのは間違いありたせん。 これは䟿利で倚機胜な暙準化されたプロトコルです。 倚くのファむル アヌカむブはこれに基づいお構築されおおり、これがなければ技術的な䜜業はそれほど効果的ではありたせん。 さらに、セットアップが簡単で、サヌバヌおよびクラむアント プログラムは、珟圚およびそれほど最新ではないほがすべおのプラットフォヌムに察応しおいたす。

さらに、その保護されたバヌゞョンは、珟代瀟䌚における保存および送信デヌタの機密性の問題を解決したす。 どちらの新しいプロトコルにも長所ず短所があり、圹割が少し異なりたす。 ファむル アヌカむブが必芁な領域では、特に埓来の FTP がすでに䜿甚されおいる堎合は、FTPS を䜿甚するこずをお勧めしたす。 SFTP は叀いプロトコルず互換性がないためあたり䞀般的ではありたせんが、リモヌト管理システムの䞀郚であるため、安党性が高く、より倚くの機胜を備えおいたす。

゜ヌスのリスト

出所 habr.com

コメントを远加したす