vsftpd配置说明

一、vsftpd简介

vsftpd(Very Secure FTP Daemon),以灵活的用户权限控制和安全性著称,下面简单介绍一些配置文件选项用法和配置过程。

二、vsftpd的安装

首先介绍操作环境:

服务器操作系统:Centos 7.3
vsftpd版本:3.0.2
服务器域名:www.digeekao.xin

以CentOS操作系统为例,vsftpd包含在vsftpd包中。使用yum包管理器可以方便的安装:

yum -y install vsftpd ftp \\安装vsftpd,同时安装客户端工具,方便稍后测试

三、vsftpd的主要配置文件

如果使用yum安装,vsftpd的主要配置文件会默认存在在以下位置:

主程序:/usr/sbin/vsftpd
主配置 文件:/etc/vsftpd/vsftpd.conf
用户控制列表:

/etc/vsftpd/ftpusers    明确被禁止登陆的用户名列表
/etc/vsftpd/user_list   可根据设置灵活的设置为白名单或黑名单

主配置文件:/etc/vsftpd/vsftpd.conf

子配置文件:/etc/vsftpd/自定义文件夹/用户名     在开启虚拟用户登录时,可以单独为每个用户设置配置选项

四、vsftpd.conf 配置文件选项说明

#全局选项
listen=YES      //是否以独立运行方式监听服务
listen_address=192.168.1.2      //设置监听的IP地址
listen_port=21      //监听FTP服务的端口号
write_enable=YES      //是否启用写入权限
downlad_enable=YES      //是否启用下载权限
userlilst_enable=YES      //是否启用user_list列表文件,设为NO则文件不起作用
userlist_deny=YES      //是否禁用user_list列表文件中的用户登录,如果为NO则只有列表中用户可登录
max_clients=0      //限制并发客户端连接数,总连接数限制
max_per_ip=0      //限制单个IP的并发连接数,单用户连接数限制

#匿名相关配置选项
anonymout_enable=YES      //是否启用匿名登录
anon_umask=022      //匿名登录用户上传文件的权限掩码,是实际权限的反码
anon_root=/var/ftp      //匿名用户的FTP根目录
anon_upload_enable=YES      //是否允许匿名用户上传文件
anon_mkdir_write_enable=YES      //是否允许匿名用户新建文件夹
anon_other_write_enable=YES      //是否开启其他写入权限(重命名,删除……)
anon_max_rate=0      //匿名用户的最大传输速率,单位B/S,0代表无限制

#本地用户相关配置选项
local_enable=YES      //是否启用本地用户登录
local_umask=022      //本地用户上传文件的权限掩码,是实际权限的反码
local_root=/var/ftp      //本地用户的FTP跟目录
chroot_local_user=YES      //是否将本地用户禁锢在主目录
local_max_rate=0      //限制本地用户最大传输速率,单位B/S,0代表无限制
#自2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!
#如果检查发现还有写权限,就会提示错误信息:
#500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
#针对这个问题,可以直接去除主目录的写入权限,或添加如下选项到配置文件: 
allow_writeable_chroot=YES    //允许具有写入权限的主目录

#虚拟用户相关选项
guest_enable=YES      //是否启用用户映射
guest_username=virtual      //指定虚拟用户映射的系统用户名,指定的用户必须存在
pam_service_name=vsftpd.vu      //指定PAM认证文件,文件中保存虚拟用户数据文件的路径等信息
user_config_dir=/etc/vsftpd/vusers_dir      //指定单独用户配置文件的存放位置

五、配置基于匿名访问的ftp服务器

修改/etc/vsftpd/vsftpd.conf,配置如下选项

#全局选项
listen=YES      //是否以独立运行方式监听服务
listen_address=192.168.1.2      //设置监听的IP地址
listen_port=21      //监听FTP服务的端口号
write_enable=YES      //是否启用写入权限
downlad_enable=YES      //是否启用下载权限
userlilst_enable=YES      //是否启用user_list列表文件,设为NO则文件不起作用
userlist_deny=YES      //是否禁用user_list列表文件中的用户登录,如果为NO则只有列表中用户可登录
max_clients=0      //限制并发客户端连接数,总连接数限制
max_per_ip=0      //限制单个IP的并发连接数,单用户连接数限制

