FTPは危険なのか!?

佐野

佐野 2015年9月1日

従来のFTPは危険と言われていますが、
具体的な根拠もないままでは、どうにも納得がいかないため、
何が危険なのかを、独自に調べてみました。

暗号化されていない

通常のFTPでは、送受信の際に暗号化されず、平文で送られるそうです。
でもそれって普通じゃね? とは思いますが、
確かにそれだと、通信が傍受されていると、送受信内容がそのまま見えてしまいます。

具体的に、どのような方法で傍受するのかは、わかりませんが、
常時サーバーに貼り付いて、FTPに使用するポートを傍受するといった所でしょうか。

Gumblarというウィルスの餌食になった

ガンプラと似ていますが、これと間違えるのはケロロ軍曹ぐらいなものでしょう。
冗談はさておき、ガンブラーとは過去にFTPソフトに対し猛威を振るったウィルスの一種です。
このウィルスはPC内に入ったFTPアカウント情報を取得し、攻撃者に送信していたとの事ですが、
PCに入り込んだウィルスが原因であれば、FTPに限らずどんなアカウント情報も
標的になっていたと言ってもいいと思うのですが・・・

代替案

とにかく、暗号化されていないFTPを使わないという代替案で行けば、
逆に暗号化されている方式で行えばいいという話でしょう。
もっとも、PC内にウィルスが入り込んでしまえば、元も子もない気もしますが。
それでも気持ち的にも暗号化しておくに越した事はないでしょう。

暗号化されている方式と言えば、SFTPとFTPSが候補となります。
両者とも同じように見えますが、全く異なる方式です。

SFTP

SSHと同一の仕組みで、ファイル転送を行う。

SSHと同様の暗号化が行われています。
FTPソフト「WinSCP」等でも対応しており、
設定方法としては転送プロトコルに「SFTP」を指定し、
秘密鍵を使用するという違いぐらいです。

難点としては、サーバー設定用に使用するrootアカウント、
もしくはroot権限が使用可能なアカウントと同じポートを開放する事になるので、
共用サーバーの場合は、各お客さんが利用するIPアドレスの分だけ開放する事になるでしょう。

秘密鍵があるとはいえ、22番ポートを開放しておくのは危険な行為です。

FTPS

FTPにSSL暗号化を施したもの。要はHTTPSとほぼ同様。
ただしポートは990番を使用する場合もあり。

証明書がないと警告は出ますが、通信自体は暗号化されています。
しかし、お客さんに案内する場合には、証明書がないと疑問視されるかもしれないので、
極力配慮しておいた方がいいかもしれないですね。

具体的な解決案

とは言いつつも、自分もまだ検討中な身ではありますので、
具体的な対策や設定は、まとまってから、また近いうちに書ければと思っております。

しかし、現時点でもできる事と言えば、

ファイル転送に使用するポートのIP制限を行っておく

お客さんの方でも少々お手間は取らせる事になるでしょうが、
IPアドレスで制限するという方法も有効でしょう。

仮にログイン情報が漏洩したとしても、それだけでは改ざんも不可能になりますからね。
それでも改ざんされるというのなら、PCを遠隔操作された状態であり、
ここまで来ると、もはやFTPの問題ではない気もしますが・・・

SFTPやFTPSのような暗号化された通信を使用する

やはり暗号化通信の導入でしょう。

FTPSは、証明書の有無に関わらず、FTP接続ソフト側で暗号化送信は可能になるはずです。
証明書は、サーバーが偽装されたものでない事を証明するためのものなので、
HTTPSで使用するSSL証明書と同様です。

SFTPは、SSHと同規格の通信方法で、AWSで言えば「ec2-user」アカウントでもファイル転送は可能です。
しかし、ルート権限を持つアカウントをそのまま使用する事に抵抗があるという場合、
SSHで接続する他のアカウントを作成し、ファイル転送専用にしてしまうのもよいでしょう。

ちなみに、AWSのAmazon Linuxの「ec2-user」のユーザーディレクトリをいじると、
場合によってはroot権限を持ったアカウントでのログインすら不能になる事もあり、
復旧には、かなりの手間を要します。
なので、ついでに「ec2-user」等の部分を触れないアカウントにしておくのもいいでしょう。

SFTP用アカウントの作成方法は、別途書いていきたいと思います。