vsftpd 简介
vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。
vsftpd有以下三种认证模式:
- 匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登陆。
- 本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来简单。
- 虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。
表1:vsftpd服务常用的参数以及作用
安装
yum install vsftpd
注意:
- 检查是否已经安装过vsftpd的命令:
rpm -qa|grep vsftpd
- 默认配置文件路径:
/etc/vsftpd/vsftpd.conf
配置
1、创建虚拟用户
在根或者用户目录下创建ftp文件夹,如:/ftpfile:
mkdir /ftpfile
或
mkdir /opt/ftpfile
添加匿名用户:
useradd ftpuser -d /opt/ftpfile/ -s /sbin/nologin
注意:
ftpuser是用户名
/opt/ftpfile/是刚创建的ftp文件目录
注意——在添加一个用户时报错(useradd:警告:此主目录已经存在。不从 skel 目录里向其中复制任何文件。)解决方法:
【userdel -rf 用户名】//删除用户,然后在执行上面添加用户名即可。
修改ftpfile权限:
chown -R ftpuser.ftpuser /opt/ftpfile/
重设ftpuser密码(在设置密码时,提示密码不符合要求时,忽略即可,继续确认密码):
passwd ftpuser
解决FTP登陆报错530 Login incorrect. Login failed:
vim /etc/shells
在打开的文件中添加 /sbin/nologin
2、vsftpd配置
进入 /etc/vsftpd 目录:
cd /etc/vsftpd
创建文件名为 chroot_list 的文件,把刚才新增的虚拟用户添加到此配置文件中,后续要引用(第一行是用户名、第二行是密码,密码可以不用设置):
vim chroot_list
修改文件: /etc/selinux/config:
vim /etc/selinux/config
将文件修改为:
设置vsftpd环境
备份vsftpd.conf:
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
打开vsftpd.conf:
vim /etc/vsftpd/vsftpd.conf
设置如下:
支持的配置如下:
3、重启vsftpd服务
systemctl restart vsftpd
4、防火墙配置
firewall-cmd --add-service=ftp --permanent //永久开放ftp服务
firewall-cmd --zone=public --add-port=61001-62000/tcp --permanent # 开放61001-62000端口
firewall-cmd --zone=public --add-port=20/tcp --permanent # 开放20端口
firewall-cmd --zone=public --add-port=21/tcp --permanent # 开放21端口
firewall-cmd --reload # 配置立即生效
firewall-cmd --zone=public --list-ports # 查看防火墙所有开放的端口
firewall-cmd --state # 查看防火墙状态
5、测试连接
或是打开浏览器,在地址栏中输入ftp://服务器的ip地址