支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • FTPは何をするためのサーバーか?利

はじめに

今回の記事では、FTPサーバーの概要やLinux、Windowsでの基本的な構築方法、FTPクライアントソフトの種類について紹介していきます。なお、まだサーバーに触れる機会が少ない方や、いまいちサーバーについて理解し切れていない方のために、最初にサーバーについての解説を含めています。そのためFTPのことだけ知りたい方は「FTPサーバーについて」の項目からご覧ください。

サーバーについておさらい

これまでサーバーに触れたことのない人は、サーバーという存在が完全なブラックボックスになっていることもあるのではないでしょうか。しかしIT業界に就職・転職する場合はサーバーの存在を無視することはできず、どの職種であっても、ある程度サーバーについて理解しておく必要が出てきます。

サーバーは、普段使っているパソコンよりもスペックが高いコンピュータ(物理的な大きさが異なるとは言い難いです)と言えます。仕組み自体は基本的にパソコンと一緒なので、全くかけ離れたものではないという点は抑えておいてください。ではなぜ呼び方に違いがあるかというと、パソコンとサーバーでは役割が真逆となるためです。

この違いは、ホームページ閲覧を例にとるとわかりやすいです。パソコンの利用者がホームページを見たいと思った時は、直接URLにアクセスしたり、検索結果にアクセスしたりして対象のホームページを表示させます。ホームページを表示させるためにパソコン利用者は、ホームページのデータを転送してもらうようリクエストを出します。そのリクエスト先がサーバーとなり、サーバーはリクエストを受け取ると、あらかじめ保存しておいたデータをパソコン側へ転送するという流れになります。「サーバー」はウォーターサーバー、ビールサーバー等の言葉からもわかるように、何かを与える受動的な役目のものを指す言葉です。ITでいうサーバーも、パソコンから送られるリクエスト(能動的)に対して、データを与える(受動的)という役目を持っています。

以上の流れを見ると非常に簡単な処理が行われているだけのように思えますが、これを実現するために、実はサーバーは様々な機能を駆使しています。様々な機能を駆使するということは、それだけメモリ等のリソースを多く使用します。限られた範囲に公開しているサイトであればまだしも、一度に数十万人も閲覧するような人気のサイトであれば処理が追いつかず、異常が発生してしまう可能性があります。それを避けるため、サーバーの処理を分けて負荷を分散しなければなりません。そういった理由から、Webサーバー、FTPサーバー、メールサーバー、DNSサーバーというように、各役割ごとに分けてサーバーを構築・管理するのが一般的です。

FTPサーバーについて

FTPというのは「File Transfer Protocol(ファイル転送プロトコル)」の略であり、ファイル等のデータ転送を行う役割を持ったサーバーのことを表します。プロトコルについて今回詳細は省略しますが、「規格」のことをそう呼んでいます。転送というのは、具体的に言うとサーバーにデータをアップロードしたり、ダウンロードしたりすることです。この処理は、パソコン側のFTPクライアントソフトと、FTPサーバーの間で行われます。パソコンでホームページを閲覧する分にはクライアントソフトを利用することはないですが、例えばホームページデータをパソコン側で作成し、それを公開するため、サーバーにアップロードする際等に必要となる処理です。なおFTP接続はブラウザでも可能で、普段「http://」で表示されるアドレスバーの部分に「ftp://」でサーバーを指定してアクセスすることで、データの転送が可能となります。ただしブラウザでのFTP操作に関しては操作性が良いとは言い難いので、特にFTPクライアントソフトをインストールできない環境下でパソコンを利用しているのでなければ、ソフトを利用しての接続をおすすめします。

また、かつてはパソコンとサーバーのOSの違いによって、転送されたデータが解釈できないという状況も発生していましたが、現在はパソコン側がWindows、サーバー側がLinuxと異なったOS間であっても基本的には問題なくデータのやり取りができます。FTPクライアントソフトによっては、この過去の問題を解決するための「バイナリモード」「アスキーモード」という設定が残っているものもありますが、これからFTPを利用する方は、特に意識しなくても問題ない部分と言えます。

FTPSとSFTPについて

FTPはコンピュータ間のデータのやり取りにおいて重要な機能であるにもかかわらず、セキュリティが脆弱というデメリットがあります。このデメリットを解消する新たな仕組みとしてFTPSやSFTPというものが出てきました。とても似ていて紛らわしい名称の両者ですが、その仕組みが全く異なるため、解説しておきます。

FTPは、実際にデータを転送するコネクションの他に、FTPクライアントソフトからサーバーへ接続の要求を行うための制御を行うコントロール用のコネクションがあり、この2つで構成されています。誰でもサーバーに接続してデータのアップロード・ダウンロードすることを可能にしたいのであれば特に制御は不要ですが、普通は、不特定多数が接続して勝手にファイルをアップロードされるようなことがあってはなりません。それを制御するために接続時のアカウント、パスワードをあらかじめサーバー側へ設定します。FTPクライアントソフトにこのアカウント、パスワードを設定してサーバーとの接続を確立するのがFTPでの接続方法です。なお、FTPには「anonymous」という匿名のユーザーで接続可能な状態へ設定することもできますが、「anonymous」を利用するのはごく一部のサービスです。一般的にFTP接続においてはアカウント、パスワードを設定すると覚えておきましょう。

FTPSは接続の仕組みこそFTPと同じですが、サーバー側にSSL証明書を導入することで、送受信するデータを暗号化できるようにした改善した接続方法です。なおFTPではデータ転送コネクションと制御コネクションのために20、21番という2つのポートを利用するのに対し、FTPSの場合は989、990番を利用します。

FTP、FTPSでは2つのコネクションが必要になるので、複数のポートを開かなければならず、外部からの攻撃を防ぐために極力開くポートを少なくしたいというセキュリティ面の対策は実現できません。この2つのコネクションを、SSH(Secure Shell)の仕組みを利用することで1つに収めることを可能にしたのがSFTPです。SSHを利用することで送受信するデータの暗号化も実現できます。また、パスワード認証だけではなく、秘密鍵/公開鍵といったSSHキーの仕組みで認証することで、パスワード流出等のリスクも回避可能としています。

以上のように、データ転送のためにサーバーへ接続する方法は複数ありますが、基本的にサーバーを構築する場合はFTPS、SFTPいずれかの方法で接続可能な仕様に設定しておくのがおすすめと言えます。

サーバー側でのFTP構築方法

FTP通信を行うためには、サーバー側にFTPソフトをインストールする必要があります。ここでは、Linux、Windowsそれぞれで良く利用されるvsftpd、IISのインストール方法、設定方法を紹介します。自分でサーバーを構築してFTP接続してみたいという方は、ぜひこちらをご参照の上でお試しください。

【Linux】vsftpd

CentOS等のLinuxで利用されることの多いvsftpdは、コマンドを使ってインストールします。rootユーザーに切り替え、まずは「yum -y install vsftpd」でインストールを実行しましょう。インストールが完了したら、正しくインストールができているか「rpm -q vsftpd」というコマンドで確認してください。「vsftpd - (バージョン)」と表示されたら正しくインストールできています。

続いて、設定ファイルに基本的な設定をしていくので、「/etc/vsftpd/vsftpd.conf」にアクセスしましょう。なお、設定ファイルを編集する場合もroot権限のまま作業が必要となります。また特に「.conf」という設定ファイルのように重要なファイルの編集をする時は、編集前にバックアップをとっておくことをおすすめします。バックアップは「cp」コマンドを使って「cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bk」を実行するだけで可能です。これを実行すると「vsftpd.conf」の内容が「vsftpd.conf.bk」という名称のファイルにコピーされます。

バックアップを取得したら、viやnanoといったエディタを使って実際にファイルを編集していきます。今回はnanoを使う場合について紹介しますが、その際は「nano /etc/vsftpd/vsftpd.conf」を実行します。「anonymous_enable=YES」と匿名での接続が有効となっている部分を「anonymous_enable=NO」に変更して無効にしましょう。また、「listen=NO」「listen_ipv6=YES」という記述がありますが、これはIPv4での接続が無効、IPv6での接続が有効になっている状態です。まだまだIPv4での接続が主流となっているため、「listen=NO」は「listen=YES」に変更します。もしIPv6で接続することがないのであれば、もう一方は「listen_ipv6=NO」としておきましょう。編集は以上です。完了したら保存して終了させましょう。

【Windows】IIS

IISは、Windowsの標準コンポーネントとしてWindowsOSに実装されているWebサーバーですが、初期状態では機能が無効にされている場合があります。そのため利用する際は有効にする必要があります。Windowsのコントロールパネルにある「プログラム」から「Windowsの機能の有効化または無効化」という部分をクリックします。Windowsの機能一覧が表示されるので、その中から「FTP Service」「IIS管理コンソール」の2つを探し出してチェックを入れ、「OK」をクリックすることで有効となります。

