FTPでのアップロードに潜むリスクと、SFTPへの移行のススメ
「Webサイトの更新、FTPソフトでアップロードしておいて」
「はい、わかりました」
そう言って、慣れ親しんだ「FFFTP」などのソフトを起動することはありませんか?
しかし、その何気ない作業には、セキュリティ上のリスクが潜んでいる可能性があります。
「まさか、ただファイルを送っているだけでしょう?」
そう思うのも無理はありません。
ですが、もしその作業を、カフェのフリーWi-Fiなどで行っていたとしたら、どうでしょうか。
最悪の場合、大切なサーバーへのログイン情報(IDとパスワード)が、同じ空間にいる悪意ある者に知られてしまう恐れがあります。
その結果、「Webサイトが何者かに書き換えられている」といった事態になれば、取り返しがつきません。
FTPとは、それほどまでにセキュリティ的には「無防備」な仕組みなのです。
今回は、なぜ今FTPを使うのが危険なのか、そして代わりに何を使えば良いのか、その理由と対策について解説します。
これを読めば、セキュリティを意識したWebサイト運営の一助となるはずです。
今すぐFTPの使用を控えるべき理由
結論から言います。
FTPの使用は控え、SFTPなどの安全な通信手段に切り替えることを強くお勧めします。
「昔から使っているし、特に問題は起きていないけど?」
その通りです。それは、単に運が良かっただけかもしれません。
FTP(File Transfer Protocol)が作られたのは1971年です。
インターネットがまだ研究者だけのものだった時代の産物であり、当時は「悪意ある者がデータを盗み見る」といったことは想定されていませんでした。
そのため、FTPには「通信を暗号化する」という機能がそもそも備わっていないのです。
通信内容が丸見えの状態です
最大の問題は、通信内容がすべて「平文(ひらぶん)」で送られることです。
「平文」とは、暗号化されていない、そのまま読める文字のことです。
FTPソフトに入力された「ホスト名」「ユーザー名」「パスワード」、そしてアップロードしている「顧客リスト」や「社外秘の資料」。
これらすべてが、インターネットという公共の通信網を、透明なカプセルに入れて運ばれているような状態です。
もし、その通信経路の途中で誰かが待ち伏せしていたらどうなるでしょうか?
「IDとパスワードが送られてきた」
「こちらの通信には、顧客のメールアドレスリストが含まれているようだ」
中身は容易に確認できてしまいます。
これが「パケット盗聴(スニフィング)」と呼ばれるリスクです。
Wi-Fiの電波を傍受されたり、経由するルーターでデータを覗かれたりすると、ログイン情報は一瞬で盗まれてしまいます。
特に、パスワードが盗まれると、以下のような被害に及ぶ可能性があります。
- Webサイトの改ざん: トップページが書き換えられたり、ウイルスを拡散するサイトにされたりする恐れがあります。
- 情報漏洩: サーバー上の個人情報や機密データが盗み出される可能性があります。
- 踏み台攻撃: あなたのサーバーが、他のサーバーを攻撃するための「拠点」として悪用されることも考えられます。
企業としての信頼が損なわれ、損害賠償問題に発展することさえあります。
「たかがファイル転送」と侮ることはできません。FTPを使うということは、それだけのリスクを負うということなのです。
FTP、FTPS、SFTPの違いとは?
「FTPが危険なのはわかったけど、じゃあどうすれば良いの?」
安心してください。安全な代わりの手段があります。
それが「FTPS」と「SFTP」です。
名前が似ていて少々ややこしいですが、中身は全くの別物です。
まずは表で簡単に比較してみましょう。
| プロトコル | 暗号化 | ベース技術 | ポート番号(標準) | おすすめ度 | 特徴 |
|---|---|---|---|---|---|
| FTP | なし | 古い規格 | 21 | × | 危険です。使用は推奨されません。 |
| FTPS | あり | SSL/TLS | 21 / 990 | △ | 安全ですが、設定が少々複雑になることがあります。 |
| SFTP | あり | SSH | 22 | ◎ | 安全で設定も容易です。迷ったらこちらを選んでください。 |
| それぞれの特徴をイメージで表すと以下のようになります。 |
- FTP: 「無防備な状態」。何も身につけていないので防御力はありません。
- FTPS: 「鎧を着た状態」。FTPにSSLという鎧(暗号化)を着せたものです。安全ですが、重装備すぎて門(ポート)を通るのが大変なことがあります。
- SFTP: 「身軽なスペシャリスト」。SSHという全く別の技術を使った、身軽で強固なプロトコルです。
最近のレンタルサーバー(Xserver、ConoHa、Sakuraなど)であれば、大抵はSFTPに対応しています。
特別な理由がない限り、「SFTP」を選べば間違いありません。
【図解】FTPの仕組みと弱点を深堀り
もう少し詳しく、FTPがなぜ危険で、SFTPがなぜ安全なのか、仕組みの違いについて解説します。
ここを理解しておくと、エンジニアの方ともスムーズにコミュニケーションが取れるようになります。
FTPの通信イメージ
FTPは、情報を送るための「制御コネクション」と、データを送るための「データコネクション」という2つの経路を使います。
[ あなたのPC ] [ インターネット ] [ サーバー ]
| | |
| --- 制御コネクション (ID/Pass) --> | --- 透明なカプセルで転送中 -> | (ID/Pass 受信)
| port 21 | ↑ ここで盗み見されます |
| | |
| --- データコネクション (ファイル) -> | --- 透明なカプセルで転送中 -> | (ファイル 受信)
| port 20 他 | |
このように、両方の経路が暗号化されていないため、どこかで誰かが通信データを傍受すると、中身がそのまま見えてしまうのです。
郵便配達中に、誰かが封筒を開けて中身をコピーし、また何食わぬ顔で戻しているようなものです。
被害に遭っても、「コピーされたこと」には気づけないのが、また恐ろしいところです。
SFTPが安全な理由
一方、SFTP (1) はどうなっているのでしょうか。 SFTPは「SSH (2)」という、サーバーを遠隔操作するためのセキュリティプロトコルの仕組みを利用して、ファイルを転送します。
SSHは、最初から「盗聴されること」を前提に作られた、非常に強固なプロトコルです。
SFTPの通信イメージ
[ あなたのPC ] [ インターネット ] [ サーバー ]
| | |
| ================= SSHという頑丈なトンネル =================== |
| (port 22 だけで通信が完結します) |
| | |
| [暗号化されたID/Pass] ---------> | [中身は見えません] ---------> |
| [暗号化されたファイル] ---------> | [中身は見えません] ---------> |
| | |
| ============================================================== |
SFTPでは、認証情報もファイルデータも、すべて一つの暗号化されたトンネルの中を通ります。
このトンネルの中を通るデータは、すべて複雑な計算式で暗号化されています。
もし悪意ある者が途中でデータを盗み見ようとしても、見えるのは「xsd8f7s9d8f…」といった意味不明な文字の羅列だけです。
これを解読するには、スーパーコンピュータを使っても何万年もかかると言われています。
これが、SFTPが安全だと言われる理由です。
しかも、FTPのように2つの経路(ポート)を用意する必要がないため、社内ネットワークのファイアウォール設定などで「FTPは繋がらないけどSSH(SFTP)なら繋がる」というケースも多く、管理者にとっても扱いやすい存在なのです。
鍵認証とは? パスワード認証より安全な理由
SFTPを利用する時によく耳にするのが「鍵認証(公開鍵認証)」という言葉です。
レンタルサーバーのマニュアルを見ていると、「SSH鍵生成」といった項目が出てくることがあります。
「パスワード認証」よりも「鍵認証」の方が、圧倒的に安全性が高いと言えます。
パスワード認証の弱点
パスワード認証は、言葉の通り「パスワード」を知っていれば誰でもアクセスできてしまいます。
「password123」のような簡単なパスワードでは、総当たり攻撃(ブルートフォースアタック)であっという間に突破されてしまう恐れがあります。
鍵認証の仕組み
一方、鍵認証は「鍵」というデジタルファイルを持っている人しかアクセスできない仕組みです。
仕組みを「家の鍵」に例えてみましょう。
- 鍵ペアを作る: まず、PCで「公開鍵(南京錠)」と「秘密鍵(その鍵)」のペアを作成します。
- 公開鍵: 誰に渡しても良い南京錠です。
- 秘密鍵: 自分だけが持つ鍵です。誰にも貸さず、見せないようにします。
- 公開鍵を渡す:
サーバー(家のドア)に、この「公開鍵(南京錠)」を取り付けてもらいます。レンタルサーバーの管理画面からアップロードするのが一般的です。 - 接続する:
サーバーに入ろうとすると、サーバーは「この南京錠を開けられますか?」と試してきます。 - 解錠:
持っている「秘密鍵」で南京錠が開けば、本人確認完了です。中に入ることができます。
この仕組みの優れた点は、「秘密鍵」そのものはインターネット上を流れないということです。
送られるのは「鍵を使って開けましたよ」という証拠(署名)だけです。
ですから、たとえ通信を傍受されても、手元にある「秘密鍵」自体が盗まれることはありません。
泥棒がドアの前で待ち伏せしていても、ポケットから鍵を取り出して回すところを見ても、鍵の「形状」まではコピーできないのと同じ論理です。
今すぐできる!ファイル転送ソフトの設定見直し手順
ここまで読めば、FTPのリスクについて理解できたかと思います。
では、実際にどうすれば良いのか。
現在お使いのファイル転送ソフト(FileZillaやWinSCPなど)の設定を見直してみましょう。
3分ほどで完了します。
1. 接続設定を開く
いつも使用しているソフトの「サイトマネージャー」や「接続設定」を開いてください。
2. プロトコルを変更する
「プロトコル」という項目を探してください。
ここが「FTP – ファイル転送プロトコル」になっていないでしょうか?
こちらをクリックして、「SFTP – SSH File Transfer Protocol」に変更してください。
3. ポート番号を確認する
FTPの標準は「21」ですが、SFTPの標準は「22」です(サーバーによっては異なる場合もあります)。
プロトコルを変えると自動で変わることも多いですが、念のため確認しておくと良いでしょう。
一部のサーバーでは特殊なポートを使用している場合もあるので、マニュアルを「SFTP」で検索して確認してください。
4. 接続テスト
設定を保存して、接続してみましょう。
初回接続時だけ、「このサーバーを信用しますか?(ホスト鍵の確認)」という警告が出ますが、「はい」や「OK」を押して進めて問題ありません。
これで、通信経路は暗号化され、安全な状態になりました。
今後は「接続できません」とエラーが出ても、安易にFTPに戻さず、SFTPの設定(ポート番号や鍵の設定など)を確認するようにしてください。
「とりあえずFTPで」と戻した瞬間、セキュリティはまた無防備に戻ってしまいますので、注意が必要です。
初心者が気をつけるべきセキュリティ対策
最後に、プロトコル以外でも初心者が気をつけるべき、基本的なセキュリティ対策を3つ紹介します。
1. フリーWi-Fiでの作業にはVPNを利用する
どうしてもカフェやホテルで作業しなければならない時は、VPN (*4) を利用すると良いでしょう。
VPNを使えば、Wi-Fiの区間も含めて通信を暗号化できるため、たとえ公衆無線LANのセキュリティが不十分でも、盗聴を防ぐことができます。
2. パスワードをFTPソフトに保存しない、またはマスターパスワードを設定する
FileZillaなどのソフトは、設定によってはパスワードを平文でPC内に保存してしまうことがあります。
もしPCがウイルスに感染した場合、保存されたパスワードが盗まれてしまいます。
「毎回パスワードを入力する」設定にするか、ソフト起動時に「マスターパスワード」を求める設定にしておくことをお勧めします。
3. 不要なファイルはサーバーに残さない
アップロードが完了したら、バックアップ目的などでサーバー上に古いデータを放置しないようにしましょう。
特に「backup.zip」のようなファイル名で、全データをまとめて置いておくのは大変危険です。
もし侵入された場合、そのファイルを一つ盗むだけで、全ての情報が流出してしまいます。
まとめ
今回の記事では、FTPのリスクとSFTPへの移行について解説しました。
専門用語も多くて難しかったかもしれませんが、要点は以下の3つです。
- FTPは「透明なカプセル」:通信が暗号化されておらず、パスワードも中身も丸見えで大変危険です。
- SFTPは「専用トンネル」:SSHを使って通信を全て暗号化するため安全です。鍵認証を使えばさらに強固になります。
- 設定変更は短時間で完了:ソフトの設定を「FTP」から「SFTP」に変えるだけですぐに対策できます。
Webの世界では、自分の身は自分で守るのが基本です。
もし管理しているサイトから情報が漏れてしまった場合、「知らなかった」では済まされません。
今のうちに設定を見直し、安全な運用を心がけましょう。
そして、これからWeb担当の後輩が入ってきた際には、
「FTPよりもSFTPの方が安全だよ」
と、アドバイスしてあげてください。
それが「頼れる先輩」としての第一歩となるでしょう。
用語解説
(1) SFTP (SSH File Transfer Protocol): SSHの仕組みを使ってファイルを安全に転送するプロトコルのことです。FTPとは全く別物で、セキュリティが高く、機能も豊富です。
(2) SSH (Secure Shell):
ネットワーク越しに別のコンピュータを安全に操作するための通信手順です。通信内容をすべて暗号化します。サーバー管理者には必須のツールです。
(3) FTPS (File Transfer Protocol over SSL/TLS): FTPの通信をSSL/TLSで暗号化したものです。Webブラウザの「https」と同じ仕組みだと考えてください。安全ですが、ファイアウォールなどの設定が複雑になりがちな点がデメリットです。
(4) VPN (Virtual Private Network):
インターネット上に仮想的な専用線を構築して、安全に通信する技術です。フリーWi-Fiを利用する際などの対策として有効です。
