安心・安全なFTP通信を実現するために

2 min read

先日業務で使うことになり、FTP通信を知りました。
今日初めてFTPでファイルを本番環境にアップするときはハラハラでした。
今後のためにも、ここで一度FTPについて調べておきます。

FTPとは

まずは、FTPの定義から、、、

FTPとは「File Transfer Protocol」のことであり、ファイルを転送するための通信規格です。クライアントとサーバ間で、ファイルのアップロードやダウンロードを行うときに使われるプロトコルです。[1]

こんなにもわかりやすい説明があるでしょうか?感謝です。

HTTPも同じく通信規格。HTTPはブラウザ・Webページを表示する際に利用する。

FTPの仕組みを簡単に

FTP通信をするクライアントとサーバーはそれぞれ、PIとDTPという機能を持つそう。

PI(Protocol Interpreter)

PIは指示内容をプロトコルにインタプリタ(翻訳)することを担当しています。そしてサーバー側とクライアント側双方のPIが、互いに通信し合っています。FTPクライアントによる操作が、直接FTPサーバーに影響するわけではなく、インタプリタ(翻訳)という中継ぎが存在しています。[2]

DTP(Data Transfer Process)

DTPは、実質的なデータ転送プロセスを示しています。先に説明したPIとこのDTPの2つが揃って初めて、念願のファイル転送が実現できます。なおDTPもサーバー側とクライアント側両方にあり、相互に通信するだけでなく、PIとも連携しています。[2:1]

なるほどー。PIはクライアントでの操作を翻訳してくれてサーバーで実行できるように、DTPは転送のプロセスで問題が生じないように調整をしてくれてるってことかな。

合っていますでしょうか?

アップロードの手順

アップロードまでの手順を0から辿ります。

  1. FTPソフトを選ぶ
  2. サイトを登録
  3. サーバーに接続
  4. ファイルをアップロード

1. FTPソフト(FileZilla)を選ぶ

細かい仕組みが理解できていなくても、正しく使えればいい!(特にパッケージは)
そう思い、シンプルなFTPソフトとして評判のFlieZillaをインストール。

https://filezilla-project.org/download.php?type=client

実際に業務でもこのアプリを使用中。使いやすいです!

2. サイトを登録

アプリを開いたら、左上のアイコンからサイトマネージャーを開きます。

上記の欄にある、host,user,passwordに該当する情報を入力する。

3. サーバーに接続

OKで登録が完了したら、サーバーに接続するための情報を保存することができました。
Connectでサーバーに接続します。

4. ファイルをアップロード

左側のタブにローカルのファイルが、右側のタブにリモート(サーバー)のファイルが表示されます。
ローカルで更新したいファイルを右クリックして、uploadを選択。
ログで更新のステータスを確認することができます。

安心・安全のためのTips

暗号化されたFTP: SFTP を使う

通常のFTPではサーバーにアクセスするために必要な情報を暗号化することなく通信をしているようです。もし通信内容を見られた場合、そのような情報も筒抜けになる可能性があります。この脆弱性をカバーするために用いられるのがSFTPです。

SFTP は SSH FTPの略です。

Githubなどのソースコード管理サービスで端末のアクセス権を認証するときに使いますよね。
これがFTPにも適用できるようです。FTPサーバーとこのSSHを共有しておくことで、認証が安全に行えるんですね。

他の暗号化された企画としては FTPS や SCP と呼ばれるものがあるそう。

IPアドレスの固定化

FTPサーバーにアクセスすることのできるIPアドレスを制限するのもセキュリティを高めるには良さそうです。そのときに固定のIPアドレスを取得すると、セキュリティはもちろん認証の負担も減らせそうです。

FTPパスワードの複雑化

ブルートフォースアタックを受けたとき、簡単なパスワードだと偶然解読されてしまう可能性があります。そのようなケースに備えて、予めパスワードを複雑なものにしておくと良さそう。

パソコンのセキュリティ問題

OSなどを常にアップデートし、セキュリティのサポートを受けられる状態にしておく。
ウイルスなど外部からFTPサーバーが影響を受けることがないように、ブラウザで制限をかけられるようなサイトや怪しいファイルを無闇にダウンロードなどしないようにする。

こんな所でしょうか。

セキュリティ対策については以下の記事がとても参考になりました。

https://okuden-labo.com/ftp-security

SOTD

業務でFTPを使うことになったので特に自分が理解しておきたいと思った点を記載しました。
個人開発ではそこまで深く考えたことのなかったセキュリティ面にも注意を払っていきたいと思います。自分もプロフェッショナルになれる!と信じて。

脚注
  1. ITトレンド・ファイル転送の「FTP」とは?通信の仕組みやデメリットなどを解説 ↩︎

  2. カゴヤのサーバー研究室・FTPとは?通信・ソフトについて分かりやすく解説します ↩︎ ↩︎