次にFTPユーザーを作成していきましょう。キーボードのWindowsキーの後に「ユーザー」と入力すると「他のユーザーの追加、編集、削除」があるのでクリックし、さらに「その他のユーザーをこのPCに追加」をクリックします。その後にMicrosoftアカウント作成に関する画面が続きますが、今回は「このユーザーにサインイン情報はありません」「Microsoft アカウントを持たないユーザーを作成する」をクリックしてしてください。「このPCのユーザーを作成します」という画面でFTPのアカウント・パスワードを任意の文字列で設定し、「次へ」で進んで完了させましょう。

ユーザー作成が完了したら、キーボードのWindowsキーの後に「IIS」と入力して「インターネット インフォメーションサービス(IIS)マネージャー」の画面を表示させます。左側メニューの「サイト」をクリックしたら、右側メニューの「FTPサイトの追加」をクリックします。表示された画面で、FTPのサイト名や接続先となる「物理パス」を任意で入力し、「次へ」をクリックします。「バインドとSSLの設定」という画面が表示されますが、今回はIPアドレス部分で「すべて未割り当て」、SSL部分で「無し」を選択し、「次へ」をクリックします。「認証および承認の情報」画面では、認証を匿名、承認を「匿名ユーザー」とし、「終了」をクリックします。IISの画面に戻ると、設定したFTPのサイト名が真ん中のサイト欄に表示されています。

最後に、ここまでの設定が正しく行えているか簡単に確認する方法を紹介します。Windowsでコマンド操作が可能なコマンドプロンプトを利用する方法となるので、Windowsキーの後に「cmd」と入力してコマンドプロンプトを起動させます。コマンド入力画面で「ftp」と入力して実行してみましょう。さらに「open localhost」を実行後、作成したユーザーとそのパスワードを入力してエンターキーをクリックし、接続に成功すると「230 User logged in.」と表示されます。

無料で利用できる代表的なFTPクライアントソフトを以下に紹介します。それぞれ特徴があるので、自分の環境に合うもの、使いやすいもの、使いたい機能があるものを選択して利用してみましょう。

FFFTP

WindowsOSにおける定番のソフトで、日本人によって開発されました。シンプルな作りという特徴があるため、初めてFTPソフトを利用する場合も直感的に設定、操作しやすいです。SFTPには対応していないですが、FTP、FTPSでの接続が可能です。大量なファイルの一括アップロードや、ドラック&ドロップ、漢字コードの自動変換といった操作も可能です。

Cyberduck

Mac、Windowsの両OSで利用できるソフトで、日本語を含めた多数の言語に対応しています。FTP、FTPS、SFTPが可能な他、WebDAVやDropbox、Google Cloud Storage等の各種クラウドストレージへの接続も可能という特徴があります。また、サーバーからデータをダウンロードしなくてもファイルの編集が可能です。

FileZilla

FTP、FTPS、SFTPでの接続が可能な他、Windows、Mac、LinuxいずれのOSでも利用可能で、日本語を含めた多言語に対応しているため、ソフト選びに迷ったらまずFileZillaをインストールすれば困らないと言えます。ドラッグ&ドロップでの操作が可能な他、ファイルの高速転送も可能です。

WinSCP

日本語含めた複数の言語に対応しており、FTP、SFTPの他、SFTPと同じく暗号化技術とSSHを利用して高速なファイル転送が可能なSCP(Secure Copy Protocol)にも対応しています。アップロード元のローカル環境と先となるサーバー側の同期を取れるミラーリング機能がある点、複数のFTPに一括接続できる点が特徴となります。

まとめ

サーバーやパソコンといったコンピュータ間でデータの転送を行うには、FTPサーバーが欠かせないということがわかっていただけたことでしょう。FTPクライアントソフトからサーバーへ接続可能とするためにFTPサーバーのインストール、設定を行うこと自体は特に難しくありません。しかしFTPはセキュリティが脆弱というデメリットがあるため、必ず開発するシステムに適したセキュリティの設定を施したうえで運用する必要があります。ぜひ今回の記事を、vsftpdやIISでのFTPサーバー構築時に参考にしていただくことはもちろん、FTPクライアントソフトの選択、FTPの基本を振り返りたい場合、別の人にFTPの基礎について教える際などの参考としていただけると幸いです。