■目的
 自宅設置のFTPサーバの転送を暗号化します。
 使用するのはvsftpd over TLS/SSLです。

■環境
 OS    :CentOS 6.6
 ftp    :vsftp 2.2.2 + ftps

■構成ファイル
 /etc/vsftpd/vsftpd.conf構成ファイルのサンプルです。
anonymous_enable=NO     :匿名ログイン禁止
local_enable=YES       ;ローカルユーザログインOK
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES      ;chroot有効
chroot_list_enable=YES      ;chroot有効
chroot_list_file=/etc/vsftpd/chroot_list      ;chroot list file指定
ls_recurse_enable=YES      ;directory一括転送
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem      ;暗号キーファイル指定
ssl_enable=YES      ;ssl有効
ssl_ciphers=HIGH      ;暗号化レベル
force_local_data_ssl=NO      ;データ暗号化
force_local_logins_ssl=YES      ;ログイン暗号化
allow_anon_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO      ;NextFTP対応

pasv_address=192.168.170.131      ;passive modeサーバ
pasv_enable=YES      ;passive mode有効
pasv_min_port=50021      ;passive port# min
pasv_max_port=50040      ;passive port# max
■Chrootユーザ指定
 /etc/vsftpd/chroot_listでホームページより上のディレクトリへのアクセス可能なユーザIDを登録します。
# vi /etc/vsftpd/chroot_list
■証明書
 自前の暗号化キー用証明書を/etc/pki/tls/certs/vsftpd.pem に準備します。
# cd /etc/pki/tls/certs
# openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/pki/tls/certs/vsftpd.pem -out /etc/pki/tls/certs/vsftpd.pem -days 365
Generating a 1024 bit RSA private key
......++++++
.......++++++
writing new private key to '/etc/pki/tls/certs/vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP     # 国
State or Province Name (full name) [Some-State]:Kanagawa   # 地域(県)
Locality Name (eg, city) []:Hakone     # 都市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:IC      # 組織名
Organizational Unit Name (eg, section) []:IC      # 組織の部門名
Common Name (eg, YOUR name) []:centos01       # サーバーのFQDN
Email Address []:xxx@gmail.com     # 管理者アドレス

# chmod 600 vsftpd.pem
■デーモンの再起動
 構成ファイル変更時のvsftpd再起動と、自動起動を行います。
# service vsftpd restart
# chkconfig vsftpd on
■Firewall
 SELINUXを無効化します。
 Firewallでftp(tcp/21)ポートとpassive modeポートをオンにします。
 以下はpassive modeポート解放のサンプルです。
firewall
■Filezilla
 Filezillaでの暗号化転送の手順です。
 [ファイル][サイトマネージャ]を開いてftpサーバを指定します。
 [プロトコル=ftp][暗号化=明示的なFTP over TLSが必要][ログオンの種類=パスワードを尋ねる][ユーザ=xxxx]
 [接続]で証明書が表示されます。
filezilla
 [証明書]
certification
 作成時入力と同じ内容なら[OK]でFTPサーバに接続されます。

■そのた
 今回以下の変更も行います。
(1)TCP Wrapper
 プライベートネットワークからの限定アクセスを解除
  /etc/hosts.allow
  /etc/hosts.deny
(2)Broard Band Router
 NAT/ftpアクセス許可
 Passiveポート解放
  
■結果
 FTP転送の暗号化を完了しました。
 上記設定でアクティブ/パッシブモードとも転送可能になりました。
 プライベートネットワーク限定のアクセス範囲は、暗号化で外出先まで拡張します。

  blog      MovableType