セキュアFTPサーバの構築(ProFTPD+SSL/TLS)セキュアFTPサーバの構築(ProFTPD+SSL/TLS)サーバに置いたファイルを外部から扱う方法には、SSHやWebDAV等のいろいろな方法がありますが、特に難しいオペレーションを必要しないFTPを使用する方法も考えられます。外部から使用するとなるとセキュリティの問題がありますので、今回は、おやじが使用しているProFTPDをSSL/TLS化してみました。ProFTPDでは、1.2.7RC1以降でmod_sslに対応しています。ProFTPDは、比較的簡単にrpmを作成できるようなので、管理を簡単にするためrpmを作ってからインストールすることにしました。ソースからインストールする方法については、こちらを参照願います。ProFTPD1.2.10rc1から「NLST」のオプション指定が未サポートになり、FFFTPなどではデフォルトのままではファイル一覧が取得できないので注意が必要です。これはRFC959に基づく変更であり、クライアントの設定を変更して「LIST」コマンドでファイル一覧を取得するようにすれば大丈夫です。■ProFTPDのRPMのダウンロードとインストールProFTPDのSSL/TLS対応のRPM作成方法については、こちらを参照願います。ここでは、おやじが作成したRPMをダウンロードして、inetdモードで動作させるものとして説明します。インストールは、任意の場所(ここでは、/usr/local/src)にRPMを置いて、インストールします。詳細ログ用ディレクトリの作成(詳細ログが必要なければ不要)■ProFTPDの設定ProFTPDの設定は、/etc/proftpd.confを編集します。基本的な設定は、こちらを参照してください。ここでは、SSL化に関する設定のみをあげて置きます。設定は、例によってエディタで簡単に。修正した部分のみ記載しています。(青字は削除、赤字は追加、緑字は変更したものです。)下記をProftpd.confの適当なところに追加する。off</IfModule>TLSLogTLS関係のログファイルを指定する。通常のログと分けて置くことで異常なアクセスも見つけやすい。TLSPortocolSSL/TLSプロトコル・バージョンを指定する。ここでは、SSLv3およびTLSv1の両方を許可する互換性モード(SSLv23)を指定。TLSCipherSuite利用可能な暗号を指定する。デフォルトのままで問題はないはずであるが、ここでは、ディレクティブの説明の中にある例に合わせ、ADHキー交換を含まないすべての利用可能な暗号を指定した。TLSRequired制御/データの各コネクションでSSL/TLSの要否を指定する。通常接続も必要なので、ここはoffとしクライアントの接続に任せる。指定すると、クライアントは指定コネクションでのSSL/TLS使用を強制される。TLSRSACertificateFile/TLSRSACertificateKeyFileサーバ証明書とキーを指定する。Apache用に作成したサーバ証明書とキーを指定すればよい。サーバ証明書の作成は、こちらを参考にしてください。TLSVerifyClientクライアント証明書の要否を指定する。サーバとクライアントとの相性でうまくいかないこともあると、ProFTPDにもクライアントにもあるので、取り敢えず暗号化ができれば良しということで、ここはoffとした。FTPとSmartFTPで動作確認しました。ProFTPDは、Explicitのみサポート(Implicitは未サポート)しているので、SmartFTPではImplicitも選択できますが動作しません。以下に両者のSSL関係だけの設定方法を示します。FTPのSSL関係の設定を以下に示します。ついでと言ってはなんですが、日本語化しましたので、ソフトダウンロードにパッチを置いておきます。manager」を開く。propaties」を開く。このとき、「データ・チャネルでSSLを使用しない」が選択できるようになるので、必要に応じてチェックする。通常はデータも含めて保護するはずなので、未チェックとすること。◆SmartFTPのSSL関係の設定SmartFTPのSSL関係の設定を以下に示します。このクライアントは、日本語化パッチも用意されています。「お気に入り」から「お気に入りの編集」を選択し、「お気に入り」を開く。右ウインドウで右クリックして「新規作成」から「お気に入り」を選択して、適当な名前を付与してサイトを登録する。登録したサイト名の上で右クリックし、「プロパティ」から「基本設定」を開く。Explisit」を選択する。「接続」->「SSL」は「グローバルを使用」のままでよい。