一、vsftp简介
1. 什么是vsftp
vsftpd 的名字代表"very secure FTP daemon", 安全是它的开发者Chris Evans 考虑的首要问题之一。在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。
2. vsftp特性
vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服务器不支持的特征。比如:
- 非常高的安全性需求
- 带宽限制
- 良好的可伸缩性
- 创建虚拟用户的可能性
- IPv6支持
- 中等偏上的性能
- 分配虚拟 IP 的可能性
- 高速
二、安装vsftp
通过发行版提供的软件包管理工具安装
如果您用的是Fedora 或Redhat 系统,可以用下面的命令在线安装
[root@localhost ~]# yum install vsftpd如果是debian 类系统,可以用apt 来在线安装
[root@localhost ~]# apt-get install vsftpd
如果您是RPM的系统,也可以找到vsftpd-xxxx.rpm 的包来通过rpm命令来安装
[root@localhost ~]# rpm -ivh vsftpd*.rpm
三、Ubuntu下安装vsftp配置
不同系统安装方式不一样,但配置基本相同,这里相关自定义的配置全部放到/etc/vsftpd目录下。后面记录的配置主要是启用虚拟用户访问的配置。
1.安装
和debian类一样,Ubuntu也可以用apt-get来管理安装软件包
[root@localhost ~]# apt-get install vsftpd
2.创建ftp系统用户
相当于虚拟用户通过借用本地用户的名去访问ftp服务器
[root@localhost ~]# sudo useradd vsftpd -d /home/vsftpd -s /bin/false
[root@localhost ~]# sudo chown vsftpd:vsftpd /home/vsftpd
这里创建了一个不能登陆的本地用户vsftpd,根目录是/home/vsftpd,后面虚拟用户的根目录都是基于这个目录的
3.创建虚拟用户数据库
[root@localhost ~]# sudo touch /etc/vsftpd/vsftp_user.txt
[root@localhost ~]# sudo nano /etc/vsftpd/vsftp_user.txt
vsftp_user.txt里记录的是虚拟用户的用户名&密码格式如下
用户名1
密码1
用户名2
密码2
用户名3
密码3
下面就可以以vsftp_user.txt为模板创建数据库了
[root@localhost ~]# sudo db_load -T -t hash -f /etc/vsftpd/vsftp_user.txt /etc/vsftpd/vsftp_user.db
4.配置PAM文件
[root@localhost ~]# sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
[root@localhost ~]# sudo nano /etc/pam.d/vsftpd
输入一以下内容:
auth required pam_userdb.so db=/etc/vsftpd/vsftp_user
account required pam_userdb.so db=/etc/vsftpd/vsftp_user
5.修改vsftp配置文件/etc/vsftpd.conf
主要检查以下配置:
#如果要让访问的用户必须输入用户名和密码的话,这个时候这里就是设置成NO
anonymous_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
#是否将所有用户限制在主目录
chroot_local_user=YES
#是否启用chroot_list_file限制
chroot_list_enable=YES
#限制用户配置文件,这时里面配置的用户可以浏览主目录的上级目录,而不在里面的用户就不行
chroot_list_file=/etc/vsftpd/chroot_list
#这个是开启虚拟用户
guest_enable=YES
#这个就是我们上面设置的本地用户名
guest_username=vsftpd
#虚拟用户配置目录
user_config_dir=/etc/vsftpd/virtual_users
#启用pam
pam_service_name=vsftpd
#是否启用本地用户
local_enable=YES
secure_chroot_dir=/var/run/vsftpd
6. 编辑单个用户配置文件(
user_config_dir配置的目录下)
示例
local_root=/var/ftp/ftp_base
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
说明
local_root=虚拟用户主目录,注意这个主目录不能有写的权限,否则登陆会报错(500 OOPS: vsftpd: refusing to run with writable root inside chroot)
write_enable=YES //写权限
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES