Compnet

仕事とか遊びとか、日々折々

2019-05-09(木)

ついでに FTPs (明示的な TLS) 化

Posted by Nakane, R. in technical   

前の記事で今更事に FTP サーバーを構築しました。 そのついでといってはなんですが、TLS 化を施しました。

TLS 化には「明示的 TLS」と「暗黙的 TLS」の二通りがあり、たいていの場合はその両方を実現するのが普通です。 「明示的 TLS」は平文で通信を開始してその通信の中でアプリケーションのコマンド (たいていは STARTTLS コマンド、FTP では AUTH TLS コマンド) を実行することで TLS を使った暗号通信に切り替える方法です。 「明示的 TLS」では暗号化されていない平文で通信を開始することもあり、アプリケーションが使う通信ポートは TLS 化していない通信と同じものが使えます。 TLS 化していない通信ポート (FTP では TCP の 21 番ポート) で通信を開始して、切り替えるコマンドが実行されればそれ以降を TLS で暗号化し、切り替えるコマンドが実行されない限りはずっと平文のままで通信を続けます。

これに対して「暗示的 TLS」では最初から TLS を使った暗号通信を行います。 ただしこの場合は平文と同じ通信ポートが使えません。 FTP の「暗示的 TLS」では通常 TCP の 990 番ポートを使います。

今回使用した Pure-FTPd では「明示的 TLS」だけしか実現できません。 Pure-FPTd の TLS 対応はプログラムをコンパイルするときのスイッチで切り替わり、Debian の標準リポジトリで提供されている Pure-FTPd では TLS に関して --with-tls スイッチだけが指定されています。 これによって Pure-FTPd で「明示的 TLS」が使用可能になりますが、このスイッチだけでは「暗示的 TLS」は使えるようにはなりません。 「暗示的 TLS」を使用可能にするには --with-implicittls スイッチを付けてコンパイルする必要がありますが、Debian の標準リポジトリで提供されている Pure-FTPd はそのようにはなっていません。

どうしてもというのであれば、Debian の標準リポジトリからインストールした Pure-FTPd とは別に --with-implicittls スイッチを付けてソース コードから Pure-FTPd をコンパイルして、これら二つのプロセスを起動すれば、何とかできるでしょう。 ここまでして TLS 化をするつもりにはなれないので、ここでは「明示的 TLS」だけが使えるようにします。

Read more...


2019-05-03(金)

今さらだけど FTP サーバーを立てた

Posted by Nakane, R. in technical   

今更感が半端ないですが FTP サーバーを欲しいとの要望があったので、自身の記録がてら構築手順をここにまとめます。 ベースの OS は Debian 8 jessie です。 いつもの Ubuntu でなかったり、現状最新の stretch でなかったりする点については、詳しくは語れない大人の事情をお察しください。

FTP サーバー アプリケーションには Pure-FTPd を使います。 これの選定にあたっては、以下の条件を満たすように考慮しました。

  • FTP でログインするユーザーはシステム ユーザーとは別に管理する (仮想ユーザーだけにログインさせる)。
  • FTP でログインしたユーザー毎にホーム ディレクトリを指定し、そのディレクトリの親ディレクトリを参照させない (ホーム ディレクトリに chroot する)。
  • 設定手順を再現しやすい。

Pure-FTPd 以外にも ProFTPDvsftpd といった FTP サーバー アプリケーションがあり、それぞれ日本語での情報を散見しますが、設定変更をスクリプト化しにくかったり仮想ユーザーの登録・管理が面倒だったりで見送りました。

Read more...