需求来源于高职国赛题目:
- 使用虚拟用户认证方式,创建用户virtftp, shell为/sbin/nologin,并将虚拟用户映射至virtftp用户。
- 监听21号端口
- 设置虚拟用户的主目录为/data/ftp_data且在目录下创建ftp_test空文件。
- 将/data/ftp_data属主属组更改为virtftp,并且属主有写权限。
- 关闭PASV模式的安全检查。
- 设置客户端最大连接数为100,每个IP允许3个连接数。
- 设置被动模式的端口范围为9000-9200。
- ftpuser虚拟用户可以下载与上传文件
- ftpadmin虚拟用户可以下载与上传文件以及删除重命名操作,上传文件的umask为022。
10)配置文件要求:
/etc/pam.d/vsftpd.vu,(pam配置文件)
/etc/vsftpd/vlogin.db, (用户数据库)
/etc/vsftpd/ftp_user (该目录下ftp用户权限配置目录)
安装VSFTPD
yum install -y vsftpd
配置vsftpd服务的宿主
useradd vsftpdadmin -s /sbin/nologin
这个vsftpdadmin只是用来替换root的,并不需要登录
建立ftp虚拟账户的宿主账户
useradd virtftp -s /sbin/nologin
virtftp
账户是虚拟用户的本地宿主用户,不需要登录
建立ftp共享文件夹
mkdir -p /data/web_data
chgrp -R virtftp /data/web_data
配置vsftpd.conf
主要修改下面部分:
anonymous_enable=YES --> anonymous_enable=NO //不允许匿名用户访问,默认是允许。
#chroot_list_enable=YES --> chroot_list_enable=YES //不允许FTP用户离开自己主目录,默认是被注释掉的。
#chroot_list_file=/etc/vsftpd/chroot_list --> chroot_list_file=/etc/vsftpd/chroot_list
//如果开启了chroot_list_enable=YES,那么一定要开启这个,这条是锁定登录用户只能家目录的位置,如果不开启用户登录时就会报500 OOPS的错。
注意:/etc/vsftp/chroot_list本身是不存在的,
这要建立vim /etc/vsftp/chroot_list,然后将帐户输入一行一个,保存就可以了
无需修改:
local_enable=YES
//允许本地用户访问
write_enable=YES
//允许写入
local_umask=022
//上传后文件的权限掩码
dirmessage_enable=YES
//开启目录标语,默认是YES,开不开无所谓,默认就行
xferlog_enable=YES
//开启日志,默认是YES,不用改
connect_from_port_20=YES
//设定连接端口20,不用改
xferlog_std_format=YES
//设定vsftpd的服务日志保存路径,不用改
#idle_session_timeout=600 --> idle_session_timeout=600
//会话超时时间阈值
#async_abor_enable=YES --> async_abor_enable=YES
//支持异步传输功能
#ascii_upload_enable=YES --> ascii_upload_enable=YES
//支持ASCII模式的下载功能
#ftpd_banner=Welcome to blah FTP service
//FTP的登录欢迎语
#chroot_local_user=YES --> chroot_local_user=YES
//禁止本地用户登出自己的FTP主目录,默认被注释
pam_service_name=vsftpd
//设定pam服务下vsftpdd的验证配置文件名
userlist_enable=YES
//拒绝登录用户名单,不用改
TCP_wrappers=YES
//限制主机对VSFTP服务器的访问(通过/etc/hosts.deny和/etc/hosts.allow这两个文件来配置)
如果没有则添加
local_root=/data/web_data
//ftp共享根目录
allow_writeable_chroot=YES
//允许写
pasv_proiscuous=YES
//关闭pasv模式的安全检查
max_clients=100
//最大客户端连接数量
max_per_ip=3
//同一ip下允许的连接数
pasv_min_port=9000
//被动模式(pasv)的端口范围(小
pasv_max_port=9200
//被动模式(pasv)的端口范围(大
user_config_dir=/etc/vsftpd/ftp_user
//虚拟用户个人vsftpd配置文件存放目录
建立日志文件
touch /var/log/vsftpd.log //日志文件
chown vsftpdadmin:vsftpdadmin /var/log/vsftpd.log //属于vsftpdadmin这个宿主
建立虚拟用户配置文件
mkdir /etc/vsftpd/ftp_user //创建虚拟用户配置目录
touch /etc/vsftpd/user_list //创建虚拟账户列表
建立虚拟账户
vim /etc/vsftpd/user_list
ftpadmin //用户名
12345678 //密码
ftpuser //用户名
12345678 //密码
奇数行为用户名,偶数行为密码,以此类推
vim /etc/vsftp/chroot_list
加入需要锁定登录用户只能家目录的位置然后将帐户输入一行一个,保存就可以了
ftpuser //用户名
生成数据库
db_load -T -t hash -f /etc/vsftpd/user_list /etc/vsftpd/vlogin.db
设置数据库文件的访问权限
chmod 600 /etc/vsftpd/vlogin.db
chmod 600 /etc/vsftpd/user_list
修改/etc/pam.d/vsftpd的配置
echo "auth required pam_userdb.so db=/etc/vsftpd/vconf/vlogin" >> /etc/pam.d/vsftpd
echo "account required pam_userdb.so db=/etc/vsftpd/vconf/vlogin" >> /etc/pam.d/vsftpd
或新建一个配置文件 然后将/etc/vsftpd/vsftpd.conf中的pam_service_name改为对应的名称,如下
touch /etc/pam.d/vsftpd.vu
vim /etc/pam.d/vsftpd.vu
vsftpd.vu中写入
auth required pam_userdb.so db=/etc/vsftpd/vlogin
account required pam_userdb.so db=/etc/vsftpd/vlogin
修改vsftpd.conf
pam_service_name=vsftpd --> pam_service_name=vsftpd.vu
创建用户的配置文件
注意:用户配置文件的名字要和创建的“虚拟用户”名字对应
touch /etc/vsftpd/ftp_user/ftpadmin
vim /etc/vsftpd/ftp_user/ftpadmin
anon_upload_enable=YES //允许上传
anon_mkdir_write_enable=YES //允许创建文件夹
anon_other_write_enable=YES //允许其他写入操作(重命名,删除等)
anon_umask=022 //用户上传的文件掩码
touch /etc/vsftpd/ftp_user/ftpuser
vim /etc/vsftpd/ftp_user/ftpuser
anon_upload_enable=YES //允许用户上传
重启服务器 大功告成
版权属于:DeepFal
本文链接:https://blog.deepfal.cn/index.php/archives/665/
转载时须注明出处及本声明
1 条评论
不错不错,我喜欢看