セキュア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」コマンドでファイル一覧を取得するようにすれば大丈夫です。
なお、このままではドットファイルが見えなくなるので、見せる必要があるなら、「ListOptions」ディレクティブを 「ListOptions
"-a"」のように、proftpd.conf に追記してください。
■ProFTPDのRPMのダウンロードとインストール
ProFTPDのSSL/TLS対応のRPM作成方法については、
こちらを参照願います。ここでは、おやじが作成したRPMを
ダウンロードして、inetdモードで動作させるものとして説明します。
インストールは、任意の場所(ここでは、/usr/local/src)にRPMを置いて、インストールします。
# cd /usr/local/src
# rpm -ivh proftpd-1.2.9-1.i386.rpm proftpd-inetd-1.2.9-1.i386.rpm
# mkdir /var/log/proftpd ← 詳細ログ用ディレクトリの作成(詳細ログが必要なければ不要)
|
■ProFTPDの設定
ProFTPDの設定は、/etc/proftpd.confを編集します。基本的な設定は、
こちらを参照してください。ここでは、SSL化に関する設定のみをあげて置きます。設定は、例によってエディタで簡単に。修正した部分のみ記載しています。(
青字は削除、
赤字は追加、
緑字は変更したものです。)
下記をProftpd.confの適当なところに追加する。
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
# Are clients required to use FTP over TLS when talking
to this server?
TLSRequired off
# Server's certificate
TLSRSACertificateFile /usr/local/certs/server.crt
TLSRSACertificateKeyFile /usr/local/certs/server.key
# Authenticate clients that want to use FTP over TLS?
TLSVerifyClient off
</IfModule> |
- TLSLog
TLS関係のログファイルを指定する。通常のログと分けて置くことで異常なアクセスも見つけやすい。
- TLSPortocol
SSL/TLSプロトコル・バージョンを指定する。ここでは、SSLv3およびTLSv1の両方を許可する互換性モード(SSLv23)を指定。
- TLSCipherSuite
利用可能な暗号を指定する。デフォルトのままで問題はないはずであるが、ここでは、ディレクティブの説明の中にある例に合わせ、ADHキー交換を含まないすべての利用可能な暗号を指定した。
- TLSRequired
制御/データの各コネクションでSSL/TLSの要否を指定する。通常接続も必要なので、ここはoffとしクライアントの接続に任せる。指定すると、クライアントは指定コネクションでのSSL/TLS使用を強制される。
- TLSRSACertificateFile/TLSRSACertificateKeyFile
サーバ証明書とキーを指定する。Apache用に作成したサーバ証明書とキーを指定すればよい。サーバ証明書の作成は、こちらを参考にしてください。
- TLSVerifyClient
クライアント証明書の要否を指定する。サーバとクライアントとの相性でうまくいかないこともあると、ProFTPDにもクライアントにもあるので、取り敢えず暗号化ができれば良しということで、ここはoffとした。
■接続試験
FTPクライアントとしては、GetIt FTPとSmartFTPで動作確認しました。なお、ProFTPDは、Explicitのみサポート(Implicitは未サポート)しているので、SmartFTPではImplicitも選択できますが動作しません。以下に両者のSSL関係だけの設定方法を示します。
◆GetIt FTPのSSL関係の設定
GetIt FTPのSSL関係の設定を以下に示します。なお、ついでと言ってはなんですが、日本語化しましたので、
ソフトダウンロードにパッチを置いておきます。
- サイトアイコンを押し、「Site manager」を開く。
- 「新規サイト」又は「サイトの編集」を押し、「Site propaties」を開く。
- 「セキュリティ」タブを選択し、「プロパティ」の「タイプ」で「FTP with SSL」を選択する。このとき、「データ・チャネルでSSLを使用しない」が選択できるようになるので、必要に応じてチェックする。通常はデータも含めて保護するはずなので、未チェックとすること。
◆SmartFTPのSSL関係の設定
SmartFTPのSSL関係の設定を以下に示します。このクライアントは、日本語化パッチも用意されています。
- 「お気に入り」から「お気に入りの編集」を選択し、「お気に入り」を開く。
- 右ウインドウで右クリックして「新規作成」から「お気に入り」を選択して、適当な名前を付与してサイトを登録する。
- 登録したサイト名の上で右クリックし、「プロパティ」から「基本設定」を開く。
- 「全般」の「サーバー」の「プロトコル」の「プルダウンメニュー」から、「FTP
over SSL Explisit」を選択する。
- 「接続」->「SSL」は「グローバルを使用」のままでよい。
Top Pageへ