1.基本ポリシー
- 特定ユーザのみFTPアクセス可能
- 特定ディレクトリより上位の階層へのアクセス不可
- TcpWrapperによるIP制限
2.vsftpdインストール
# yum install vsftpd
3./etc/vsftpd/vsftpd.confの設定
# 匿名アクセス禁止
anonymous_enable=NO
# アスキーモード有効
ascii_upload_enable=YES
ascii_download_enable=YES
# シグニチャ隠蔽
ftpd_banner=Welcome to blah FTP service.
# デフォルトでホームの上位はみせない(chroot()する)
chroot_local_user=YES
# chroot_local_user=YESの場合、
# chroot_list_enable=YES : chroot_listには上位を見せてよい(chrootしない)ユーザを記述
# chroot_list_enable=NO : すべてのユーザがchroot()する
chroot_list_enable=YES
# chroot_list_enable=YESなので、ここには上位を見せてもよいユーザを記述する。
chroot_list_file=/etc/vsftpd/chroot_list
# リカーシブ操作(サブフォルダを含む一括アップロード・ダウンロード)を許可
ls_recurse_enable=YES
# /etc/vsftpd/user_listの使用(アクセス許可または拒否)
userlist_enable=YES
# userlist_enable=YESの場合、
# userlist_deny=YES :アクセス拒否するユーザをuser_listに記述する
# userlist_deny=NO :アクセス許可するユーザをuser_listに記述する
userlist_deny=NO
#pamによる認証を行う
pam_service_name=vsftpd
# ユーザーごとの設定ファイルを有効にする。
user_config_dir=/etc/vsftpd/vsftpd_user_conf
#タイムスタンプ時間をローカル時間にする
use_localtime=YES
#TcpWrapper有効
tcp_wrappers=YES
4./etc/vsftpd/user_listの設定
userlist_deny=NOなので、/etc/vsftpd/user_listにはアクセス許可するユーザを記述する。
admin
5./etc/vsftpd/ftpusersの設定
アクセス拒否するユーザを記述。
※/etc/vsftpd/user_listよりも優先される。ftpusersはPAM認証の際、アクセス拒否リストとして使用される。
/etc/pam.d/vsftpdに以下の記述がある。
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
/etc/vsftpd/ftpusersの内容は以下。このユーザはアクセス拒否される。
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
6./etc/vsftpd/chroot_listの設定
chroot_list_enable=YESなので上位ディレクトリを見せてもよいユーザを/etc/vsftpd/chroot_listに指定できる。今は上位ディレクトリへのアクセスを許可するユーザはいないので、これは空にする。
7.ユーザごとのホームディレクトリ設定
adminのホームディレクトリを指定する。以下の設定により、adminはログインすると/var/www/htmlがホームディレクトリとなる。
# mkdir /etc/vsftpd/vsftpd_user_conf
# cat /etc/vsftpd/vsftpd_user_conf/admin
local_root=/var/www/html
※/etc/vsftpd/vsftpd_user_conf/USERNAMEには、vsftpd.confに記述できるオプションが指定できる(listen_addressなどの一部オプションは無効)。
次に/var/www/htmlの作成(存在しない場合)とパーミッションの設定を行う。
# mkdir /var/www/html
# chown admin:admin /var/www/html
8.PASV(パッシブモード)対応
PASV(パッシブモード)に対応できるようiptables設定。
# modprobe ip_conntrack_ftp
# cat /etc/sysconfig/iptables-config
・・・
IPTABLES_MODULES="ip_conntrack_ftp"
・・・
※kernel-2.6.20から、ip_conntrack*関連が nf_conntrack*に置き換わっているので注意。
9.TcpWrapperによるアクセス制限
すべて拒否してから、許可するサービス、IPを記述。
/etc/hosts.deny
ALL: ALL
/etc/hosts.allow
sshd: 192.168.0.0/255.255.255.0
vsftpd: 192.168.0.0/255.255.255.0 192.168.1.0/255.255.255.0
10.起動
# /etc/init.d/vsftpd restart
# chkconfig vsftpd on