Vsftpd文件传输服务(三种认证模式:匿名开放 、本地用户、虚拟用户)

转载http://blog.51cto.com/10316297/2130057

FTP协议有两种工作模式:

1. 主动模式: FTP服务器主动向客户端发起连接请求;

2. 被动模式: FTP服务器等待客户端发起连接请求(默认模式);

vsftpd的三种认证模式

1. 匿名开放模式:
它是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器;

2. 本地用户模式
它是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是若被恶意用户破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制服务器;

3. 虚拟用户模式
它是三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出的用户进行口令验证的账户信息,而这些账户信息在服务器系统上并不存在,仅供FTP服务器进行认证使用。

一、匿名开放模式

  1. 修改vsftpd.conf配置文件

......
anonymous_enable=YES //允许匿名访问模式
......
anon_upload_enable=YES //启用,允许匿名用户上传文件
anon_mkdir_write_enable=YES //启用,允许匿名用户创建目录
新增下面参数
anon_other_write_enable=YES //允许匿名用户修改目录名称或删除目录

  1. 启动服务

chkconfig vsftpd on
service vsftpd start

  1. 修改ftp目录权限
chown ftp:ftp /var/ftp/pub
chmod 777 /var/ftp/pub

 

二、本地用户模式 centos 7.4系统下

  1. 修改vsftpd.conf配置文件

......
anonymous_enable=NO //禁止匿名访问模式
local_enable=YES //允许本地用户模式
write_enable=YES //设置可写权限
local_umask=022 //本地用户创建文件的umask值
userlist_enable=YES //启动“禁止名单”,名单文件为ftpusers和user_list
userlist_deny=YES //开启用户作用名单文件功能

 

chroot_local_user=YES  //chroot_local_user 是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)

chroot_list_enable=YES  //chroot_list_enable #是否启动限制用户的名单 YES为启用  NO禁用(包括注释掉也为禁用)

chroot_list_file=/etc/vsftpd/chroot_list  //#是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值,

local_root=/var/zxcfile  //本地用户登录目录

 

  1. 创建本地用户zxc

useradd -s /sbin/nologin zxc//创建用户
passwd zxc  //设置密码,输入两次


2、对主目录授权 (不然链接不了,命令提示符显示 错误:500 OOPS: cannot change directory:/home/xxx 500 OOPS: child died)

chown ftp:ftp /var/zxcfile

chmod 755 /var/zxcfile 

    vi   /etc/vsftpd/chroot_list   // 配置文件中chroot_list_enable=YES 和chroot_local_user=YES  那么不在chroot_list_file=/etc/vsftpd/chroot_list 文件中的用户表示锁定在该用户的主目录下,不能切换目录。

 

参考  https://blog.youkuaiyun.com/bluishglc/article/details/42398811

  1. 添加chroot_list文件   

 

让我们举个例子:
假设有ftp1, ftp2两个ftp用户, 计划让ftp1用户锁定在主目录下,不允许切换到其他目录, 但是允许ftp2用户自由切换目录,则可以分如下两种方式实现:

方式一:

令:
chroot_local_user=YES
chroot_list_enable=YES
/etc/vsftpd/chroot_list名单列表为:
ftp2
 
解释:chroot_local_user=YES将所有用户限定在主目录内,chroot_list_enable=YES表示要启用chroot_list_file, 因为chroot_local_user=YES,即全体用户都被“限定在主目录内”,所以总是作为“例外列表”的chroot_list_file这时列出的是那些“不会被

  1. 重启服务

  systemctl restart vsftpd.service

5. 测试

三、虚拟用户模式

  1. 创建ftp用户数据库文件
cd /etc/vsftpd/       //进入目录

vim vuser //创建ftp用户数据库文件,奇数行为用户名,偶数行为密码 
test 
123123
tom
123123

  1. 对vuser文件进行加密转换为数据库文件
db_load -T -t hash -f vuser vuser.db        //转换为数据库文件
chmod 600 vuser.db      //修改权限不让其他用户查看
  1. 创建vsftpd服务程序用户存储文件的根目录以及虚拟用户映射的系统本地用户
useradd -d /opt/vuser -s /sbin/nologin vuser
  1. 建立用户支持虚拟用户的PAM认证模块文件
vim /etc/pam.d/vsftpd.vu

//添加以下两行数据
auth required pam_userdb.so db=/etc/vsftpd/vuser 
account required pam_userdb.so db=/etc/vsftpd/vuser

  1. 修改vsftpd服务程序的主配置文件
vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO //禁止匿名开放模式
local_enable=YES //允许本地用户
guest_enable=YES //开启虚拟用户
guest_username=vuser //指定虚拟用户为vuser
pam_service_name=vsftpd.vu //指定PAM文件

  1. 重启服务
service vsftpd restart

7. 测试

客户端使用虚拟账户tom进行登录,可以正常登录

 

 

 

一、如果你的ftp用户登陆目录默认的是不是在 /home/ftp下,出现了500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list
 

出错原因:用户没有变更根目录的权限。

ftp用户默认的根目录是/home/ftp,如果要切换登陆目录,需要给予权限

解决方案

1、打开/etc/vsftpd/vsftpd.conf,做如下配置:

 
chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

 

2、在/etc/vsftpd下新建chroot_list,加入登陆用户的名字

然后再到/etc/vsftpd目录下新建chroot_list 文件 并添加允许访问的用户
二、参考

https://www.jb51.net/article/94223.htm

https://blog.youkuaiyun.com/bluishglc/article/details/42273197

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值