FileZillaでFTPsの設定をする

FileZillaでFTPsの設定をする


さくらのVPSのCentOS6.2で、FTPクライアントFilezillaとして、FTPsで通信をする設定をしました。

下記のような環境で、FFFTPFTPができていて、httpsでWEBにアクセスできているところからのスタートです。

特にバージョン3.5.3のFilezillaではFTPsが使えない、といった記事が散見されたので、エラー内容と解決方法を含めて覚え書きにしました。

 

動作環境

  • さくらのVPS CentOS6.2
  • vsftpd 2.2.2
  • FileZilla 3.5.3
     
  • FTPFFFTPなどのクライアントで正常に動作していること
  • SSLがインストールされていて、httpsでアクセスできること

 

vsftpdの設定


vsftpdのコンフィグファイル(例:/etc/vsftpd/vsftpd.conf)に下記のように書き加えます。
rsa_cert_fileとrsa_private_key_fileは、httpsで作成したファイルを指定します。

  1. vsftpd.conf
  2. ssl_enable=YES
  3. rsa_cert_file=(例)/etc/httpd/conf/ssl.crt/server.crt
  4. rsa_private_key_file=(例)/etc/httpd/conf/ssl.key/server.key
  5. force_local_logins_ssl=YES
  6. force_local_data_ssl=YES
  7. allow_anon_ssl=NO
  8.  


vsftpdの再起動。

  1.  
  2. service vsftpd restart
  3.  

 

FileZillaの設定


ファイル > サイトマネージャー > 新しいサイトで、Filezillaの設定をします。

f:id:bleu-bleut:20121017195846j:plain
ホスト
ポート
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サーバーに接続しようとしても、エラーがでて接続できません。

f:id:bleu-bleut:20121015141229j:plain


FileZillaのバージョン3.5.3が、「DES-CBC3-SHA」をサポートしていないという原因のようです - 参照先 - 。
vsftpdのコンフィグファイルに下記のように書き加えます。

  1. vsftpd.conf
  2. (省略)
  3. force_local_data_ssl=YES
  4. allow_anon_ssl=NO
  5. ssl_ciphers=HIGH ← 追記!
  6.  


vsftpdの再起動。

  1.  
  2. service vsftpd restart
  3.  

 

Error: ディレクトリ一覧表示の取得に失敗しました。


再度FTPサーバーに接続を試みます。
今度はログインはできますが、ディレクトリ一覧の取得ができません。

f:id:bleu-bleut:20121017195901j:plain



FTPではパッシブモードが正常に動作するのですが、FTPsではそれが動作しないことが原因のようです。これについては、vsftpdでTLSを使う - satospoに詳しく説明されています。
FTPsで使用するポートを固定します。
vsftpdのコンフィグファイルに下記のように書き加えます。

  1. vsftpd.conf
  2. (省略)
  3. allow_anon_ssl=NO
  4. ssl_ciphers=HIGH
  5. pasv_min_port=40000 ← 追記!
  6. pasv_max_port=40100 ← 追記!
  7.  


vsftpdの再起動。

  1.  
  2. service vsftpd restart
  3.  


iptablesで、固定したポートの透過を許可します。下記は一般的(?)と思われるシェルスクリプトの一例です。

  1. /root/bin/filter
  2. #!/bin/sh
  3.  
  4. /sbin/iptables -F
  5. /sbin/iptables -X
  6.  
  7. /sbin/iptables -P INPUT DROP
  8. /sbin/iptables -P OUTPUT ACCEPT
  9. /sbin/iptables -P FORWARD DROP
  10.  
  11. /sbin/iptables -A INPUT -i lo -j ACCEPT
  12. /sbin/iptables -A OUTPUT -o lo -j ACCEPT
  13.  
  14. /sbin/iptables -A INPUT -s 10.0.0.0/8 -j DROP
  15. /sbin/iptables -A INPUT -s 172.16.0.0/12 -j DROP
  16. /sbin/iptables -A INPUT -s 192.168.0.0/16 -j DROP
  17.  
  18. /sbin/iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
  19.  
  20. /sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  21. /sbin/iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT
  22. /* ↓ ここ! */
  23. /sbin/iptables -A INPUT -p tcp --dport 40000:40100 -m state --state NEW -j ACCEPT
  24. /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  25. /sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  26.  
  27. /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  28. /sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  29.  
  30. /etc/rc.d/init.d/iptables save
  31.  
  32. /sbin/service iptables restart
  33.  


シェルスクリプトの実行

  1.  
  2. # /root/bin/filter
  3.  



接続できた!!

f:id:bleu-bleut:20121017195906j:plain

 

おわり

以上、FileZillaのFTPsの設定を、てこずった2つのエラーを中心に書きました。

特に2つ目のディレクトリの一覧取得ができないことについて、新しいFileZillaではFTPsが使用できないとする記事が多かったように思えます。ファイアーウォールを設定しないようなテスト環境ではFTPsで使えているのに、ファイアーウォールをきちんと設定しているような環境では使えない、といったことが解決を難しくしていたのかも知れません。

 

参照サイト

 

関連記事