Writing Appropriately

職務経歴

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作成

chrootされないホワイトリストなので私は空のまま

# 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
  • チェック2 SELinuxの設定 ftpd_full_access を on にする
# setsebool -P ftpd_full_access on

蛇足 .messageファイルの作成

.message

IYH!!!!!!!!!

FTPで接続

# ftp localhost

ftp vsftp YHY
.message IYH