CentOS7 vsftpdの導入
普段はSSH、他人が入るならsftp-serverだが、ヤフーショッピングや楽天のFTPアップロードプログラムの検証のためFTPを入れたのでその覚書
vsftpdインストール
# yum install vsftpd -y
/etc/vsftpd/vsftpd.confの編集
#anonymousは許可しない anonymous_enable=NO #022->002へ グループ書き込み権限追加 #local_umask=002 local_umask=022 #初めて移動した先のディレクトリにmessage_fileが存在する時、内容を表示する #message_fileはデフォルト.message dirmessage_enable=YES #message_file=.message #ログ設定 xferlog_enable=YES xferlog_file=/var/log/xferlog xferlog_std_format=YES #ASCIIモードによるアップロードを許可 ascii_upload_enable=YES ascii_download_enable=YES #設定しない場合バージョン情報が表示されるため設定 ftpd_banner=「追いつめられた時」こそ、冷静に物事に対処し、「チャンス」をものにするのだ。 #userログイン時chrootさせる chroot_local_user=YES #chroot_listはchrootしないホワイトリスト chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list #chroot先のディレクトリに書き込み権限がある場合「500 OOPS: chroot」となるため回避 allow_writeable_chroot=YES #user_listをFTP接続ユーザーのホワイトリストとして利用 userlist_enable=YES userlist_deny=NO userlist_file=/etc/vsftpd/user_list user_config_dir=/etc/vsftpd/user_conf #/etc/hosts.allowや.denyをアクセス制御に利用するかどうか tcp_wrappers=NO #パッシブモードを許可しポート範囲を設定 pasv_enable=YES pasv_min_port=50001 pasv_max_port=50005 #aオプションがなくてもドットファイルを表示 force_dot_files=YES #CentOSのlocaltimeを利用 /etc/localtimeも合わせる use_localtime=YES
/etc/vsftpd/chroot_list作成
# touch /etc/vsftpd/chroot_list # chmod 600 /etc/vsftpd/chroot_list
/etc/vsftpd/user_listの編集
userlist_deny=NOとしたためFTP接続可能なユーザー名を記述。naoyukiのみ。
# vsftpd userlist # If userlist_deny=NO, only allow users in this file # If userlist_deny=YES (default), never allow users in this file, and # do not even prompt for a password. # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers # for users that are denied. naoyuki
/etc/vsftpd/user_conf/ にユーザー名のファイルを作成しlocal_rootを記述する
# toucn /etc/vsftpd/user_conf/naoyuki # vim /etc/vsftpd/user_conf/naoyuki
naoyukiは監獄へ入れる /etc/vsftpd/user_conf/naoyuki
local_root=/var/www/jail/ #local_root=./
chrootするlocal_rootに記述した監獄を作成する
WEBサイトを複数人で管理する事を想定して2770
# mkdir -p /var/www/jail/ # cd /var/www # chown naoyuki jail/ # chgrp lsys jail/ # chmod 2770 jail/
Firewall
FTP用Port21とパッシブモード用Port50001-50005を開放
# firewall-cmd --add-port=21/tcp --zone=public --permanent # firewall-cmd --add-port=50001-50005/tcp --zone=public --permanent # firewall-cmd --reload
SELinux
sestatusで有効/無効を確認し、enabledならtftp_home_dirとftpd_full_accessを有効化
# sestatus SELinux status: enabled # setsebool -P tftp_home_dir on # setsebool -P ftpd_full_access on
vsftpdの起動と登録
# systemctl start vsftpd # systemctl enable vsftpd.service
エラーの理由と対応方法
500 OOPS: vsftpd: refusing to run with writable root inside chroot().
/home/usernm に書き込み許可があるため
- 対応方法1 /home/usernmから書き込み許可を削除
- 対応方法2 /etc/vsftpd/vsftpd.confにallow_writeable_chroot=YESを追記
500 OOPS: chroot
# chmod 600 /etc/vsftpd/chroot_list
# setsebool -P ftpd_full_access on
蛇足 .messageファイルの作成
.message
IYH!!!!!!!!!
FTPで接続
# ftp localhost