‘CentOS’ カテゴリーのアーカイブ

CentOS 5.4にvsftpインストール・設定

2009年11月1日 日曜日

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