サーバーへのファイルアップロードといえば「FTP」を思い浮かべるユーザが多いかもしれませんが、セキュリティの観点から現在では使用を推奨されていません。FTPはサーバーとクライアント間でファイル転送を行うための代表的な通信プロトコルですが、セキュリティ面に大きな課題があります。本記事では、FTPの概要と仕組み、デメリットと、FTPの代替策としてのFTPSとSFTPについて解説します。
目次
FTPとは
FTPは、世界中で使用されている歴史のあるファイル転送方法ですが、具体的にはどのようなものでしょうか。まず、FTPの概要と仕組みについて振り返ってみましょう。
FTPの概要
FTP(File Transfer Protocol)は、ネットワークで接続されたクライアントとサーバーの間でファイル転送を行うための通信プロトコル(通信規約)の一つです。ファイル転送プロトコルとして世界中に広く普及しており、1970代年代に開発され、Webサイトの閲覧に使用されるHTTPよりも歴史のあるプロトコルです。
用途としてはファイルの転送ですが、具体的には以下のようなシーンで利用されます。
- WebサーバーへHTMLファイルや画像などの各種データファイルをアップロードする
- ソフトウェアなどを配布サイトのFTPサーバーからファイルをダウンロードする
- サーバーへ接続し、ファイルの移動や変更などの操作を行う
FTPは、WindowsやLinuxなどのOSからFTPコマンドを実行することや、FileZillaやFFFTPといったFTPクライアントソフトを使って実行することが可能です。
FTPによるファイル転送の仕組み
FTPを利用してファイル転送を行う場合、サーバー側を「FTPサーバー」、クライアント側を「FTPクライアント」と呼びます。FTPサーバーとFTPクライアントの間でコネクションを確立し、データ転送に関する各種モードなどを選択してファイル転送を行います。
コネクションと通信の流れ
コネクションとは、サーバーとクライアントの間で確立される通信経路のことを指します。FTPの通信においては、「制御用コネクション」(コントロールコネクション)と、「データ転送用コネクション」(データコネクション)の2つのコネクションを確立する必要があります。制御用コネクションでログインや転送に関する情報のやりとりを行い、データ転送用コネクションで実際のファイル転送を行います。
FTPの通信で使用するウェルノウンポート(TCPポート)は、制御用コネクションは21番ポート、データ転送用コネクションは20番ポートの2つです。FTPはこれら2つのポートおよびコネクションを使用し、以下のような流れでファイル転送を行います。
【制御用コネクション】21番ポート
① FTPクライアントからFTPサーバーに対し、接続要求
② FTPサーバーから応答
③ クライアントでユーザ名とパスワードを入力
④ FTPサーバー側で認証し、成功後ファイル転送に関する情報(動作モード、データ転送モードなど)を確認
⑤ クライアントからファイルの転送要求
【データ転送用コネクション】20番ポート
⑥ FTPサーバーからデータ転送の接続要求
⑦ FTPサーバーからクライアントへデータ転送
【制御用コネクション】21番ポート
⑧ データ転送が終了したので、FTPクライアントから切断要求
⑨ 通信の終了
FTPの動作モード(アクティブモード・パッシブモード)
FTPの動作モードには、「アクティブモード」と「パッシブモード」があります。アクティブモードとパッシブモードの違いは、データ転送用のコネクションを確立する際に、サーバーとクライアントどちらの側から接続要求するかという点です。
- アクティブモード:FTPサーバーから接続要求する。20番ポートを使用。
- パッシブモード:FTPクライアントから接続要求する。ランダムなポートを使用。
前項で説明した通信の流れは、アクティブモードで説明しています。
標準的に利用されるのはアクティブモードで、制御用コネクションで通知されたクライアント側のIPアドレスとポート番号に対してFTPサーバーから能動的(アクティブ)に接続を要求します。インターネットなど外部ネットワークのFTPサーバーと通信するとき、ファイアウォールのポリシーやNAT(※)の設定などによっては通信が正常にできないという課題がありました。
そこで考案されたのがパッシブモードです。パッシブモードは明示的に指定した場合に利用できる方式で、FTPサーバーはデータ転送用のポートをクライアントに通知して受動的(パッシブ)に接続を待ちます。これによってアクティブモードの課題は解消できましたが、データ転送用のコネクションの手続きに入るまで使用するポートが決定しないため、サーバー側は多数のポートへの接続をオープンにしておく必要があるという難点があります。
※ NAT:Network Address Translationの略称で、一般的にプライベートIPアドレスをグローバルIPアドレスに変換する技術のことを指す。
データ転送モード(ASCIIモード・バイナリモード)
データ転送には、主に以下の2つのデータ転送モードが使われます。
- ASCII(アスキー)モード
- バイナリモード
ASCIIモードとは、テキストファイルの転送に使われる転送モードです。ASCIIモードの特徴は改行コードや文字コードの変換が自動で行われる点です。
バイナリモードとは、送信側は各ファイルをバイト単位で送信し、受信側はバイトストリームを保存する転送モードです。バイナリモードの特徴は送信側・受信側ともデータの変換を行わないことです。現在では、FTPを利用する際や、FTPを使用したアプリケーションを実装する際は、バイナリモードを使用することが推奨されています。
FTPのデメリット
FTPは50年の歴史がある古いプロトコルで、世界中に普及して使用されてきました。しかし、非常に古いプロトコルであるためセキュアな設計が行われておらず、暗号化通信に対応していないことがデメリットであり、現在は使用が推奨されていません。
FTPは、制御用コネクションとデータ転送用コネクションを接続する必要がありますが、両コネクションともに通信が暗号化されず、データが平文で送信されてしまいます。そのため、ログイン情報や、送信データなどが傍受され、読み取られてしまう危険性があります。
また、多くのセキュリティ脆弱性についても指摘されており、RFC2577(1999年5月)によると、総当たり攻撃、FTPバウンス攻撃、DoS攻撃など様々な脆弱性が指摘されています。
FTPの代替プロトコルであるFTPS・SFTP
安全にファイル転送を行うためには、どのような方法があるのでしょうか。FTPのデメリットを補うプロトコルであるFTPSとSFTPの概要と仕組みについて解説します。
FTPSとは
FTPS (File Transfer Protocol over SSL/TLS)とは、FTPで送受信するデータをSSL/TLSで暗号化する通信プロトコルです。FTPのセキュリティ強化を目的として、1990年代後半に作られたFTPの拡張機能です。SSL/TLSを使用して暗号化するため、FTPサーバーにSSL証明書の導入が必要です。
FTPSはFTPと同様に、制御用コネクション(989番ポート)とデータ転送用コネクション(990番ポート)の2つのコネクションを確立し、通信を行います。
SFTPと比較して、ASCII/バイナリモードのサポートやフォルダ単位での転送が可能です。
SFTPとは
SFTP(SSH File Transfer Protocol)とは、SSH(Secure Shell)を利用して暗号化し、ファイルを転送するプロトコルです。セキュリティ面で弱いFTPに代わるものとして1990年代後半に開発されました。
SSHとは、鍵暗号やパスワード認証などの技術を利用して、遠隔にあるコンピュータとの通信を暗号化するプロトコルです。SFTPはSSHを介することで、通信を暗号化した状態で安全にファイルを転送することができるのです。SFTPはSSHが利用できる環境であれば、SFTP用のサーバーを構築する必要もありません。
SFTPには「FTP」という言葉が入っていますが、FTPとは根本的に方式が異なるものです。TCP22番ポートを使用し、単一のコネクションでファイル転送が可能となっており、この点もセキュリティ面のメリットといえます。
FTPSとSFTPの違い
最も大きな違いは、FTPSはFTPと同じように制御用とデータ転送用の2つのコネクションを利用し、SFTPは1つのコネクションで完結するという点です。SFTPは1つのポートしか利用しないため、セキュリティを確保しやすいというメリットがあります。
FTPS・SFTP対応のファイル転送ツール
最後に、FTPSとSFTPに対応している代表的なファイル転送ツールを紹介します。
- WinSCP
- FileZilla
- FFFTP
- Cyberduck
WinSCP
WinSCPは、Windows OS上で動作可能なオープンソースでグラフィカルなファイル転送クライアントソフトです。旧来のFTPに加え、FTPS・SFTPにも対応しています。プログラム内部ではPuTTYを使用してSSHでの通信を実現しており、バージョン5.13からはAmazon S3への接続にも対応しています。
FileZilla
FileZillaは、ドイツのTim Kosse氏らによって2001年に開発されたファイル転送ソフトで、現在はオープンソースとして利用されているファイル転送ツールです。Windows/Mac両対応(Linuxも対応)のマルチプラットフォームで動作することが特徴で、こちらもFTP・FTPS・SFTPに対応しています。4GBを超える大容量ファイル転送が可能であり、最大10ファイル同時転送が可能です。
FFFTP
FFFTPはWindows用FTPソフトとしては最も有名なものといえます。1997年に曽田純によって開発された国産ソフトであり、日本語ユーザにとって非常に親切な作りとなっています。2011年に開発者自身による開発は終了したが、その後も有志によってオープンソースとして開発が継続されています。SFTPには対応していませんが、FTPSの利用が可能です。
Cyberduck
CyberduckはDavid V. Kocher氏らが開発し2002年にリリースされたオープンソースのファイル転送ソフトです。Macユーザから人気ですが、Windowsにも対応しています。FTP・FTPS・SFTP・WebDAV・クラウドストレージ(Amazon S3やGoogle Cloud Storage、DropboxやBoxなど)への接続に利用可能です。25言語以上に対応しており、日本語にも対応しています。外部エディタとのシームレスな連携も特徴で、サーバー上でファイルの編集をすることもできます。
まとめ
PCやサーバー間でのファイル転送は業務やシステムを運用する上で必須の仕組みですが、サイバー攻撃も増加している昨今、セキュリティの観点から脆弱なFTPを使用することはやめるべきです。代わりにセキュアなファイル転送の手段として、FTPSやSFTPなど別のプロトコルを使用することをお勧めします。FTPソフトもFTPSやSFTPに対応しているものが多いので、対応状況を確認した上で、自分にとって使い勝手の良いものを選ぶと良いでしょう。
この記事を読んだ人へオススメ
VPSとは? レンタルサーバーや専用サーバーとの違いとメリット・デメリットを解説
サーバーを利用したい場合、自社で物理サーバーを購入・設置して利用するオンプレミス型だけでな...
2022.01.07
主要なクラウドサーバーを徹底比較! VPS・レンタルサーバとの違い、選定時のポイントとは
近年、自社のサーバーインフラとしてクラウドを導入する企業が増えていますが、クラウドサーバー...
2022.03.16