今までなんとなく使っていたFTP。以前紹介した「FTPの仕組み」を書きながら仕組みがわかってくると普通のFTPはセキュリティ面で不安要素が多いことがわかりました。
FTPは古くからあるプロトコルのため、第三者による盗聴 (ファイルを覗き見る行為) への対策が施されていません。FTPの脆弱性対策のためにFTPのセキュリティを向上させたSFTP、そしてFTPSというプロトコルがあります。
結論、サーバー操作する時は通常のFTPではなくできる限りFTPS・SFTPを使うべきです。
一体どのような技術なのか見ていきましょう。
FTP・FTPS・SFTPの違い

FTPS・SFTPが安全だということはわかりましたが普通のFTPと比べて一体何がどう違うのか?FTPS、SFTPの違いは何なのか?
それぞれを比較してみました。まずはFTPからおさらいしてみましょう。
FTP (File Transfer Protocol)
FTPとは日本語に訳すとファイル転送プロトコル、意味はそのままでファイル転送専用のプロトコルです。
クライアント側 (自分のパソコン) からFTPサーバーへファイルをアップロードしたり、逆にクライアント側へファイルをFTPサーバーからダウンロードしたりする事ができます。
FTPはHTTPより古くから使用されているプロトコルのためセキュリティの面であまり考慮されていません。通信されるデータが平文のままで暗号化されていないのです。
もちろんFTPサーバーに入るために用いる「ユーザー名」「パスワード」も平文になります。そのため第三者に侵入・盗聴される可能性が高まるのです。そこでそんな危険性への対策のために作られたのがFTPS・SFTPでした。
FTPS (File Transfer Protocol over SSL/TLS)
FTPSはHTTPSと同じSSL/TLSの暗号化・認証が使われています。FTPの脆弱性を補うために作られました。いわばFTPの拡張版ですね。
後述するSFTPと比較してSが前に来るか、Sが後ろに来るかの違いというだけで名称はほぼ似てますよね。だたこのSの意味略を戻すと全く意味が違います。
- FTPS = SSL/TLS
- SFTP = SSH
セキュアな通信を保つために必要不可欠な要素が「暗号化」そして「認証」この2つです。「暗号化」するのはもちろんですが、この「認証」の部分の仕組みがしっかりしていないと、なりすまし、改ざん、盗聴のリスクが高くなります。
SSL/TLSはその2つの要素を兼ね備えています。SSL/TLSについてだいたいこんな仕組みです、という入門的な基礎知識を「SSL/TLSの仕組みを理解する」で紹介しています。
SSLではハイブリッド方式という暗号化+認証技術が複雑に組み合わさって使われています。
「ハイブリッド暗号方式」=「共通鍵暗号方式」+「公開鍵暗号方式」

「FTPS」2種類のモード・ファイル転送で使うポート
FTPSには「Explicit(明示的)」・「Implicit(暗黙的)」と2種類の暗号化モードがあります。
- Explicit (エクスプリシット / 明示的な・はっきりと)
FTPサーバーに接続後、クライアント側でAUTHコマンドを実行すると通信が暗号化。FTPに代わってFTPSが21番ポートを使います。FTPES (FTP over Explicit SSL) と呼ばれるものです。
- Implicit (インプリシット / 暗黙的な・含まれている)
FTPサーバーに接続した時点で暗号化されます。990番ポートを使います。
SFTP (SSH File Transfer Protocol)
SSHで暗号化されて作られた通信路を通って安全にデータを送受信する事ができるというプロトコルです。linuxではsshコマンドとして機能するようです。
FTPとは違う通信なので22番ポートを使ってファイル転送を行います。
SSHはSecure Shellの略。こちらもSSLと同じく「共通鍵暗号方式」と「公開鍵暗号方式」を組み合わせた「ハイブリッド暗号方式」に加え、認証機能もついているので安全に通信をすることができます。
SSHで暗号化された通路をファイルデータが通るというイメージです。
FTPS・SFTPへの対応確認
この二つの暗号化・認証技術は、残念ながら全てのFTPソフト環境において使えるわけではありません。利用するFTPソフトとレンタルサーバー両方で対応してなくてはならないのです。
ただこれには安心して下さい、主要なFTPソフト・レンタルサーバーにおいてほぼどちらかは対応しているようです。ちなみに私がサーバー移転する予定のwpXはSFTPには非対応ですがFTPSには対応しているようです。
初耳のサーバーだったのですがWordPress専用クラウドサーバーのSove WPはwpXと比べると月額やや割高感がありますがSFTPに対応しています。
主要サーバーはFTPSならほぼ対応しているようです。SFTPはサーバーによりけりなので新規契約時は要確認です。
ソフトの方は
主要なところでFFFTP、FileZilla、WinSCPとMacならCyberduckとありますが、FTPSならほとんどのFTPクライアントで対応しています。Cyberduckだけ「FTPS/Implicit」のみ対応していません。(FTPS/Explicit対応)
ソフトは決める目安として使用しているレンタルサーバーとFTPS・SFTPの対応が一致しているかチェックしておきたいところです。
まとめ
前回、今回とデータの暗号化についてまとめました。
結論、FTPソフトなどでサーバー操作する時は通常のFTPではなくできる限りFTPS・SFTPを使うべきです。
今回の記事が参考になれば幸いです。ありがとうございました。