ファイル転送を行うことができるFTPの基本的なメカニズム
様々なサーバの構築または運用を行っている時に、どうしても必要なファイルをサーバ内に格納しなければならないケースがあります。本記事では、ファイル転送を行うFTPについて、どのようなメカニズムになっているかをご紹介します。
FTPはファイル送受信時に活用するプロトコル
FTPとは、「File Transfer Protocol」というファイル送受信用の通信機能のことです。この機能はプロトコルと呼ばれ、htmlやSSHなどの様々な機能を持っています。FTPはその中の1つで、コンピューターが認識してファイルの送受信を円滑に行っています。
ファイルの送受信を行うことができるFTPで主にできること
FTPを活用して可能な作業は3つあります。
1つ目は、ファイルの送受信を行えることです。接続時はサーバとクライアントそれぞれ通信ができる状態を確認した後に、データの運搬が行われます。
2つ目は、サーバとクライアント間でファイルの送受信を行う際に、相手の対象となるフォルダに入って中身の一覧をチェックできることです。様々なFTP用のツールを使うと、より簡単に情報を確認することができます。
そして3つ目は、FTP用サーバへアクセスしてデータの操作を行えることです。編集や保存だけでなく、アクセス制御も行うことができます。
送受信におけるFTPのデメリットと対応策について
指定した場所へファイルなどの送受信を行うことができるFTPですが、便利な反面デメリットも存在します。それはセキュリティ面に間することで、暗号化していない平文化した状態で送受信を行っている点です。
暗号化されていないので、時にはデータの中にIDやパスワードなど重要な情報が格納されているケースもあります。しかし、傍受されてしまうと簡単に見えてしまうため、外部漏洩の危険性もあります。また、不正アクセスの危険性も考えられ、別途セキュリティ面で対策を講じなければならないことも出てきます。
そこで、デメリットを補うためセキュリティ面で暗号化を加えた方法が昨今誕生しています。システム構築を行う時には、FTPを利用せず暗号化した状態でファイル転送が可能なプロトコルを選択することも必要です。
サーバとクライアント間で行われているFTPのメカニズム
FTPの機能は主にファイルの送受信を行うことになりますが、コンピューターの中でどのように動作しているかエンジニアとしては把握しておく必要があります。転送時にはコネクションが必要となりFTPでは2つのコネクションを利用しています。
送受信時に活用する2つのコネクションでFTPが成立する
コネクションというのは、通信ができる機器同士でプロトコルを活用しながら接続することを指します。接続が確立した後で識別番号や位置情報などを確認しながら、FTPはデータについて制御と転送を同時に行っていきます。システムを取り扱う際に処理を通過させるためにポートを利用しますが、ウェルノウンポートという一般的に使用するプロトコルはポート番号が割り振られています。そこでFTPはデータ転送を行う20番ポートと、データの制御を行う21番ポートを利用しています。
また、ポートだけでなくFTPではコントロールコネクションとデータコネクションがあり、組み合わせることによって送受信を可能にしています。コントロールコネクションはFTP利用時にコマンドや利用者の情報を送信しながら、相手からの応答を受信する機能を持っています。データコネクションは実際に送受信を行うデータを転送する際に利用しますが、サーバ側からクライアント接続を行うアクティブモードとクライアントからサーバ側に接続するパッシブモードを使いながら接続し処理を行います。
2つのコネクションが存在するのは理由があり、ファイル転送時に効率が良くなるためです。1つのコネクションでコントロールしながらデータ転送を行うと処理にかかる時間も増えてしまい、処理中に実行したコマンドなどが実行されなかったり、データ内へ紛れてしまったりすることもあります。しかし、2つのコネクションがバランス良くサーバとクライアント間で適切に分けて処理を行うことによって、よりスピーディーな処理を行えるようになります。
例えば処理中に中断するコマンドを実行した時、コントロールコネクションが中心に処理を行えば制御を行えます。データコネクションはコントロールコネクションで正常に処理できると確認できた後で実行されるので、負荷をかけずに処理を終えることができます。
バイナリモードとアスキーモードがあり適宜使い分けが必要
FTPを利用してファイルなどの転送を行いますが、形式によってモードを変えることができます。主にテキストなどのファイルを転送する際に活用するアスキーモードと、圧縮ファイルなどのテキスト形式で読み込めないように転送するバイナリモードの2つがあります。転送時にそれぞれのモードで分かる特徴の1つに、ファイルの改行コードがあります。アスキーモードではテキストファイルなどで活用される、文字が認識できるSJISなどのコードが利用されています。一方、バイナリモードだとUNIX関連で多く利用されているEUCコードなどが利用されます。
アスキーモードで送受信を行う際には、テキスト形式など文書などが多く記載されているファイルを対象にするのが一般的です。仮にUNIXで使用するシェルなどをアスキーモードで送受信を行うと、実行時にコマンドが文章として認識されてしまうことがあり、設計通りに実行されないケースが出てしまいます。極力実行コマンドが入っている場合には、バイナリモードで送受信を行うようにしましょう。
そして、システム構築においてはバイナリモードを基本とするケースが多く、安全なFTPツールでは送受信時には、バイナリモードをデフォルト設定にしています。アスキーモードで送受信する際に手動設定をするので、操作する際には注意しなければなりません。
転送におけるセキュリティ面で安全な様々なプロトコルがある
開発用とリリース用のサーバを立てている環境があれば、同じようにFTPを利用する際にもセキュリティ面で気を遣うことがあります。リリースしたデータがセキュリティ面で暗号化されずに転送されるので、他の人に見られるリスクもあります。そのような中で昨今、セキュリティ面に特化したFTP関連のプロトコルも生まれています。それぞれ暗号化した状態でファイルなどの送受信を行えるようになっており、重要なデータを欠損なく送受信できるようになっています。
実際にシステムに導入していこうとする時には他にもコスト面だけでなく、負荷がどのくらいかかるかもチェックしておきましょう。大容量のデータを送受信する時には負荷が大きくなってしまうので、より高速かつ負荷のかからないプロトコルを選択することも重要です。
暗号化した状態で転送可能なFTPの代替となるプロトコル
昨今セキュリティ面で暗号化されていないFTPを利用するよりも、より暗号化した状態でファイルやデータなどを送受信できるプロトコルが注目されています。セキュリティだけでなく通信速度もFTP以上に速くなっていることもあるので、システム構築で利用する際には選択が必要です。
FTPのセキュリティ面をカバーするFTPS
FTPではファイルなどの送受信を行う時に、どうしても平文化している状態で処理が行われます。その弱点を克服するために他から読み取れないように暗号化した状態で、FTPと同じように処理を行うのがFTPSです。正式名称はFTP over SSLで、FTPをセキュリティ面で拡張したプロトコルとなっています。ポート番号もFTPと異なっており、転送用が989番で制御用が990番を利用しています。暗号化を実行するモードが分かれており、安全に送受信が行えるようになっています。
レンタルサーバなどでも活用されていますが、アクセス制御を行うことが可能です。IPアドレスで設定を行い、特定のアドレスのみ対応できるように設定することもできます。
SSHを活用して安全にバイナリモードで送受信するSFTP
転送する中でバイナリモードで送受信する際に、より暗号化を強化しているのがSFTPです。SSHを活用しながら暗号化した状態で通信を円滑に進めつつ、安全にファイルなどの送受信を行います。
また、フォルダをそのまま転送することはできないものの、圧縮した状態で転送ができます。SCPと混同されることもありますが、SFTPはファイル転送が途中で中断しても再開してくれます。ただ送受信を行う際にファイルサイズなどで負担が大きくかかってしまうこともあるので、SCPと比較して判断することが重要です。
UNIX系シェルなどを安全に送受信するSCP
他の2つと同じようにSSHを利用して、SFTPより通信速度を速いのが「SCP」です。UNIX系シェルなどを送受信する際に活用されていますが、SFTPとの併用が求められることもあります。また、SFTPと同じような機能を持っていますが、通信速度がSFTPと比較して高速です。セキュリティ面でも安全なので、暗号化して送受信のスピードを早くしたい時にはおすすめといえるでしょう。
FTPはセキュリティ面で向上している
昔からファイルなどの送受信用のプロトコルとしてFTPが利用されていましたが、セキュリティ面で不安を抱えることも多くありました。しかし、昨今SSHを利用しながら送受信時に傍受されないよう暗号化され、利用しやすいプロトコルも誕生しています。それぞれを利用しながら、円滑にファイルなどの送受信を行えるようになっています。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから