ヌートリ日記

開発というより環境構築系のブログ

FTPSの環境構築

今回は通常のFTPのインストールとセキュリティを強化したFTPSの環境構築を行います。

FTPSとは?

http://e-words.jp/w/FTPS.html

クリアテキストでアップロードした際に通信傍受されても大丈夫なように、暗号化をする技術です。
また、同じような通信方式としてSFTPもありますが、今回はFTPSの紹介をします。

vsftpdのインストール

yum install vsftpd

設定ファイルを編集

vim /etc/vsftpd/vsftpd.conf

編集(上から下に変更)
anonymous_enable=YES
anonymous_enable=NO

dirmessage_enable=YES
dirmessage_enable=NO

#ascii_upload_enable=YES
ascii_upload_enable=YES

#ascii_download_enable=YES
ascii_download_enable=YES

#chroot_local_user=YES
chroot_local_user=YES

#chroot_list_enable=YES
chroot_list_enable=YES

tcp_wrappers=YES
tcp_wrappers=NO

connect_from_port_20=YES
connect_from_port_20=NO

xferlog_std_format=YES
xferlog_std_format=NO

追加
pasv_enable=YES // 追加
pasv_addr_resolve=YES // 追加
pasv_address=接続先 // 追加
pasv_min_port=必ず変更 // 追加
pasv_max_port=必ず変更 // 追加
use_localtime=YES // 追加
force_dot_files=YES // 追加
listen_port=必ず変更 // 追加

FTPS用の設定(追加)
ssl_enable=YES
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
force_local_logins_ssl=YES
force_local_data_ssl=YES
allow_anon_ssl=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH

anonymous_enable
匿名ユーザーのログインは許可しない
dirmessage_enable
ユーザが新しいディレクトリに初めて移動したとしてもメッセージは表示しない。

ascii_upload_enable
アスキーモードのアップロードを有効にする。

ascii_download_enable
アスキーモードのダウンロードを有効にする。

chroot_local_user
ローカルユーザーのルートを各自のホームに変更する。

chroot_list_enable
chroot_listを有効にする。ファイルはデフォルト(chroot_list_file=/etc/vsftpd/chroot_list)になる。

tcp_wrappers
ホストへのアクセスを制御しない。(EC2のSecurity Groupsで指定したほうが設定しやすい)

connect_from_port
ActiveFTPを無効にする。

xferlog_std_format
wu-ftpdではなく、vsftpdログ形式でログを記録する。

pasv_enable
PASV FTPを有効にする。

pasv_addr_resolve
PASVモード接続先IPアドレスをホスト名から取得する。

pasv_address
接続先サーバを設定する

pasv_min_port
PASVモード接続時の最小ポート番号。(確認した空きポートの範囲で設定)

pasv_max_port
PASVモード接続時の最大ポート番号。(確認した空きポートの範囲で設定)

use_localtime
ローカルタイムを使用(デフォルトはGMT)

force_dot_files
.(ドット)で始まるファイルを隠さない。

listen_port
ポート送信番号の変更

ssl_enable=YES
SSLの有効化

鍵の場所
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem

通常のFTP接続を不可にする
force_local_logins_ssl=YES

通常のFTP接続を不可にする
force_local_data_ssl=YES

匿名アクセス時の通信では SSL を利用しない
allow_anon_ssl=NO

SSLセッションを再利用しない
require_ssl_reuse=NO

DES-CBC3-SHA対応していないクライアント用に追加(fileZillaなど)
ssl_ciphers=HIGH

FTP上での閲覧権限の変更(rootディレクトリまで見れるユーザ一覧)

今回は誰も見れないようにそのまま保存します。

vim /etc/vsftpd/chroot_list
:wq

FTP専用アカウントの作成

(例) 今回は事前にftpというグループを作成しております。

useradd -s /sbin/nologin -g ftp -M [ユーザー名]
passwd [ユーザー名]
usermod -d /var/www/html [ユーザー名]

FTPS用のキーを作成

makeがない場合

yum install make

鍵の作成

cd /etc/pki/tls/certs/			
make vsftpd.pem

Country Name (2 letter code) 国名
State or Province Name (full name) 県名
Locality Name (eg, city) 市町村
Organization Name (eg, company) 会社名
Organizational Unit Name 組織名
Common Name サーバ名
Email Address 連絡先メールアドレス

最後にAWSのSecurityGroupにvsftpd.confで設定したPortを開放してください。

また、FTPクライアントにより接続方法は変わると思いますので、省略させていただきます。
設定に関しては一例ですので各自意味を理解し、見直しをお願いします。