#匿名相关配置选项
anonymout_enable=YES      //是否启用匿名登录
anon_umask=022      //匿名登录用户上传文件的权限掩码,是实际权限的反码
anon_root=/var/ftp      //匿名用户的FTP根目录
anon_upload_enable=YES      //是否允许匿名用户上传文件
anon_mkdir_write_enable=YES      //是否允许匿名用户新建文件夹
anon_other_write_enable=YES      //是否开启其他写入权限(重命名,删除……)
anon_max_rate=0      //匿名用户的最大传输速率,单位B/S,0代表无限制

以上设置允许匿名登录,并将匿名目录设置在/var/ftp下,允许匿名用户写入和删除、重命名文件及目录。

使用ftp命令测试,匿名登录用户名默认为ftp:

ftp www.digeekao.xin

六、搭建基于本地用户认证的ftp服务器

在配置文件中删除或注释掉匿名相关选项,并配置如下选项:

#本地用户相关配置选项
local_enable=YES      //是否启用本地用户登录
local_umask=022      //本地用户上传文件的权限掩码,是实际权限的反码
chroot_local_user=YES      //是否将本地用户禁锢在主目录
local_max_rate=0      //限制本地用户最大传输速率,单位B/S,0代表无限制
#自2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!
#如果检查发现还有写权限,就会提示错误信息:
#500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
#针对这个问题,可以直接去除主目录的写入权限,或添加如下选项到配置文件: 
allow_writeable_chroot=YES    //允许具有写入权限的主目录

新建测试用户ftptest,并设置密码:

useradd ftptest && passwd ftptest

使用ftp命令进行测试:

七、创建基于虚拟用户认证的ftp服务器

基于虚拟用户认证的登陆可以更加灵活的控制用户登陆的权限,大大提高FTP服务器的安全性。

基于虚拟用户认证的原理是将虚拟用户映射到一个本地用户,并将虚拟用户的PAM认证文件重新定位到指定的位置。

建立基于虚拟用户的认证一般需要以下几个步骤:

1、建立虚拟用户的账号数据库文件
2、创建虚拟用户映射的系统用户及FTP根目录
3、创建支持虚拟用户的PAM认证文件
4、在vsftpd.conf中添加相关配置
5、为个别用户创建独立配置文件
6、重载服务,进行测试

建立虚拟FTP用户的账号用户名密码列表文件,奇数行为用户名,偶数行为密码:

vim /etc/vsftpd/vusers.list

将虚拟用户用户名密码列表文件转换成账号数据库文件:

cd /etc/vsftpd/
db_load -T -t hash -f vusers.list vusers.db      //只用db_load工具转换数据库
chmod 600 /etc/vsftpd/vusers.*      //修改相关文件权限,重要!!!!!!

创建映射的系统账户:

useradd -d /home/vftproot -s /sbin/nologin vftp      //创建vftp用户,设置主目录,禁止登陆
mkdir /home/vftproot/ftp   //创建用户操作的ftp目录,解决2.3.5后可写主目录无法登陆问题
chown vftp:vftp /etc/vftproot/ftp      //修改目录所有者

创建支持虚拟用户的PAM认证文件:

vim /etc/pam.d/vsftpd.vu     //文件名可自定义
#键入一下内容

#%PAM-1.0
auth      required      pam_usedb.so db=/etc/vsftpd/vusers
account   required      pam_usedb.so db=/etc/vsftpd/vusers

#以上文件中内容为先前步骤中建立的数据库文件,不要扩展名。

在vsftpd.conf中添加相关配置选项:

#本地用户相关选项
local_enable=YES      //本地用户认证必需打开
#虚拟用户相关选项
guest_enable=YES      //是否启用用户映射
guest_username=virtual      //指定虚拟用户映射的系统用户名,指定的用户必须存在
pam_service_name=vsftpd.vu      //指定PAM认证文件,文件中保存虚拟用户数据文件的路径等信息
user_config_dir=/etc/vsftpd/vusers_dir      //指定单独用户配置文件的存放位置

注意!!!

新添加的PAM认证选项必需位于“pam_service_name=vsftpd”选项位置后,否则认证会出错!!!!!

为个别用户设置独立配置文件:

vim /etc/vsftpd/vusers_dir/test1    //用户test1的配置文件
#键入以下内容
anon_upload_enable=YES
anoo_mkdir_write_enable=YES

touch /etc/vsftpd/vusers_dir/test2      //用户test2的配置文件

重载服务,在客户端中进行测试:

test1可以读写,新建目录:

test2可以读,不可以新建目录:

上一篇
下一篇