AB Lab

プログラミング備忘録

FTPサーバーの設定

参考サイト

FTPサーバー導入の経緯

最近は、GitもしくはSFTPでのファイルのやりとりが多く、

普段、FTPってあんまり使わないのでFTPサーバーをインストールしていなかったのだが、

FTPを利用したいとのご要望があったので設定した。

折角なので、備忘録として記載しておくことに

vsftpd のインストール

sudo yum -y install vsftpd

sudo service vsftpd start

sudo chkconfig vsftpd on

で、後はポート開放して完了。

結構あっさりですね。

ただ、このまま使うにはあまりにも無防備すぎるのと、

今回のご要望は、SSL通信での利用を想定との事だったため、もう少し設定する。

一般設定

sudo vim /etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd.conf
anonymous_enable=NO
# Anonymous FTP接続の禁止。

local_enable=YES
# ローカルユーザのログインを許可。

write_enable=YES
# 書き込み(Upload)許可。公開専用の場合はNOにすると書き込み禁止にできる。

local_umask=022
# ローカルユーザのumask値。

listen_port=21
# FTP制御チャンネルの接続待ち受けポートの指定。
# デフォルトポートの利用には抵抗がある

connect_from_port_20=NO
# Activeモード時のデータコネクションポートの指定。
# 今回はpasv接続にするのでNO。

nopriv_user=ftp
# vsftpが利用する非特権ユーザ名の指定を ftp に指定。

chroot_local_user=YES
# ローカルユーザの操作範囲を自身のホームディレクトリ内のみに行動を制限(chroot)する。

chroot_list_enable=NO
# 「chroot_local_user=YES」とした場合にchrootしない例外ユーザを許可しないに指定。
# YESにした場合「chroot_list_file=/etc/vsftpd.chroot_list」を登録

ftpd_banner=Welcome to blah FTP service.
# クライアントソフト名が表示されるのを変更

SSL関係設定

sudo vim /etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd.conf
rsa_cert_file=/etc/ssl/certs/vsftp.pem
# vsftpd用の証明書ファイルの指定。SSL証明書の発行方法は省略

rsa_private_key_file=/etc/ssl/certs/vsftp.key
# vsftpd用の秘密鍵ファイル

rsa_cert_file=/etc/ssl/certs/ftp.pem
# vsftpd用の証明書ファイルの指定。SSL証明書の発行方法は省略

use_localtime=YES
# 時刻の扱いをローカルタイムにする。

userlist_enable=YES
# ユーザリストによる規制をかける。

userlist_deny=YES
# ユーザリストをログイン不可ユーザの一覧とする。(NOだとログイン可のユーザ一覧になる)

userlist_file=/etc/ftpusers
# ユーザリストの指定。

pasv_min_port=30000
# Pasv接続で外部からのコネクション利用を許可するポート範囲の最小値。

pasv_max_port=30100
# Pasv接続で外部からのコネクション利用を許可するポート範囲の最大値。

ssl_enable=YES
# SSL接続の有効化

ssl_tlsv1=YES
# vsftpd はSSLのプロトコルとして、SSL v2(ssl_sslv2)、SSL v3(ssl_sslv3)、TLS v1(ssl_tlsv1)の3種類をサポートしているが、デフォルトはTLS v1であり、多くの場合、この設定で問題ないのでデフォルトのままとする。

force_local_logins_ssl=YES
# 制御チャンネル(ログイン等)でSSL接続しか許可しない。

force_local_data_ssl=YES
# データチャンネルでSSL接続しか許可しない。

再起動で反映

sudo service vsftpd restart