配置防火墙,开启FTP服务需要的端口
1 2
| systemctl stop firewalld systemctl disable firewalld
|
关闭SELINUX
1 2 3 4 5 6 7 8 9 10 11
| vi /etc/selinux/config
SELINUX=disabled
:wq!
setenforce 0
|
安装vsftpd
1 2 3 4 5 6 7 8 9
| rpm -qc vsftpd
yum install -y vsftpd
yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI
systemctl start vsftpd.service
systemctl enable vsftpd.service
|
新建系统用户vsftpd
1 2 3
| useradd vsftpd -d /home/wwwroot -s /bin/false
chown vsftpd:vsftpd /home/wwwroot -R
|
建立虚拟用户个人vsftpd的配置文件和子账号FTP权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| mkdir /etc/vsftpd/vconf
cd /etc/vsftpd/vconf
touch web1
mkdir -p /home/wwwroot/web1/http/mydic
chmod -R 755 /home/wwwroot/web1/http chmod R 777 /home/wwwroot/web1/http/mydic
vi web1 local_root=/home/wwwroot/web1/http/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
:wq!
|
配置vsftpd服务器
1
| cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak
|
执行以下命令进行设置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf'
echo -e "use_localtime=YES\nlisten_port=21\nchroot_local_user=YES\nidle_session_timeout=300
\ndata_connection_timeout=1\nguest_enable=YES\nguest_username=vsftpd #此处要和刚刚创建的用户名一直
\nuser_config_dir=/etc/vsftpd/vconf\nvirtual_use_local_privs=YES
\npasv_min_port=10060\npasv_max_port=10090
\naccept_timeout=5\nconnect_timeout=1" >> /etc/vsftpd/vsftpd.conf
|
配置文件说明:
1 2 3 4 5 6 7 8 9 10 11 12
| anonymous_enable=NO //设定不允许匿名访问 local_enable=YES //设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问 chroot_list_enable=YES //使用户不能离开主目录 ascii_upload_enable=YES ascii_download_enable=YES //设定支持ASCII模式的上传和下载功能 pam_service_name=vsftpd //PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
guest_enable=YES //设定启用虚拟用户功能 guest_username=vsftpd //指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了,通过映射到vsftpd user_config_dir=/etc/vsftpd/vuser_conf //设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)
|
建立虚拟用户名单文件
1
| touch /etc/vsftpd/virtusers
|
编辑虚拟用户名单文件:(第一行账号,第二行密码,注意:不能使用root做用户名,系统保留)
1 2 3 4
| vi /etc/vsftpd/virtusers web1 123456 :wq!
|
生成虚拟用户数据文件
1 2 3
| db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
chmod 600 /etc/vsftpd/virtusers.db
|
在/etc/pam.d/vsftpd的文件头部加入以下信息(在后面加入无效)
修改前先备份
1
| cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak
|
1 2 3 4
| vi /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
|
注意:如果系统为32位,上面改为lib,否则配置失败;
最后重启vsftpd服务器
1
| systemctl restart vsftpd.service
|
可通过 tail -f /var/log/secure 指令,查看服务器安全日志,便于分析错误问题,设置操作效果一定要仔细…..