FileZillaでFTPsの設定をする
FileZillaでFTPsの設定をする
さくらのVPSのCentOS6.2で、FTPクライアントをFilezillaとして、FTPsで通信をする設定をしました。
下記のような環境で、FFFTPでFTPができていて、httpsでWEBにアクセスできているところからのスタートです。
特にバージョン3.5.3のFilezillaではFTPsが使えない、といった記事が散見されたので、エラー内容と解決方法を含めて覚え書きにしました。
動作環境
- さくらのVPS CentOS6.2
- vsftpd 2.2.2
- FileZilla 3.5.3
- FTPがFFFTPなどのクライアントで正常に動作していること
- SSLがインストールされていて、httpsでアクセスできること
vsftpdの設定
vsftpdのコンフィグファイル(例:/etc/vsftpd/vsftpd.conf)に下記のように書き加えます。
rsa_cert_fileとrsa_private_key_fileは、httpsで作成したファイルを指定します。
vsftpdの再起動。
- service vsftpd restart
FileZillaの設定
ファイル > サイトマネージャー > 新しいサイトで、Filezillaの設定をします。
ポート
Protocol
Encryption
ログオンの種類
ユーザー
パスワード
:(空欄)
:FTP - File Transfer Protocol
:Require explicit FTP over TLS
:通常
:ftpuser
:(ftpuserのパスワード)
これ以外の設定は初期のまま、OKボタンで登録。
Error: GnuTLS error -12: A TLS fatal alert has been received.
ここまでの設定でFTPサーバーに接続しようとしても、エラーがでて接続できません。
FileZillaのバージョン3.5.3が、「DES-CBC3-SHA」をサポートしていないという原因のようです - 参照先 - 。
vsftpdのコンフィグファイルに下記のように書き加えます。
vsftpdの再起動。
- service vsftpd restart
Error: ディレクトリ一覧表示の取得に失敗しました。
再度FTPサーバーに接続を試みます。
今度はログインはできますが、ディレクトリ一覧の取得ができません。
FTPではパッシブモードが正常に動作するのですが、FTPsではそれが動作しないことが原因のようです。これについては、vsftpdでTLSを使う - satospoに詳しく説明されています。
FTPsで使用するポートを固定します。
vsftpdのコンフィグファイルに下記のように書き加えます。
vsftpdの再起動。
- service vsftpd restart
iptablesで、固定したポートの透過を許可します。下記は一般的(?)と思われるシェルスクリプトの一例です。
- /root/bin/filter
- #!/bin/sh
- /sbin/iptables -F
- /sbin/iptables -X
- /sbin/iptables -P INPUT DROP
- /sbin/iptables -P OUTPUT ACCEPT
- /sbin/iptables -P FORWARD DROP
- /sbin/iptables -A INPUT -i lo -j ACCEPT
- /sbin/iptables -A OUTPUT -o lo -j ACCEPT
- /sbin/iptables -A INPUT -s 10.0.0.0/8 -j DROP
- /sbin/iptables -A INPUT -s 172.16.0.0/12 -j DROP
- /sbin/iptables -A INPUT -s 192.168.0.0/16 -j DROP
- /sbin/iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
- /sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- /sbin/iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT
- /* ↓ ここ! */
- /sbin/iptables -A INPUT -p tcp --dport 40000:40100 -m state --state NEW -j ACCEPT
- /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
- /sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
- /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- /sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- /etc/rc.d/init.d/iptables save
- /sbin/service iptables restart
シェルスクリプトの実行
- # /root/bin/filter
接続できた!!
おわり
以上、FileZillaのFTPsの設定を、てこずった2つのエラーを中心に書きました。
特に2つ目のディレクトリの一覧取得ができないことについて、新しいFileZillaではFTPsが使用できないとする記事が多かったように思えます。ファイアーウォールを設定しないようなテスト環境ではFTPsで使えているのに、ファイアーウォールをきちんと設定しているような環境では使えない、といったことが解決を難しくしていたのかも知れません。
参照サイト
関連記事