よる通信は、周知の通り、データがネットワーク上を平分で流れるため、セキュリティ的には好ましくありません。接続について解説していきます。SSHポートフォワーディングでFTP接続する場合、通信は暗号化されますが、転送データは暗号化されません。その代わり、秘密鍵がなければFTPにも接続することができないので強固になります。SSLを使った場合、秘密鍵などはありませんが(証明書はある)、通信とデータの両方が暗号化されるのでこれも強固になります。今回は後者のFTP通信のSSL化について説明していきます。」が詳しいのでそちらを参考にしたほうがいいと思います。ここでの想定環境として、以下の環境を想定しています。ルータIPアドレス:219.117.218.xxx(プライベートアドレスが172.16.50.4)FTPクライアントソフト:SmartFTP(日本語化適用)まず、サーバー側とクライアント側で共通していることは、双方とも、ファイアーウォール内(ルータ内)にマシンが設置されており、NAT/IPマスカレードによってプライベートアドレスが割り振られている点である。クライアント側はプライベートアドレスが割り振られていても特に問題はありませんが、FTPサーバにプライベートアドレスが割り当てられている場合、PASSIVE接続した際にサーバが自身のプライベートアドレスをクライアント側に返してしまうので、クライアント側はFTPサーバにアクセスすることができなくなります(本来ならば、グローバルアドレスを返さなければならない)。PASSIVE接続の際、サーバ側は任意のポート番号を返してしまうので、その場合、ルータのフィルタリング設定で何番ポートをあけるべきか明示的に指定することができなくなってしまうので、対策としてProFTPD側で何番から何番のポートを使用しますということを明示的に指定してあげる必要がある。以下のように編集しておく。以下は、PASSIVE接続をすることを前提とした設定にしており、且つ、細かな設定については省いてある。ここで重要となるのは、2行目と3行目である。ルータのグローバルアドレス(WAN側アドレス)を指定する。ProFTPD自身がグローバルアドレスを持っている場合は、自身のグローバルアドレスを明記すればよい。PASSIVE接続で使用するポート番号を指定しておく。ここでは、20020~20032の間のポート番号を指定している。off</IfModule>TLSに関する設定は以下に簡単に記しておきます。・・・・・・TLSを強制使用するか、通常使用するか。するとTLSでの接続しか許可しないTLSRSACertificateFile/TLSRSACertificateKeyFile・・・・・・・サーバ証明書と鍵のあるPATHを指定する。鍵はパスワードなしの鍵を作成しておく。・・・・クライアント証明書の要否を指定する。するとクライアント証明書を求められる。指定したポート番号をFTPサーバ宛てにフォワーディングしてあげれば良い。20020-20032■クライアント側(SmartFTP)の設定ここでは、SSLに対応したFTPクライアントソフトであるSmartFTPを利用することにする。日本語化も容易されているので比較的導入しやすいだろう。インストール方法などは簡単なのでここでは割愛させていただきます。ダウンロードはこちから。設定の手順を以下に記します。作成した設定を右クリしてプロパティで「基本設定」を開く。「全般」でプロトコルを「FTP(明示的)(認証)SSL」を選択する。黙示的を選んでも、ProFTPD側が対応していない。「ホスト」と「ポート番号」「パス」を各自の環境に合わせて入力する。暗号文(セキュア)」にしておく。した場合は、「証明書を使用しない」にチェックをいれておく。以上の設定でProFTPDサーバに接続できれば成功である。した場合で試してみたものの、SmartFTPで作成した証明書&秘密鍵がなぜかインポートできず、挫折。機会があればもう一度試してみたいところだが、実際のところクライアントとサーバとの相性問題もあるようで動作は不完全のようだ。understoodSmartFTPのログを見て上記のようなログが見られる場合は、ProFTPDがTLSを使えるようにコンパイルされていません。オプションを使って再コンパイルしましょう。組み込まれているかどうか確認するには、以下のコマンドを入力する。attackというセキュリティ上の問題があるようで、外部から有効なユーザアカウントがわかってしまうというものです。有効にすることで解決されるそうです。バージョン1.3.0以降、デフォルトで組み込まれるようになります。