1. 安装vsftpd服务
1)安装前检查系统版本
[root@192168088101_vsftp_server vsftpd]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
2)vsftpd软件包的安装方式
a. 通过yum方式安装ftp服务
yum install vsftpd -y
b. 通过rpm方式安装 下载链接:http://rpmfind.net/linux/rpm2html/search.php?query=vsftpd
3)安装成功后,检查安装的vsftpd的rpm包版本,然后命令启动vsftpd,查看vsftp服务是否正常;
[root@192168088101_vsftp_server vsftpd]# rpm -qa|grep ftp
vsftpd-3.0.2-25.el7.x86_64
[root@192168088101_vsftp_server vsftpd]# /bin/systemctl start vsftpd.service
[root@192168088101_vsftp_server vsftpd]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 55166/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7301/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 7460/master
tcp6 0 0 :::22 :::* LISTEN 7301/sshd
tcp6 0 0 ::1:25 :::* LISTEN 7460/master
注: a. 本文以CentOS 7.3 x64系统进行实际操作演示 b. RPM软件包名称:vsftpd-3.0.2-25.el7.x86_64
2. 创建ftp用户,并设置ftp用户的密码
1)新增test用户,指定用户的家目录,并且禁止test用户登陆系统
[root@192168088101_vsftp_server vsftpd]# useradd -d /home/ftpuser -s /sbin/nologin test
[root@192168088101_vsftp_server vsftpd]# tail -n 1 /etc/passwd //检查用户是否创建成功
test:x:1000:1000::/home/ftpuser:/sbin/nologin
说明: a. -s /sbin/nologin 是让其不能登陆系统 b. -d 是指定用户目录为/home/ftpuser,这里可以替换成任何你需要的目录 c. test是ftp用户名,在配置时把这个test换成你的ftp用户名 d. 用useradd建立的用户,如果后面不加–s /sbin/nologin参数,建立的用户为普通系统用户,有系统登陆centos服务器的权限; e. 在useradd命令后面加上参数–s /sbin/nologin,为centos 服务器虚拟主机添加不可以登录系统的专用账号(虚拟账户)
2)给test用户设置一个密码
[root@192168088101_vsftp_server vsftpd]# passwd test
Changing password for user test.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
3. 编辑ftp的配置文件,并重启vsftp服务
[root@192168088101_vsftp_server pam.d]# grep -v ^# /etc/vsftpd/vsftpd.conf
#不允许匿名用户登陆
anonymous_enable=NO
#允许本地用户登录
local_enable=YES
#允许本地用户具有读写的权限
write_enable=YES
#本地用户新增档案的权限,设置为022时,用户上传文件权限为-rw-r--r--,例:文件默认权限=666-umask值 666-022=644,目录默认权限=777-umask 值 777-022=755
local_umask=022
#进入每个目录是显示欢迎信息,在每个目录下建立.message文件在里面写欢迎信息
dirmessage_enable=YES
#让系统自动维护上传和下载的日志文件,默认情况该日志文件为/var/log/vsftpd.log
xferlog_enable=YES
#启用FTP数据端口的连接请求,tp-data数据传输,21为连接控制端口
connect_from_port_20=YES
#日志文件位置
xferlog_file=/home/logs/xferlog
#使用标准的ftpd xferlog格式保存日志文件
xferlog_std_format=YES
#vsftp的默认设置是所有目录都可以被进入,极为不安全,因此要限制用户可以访问目录,限制用户只能访问自己的家目录
chroot_local_user=YES
chroot_list_enable=YES
allow_writeable_chroot=YES
chroot_list_file=/etc/vsftpd/chroot_list
#开启IPV4端口监听
listen=YES
#关闭IPV6端口监听
listen_ipv6=NO
#vsftpd将使用的PAM服务的名称
pam_service_name=vsftpd
#user_list文件中的用户允许登录FTP服务器
userlist_enable=YES
#如果启用,并且vsftpd是使用tcp_wrappers支持编译的,则传入连接将通过tcp_wrappers访问控制提供
tcp_wrappers=YES
#关闭反向查找dns服务器
reverse_lookup_enable=NO
#被动模式下,数据传输使用的port范围
pasv_min_port=4500
pasv_max_port=4501
#设置一个数字IP地址,作为被动模式命令的响应
pasv_address=192.168.88.1
#修改配置后,需要重启vsftp服务,让配置生效
[root@192168088101_vsftp_server vsftpd]# /bin/systemctl restart vsftpd.service
[root@192168088101_vsftp_server vsftpd]# /bin/systemctl status vsftpd.service
● vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2019-07-24 10:20:57 CST; 7s ago
Process: 108259 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
Main PID: 108260 (vsftpd)
CGroup: /system.slice/vsftpd.service
└─108260 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
Jul 24 10:20:57 192168088101_vsftp_server systemd[1]: Stopped Vsftpd ftp daemon.
Jul 24 10:20:57 192168088101_vsftp_server systemd[1]: Starting Vsftpd ftp daemon...
Jul 24 10:20:57 192168088101_vsftp_server systemd[1]: Started Vsftpd ftp daemon.
说明:
a. ftp测试的时候,最好先把防火墙和selinux关闭; b. PASV下,可以在ftp的前端配置一台负载均衡,再访问ftp的时候只要访问负载均衡的IP地址就可以了; c. 将ftp服务器添加为负载均衡的后端服务器,添加ftp的端口(21,4500,4501)监听,负载均衡健康检查端口均为21端口;
4. 配置ftp服务防火墙规则
#查看防火墙运行状态
[root@192168088101_vsftp_server ftpuser]# firewall-cmd --state
running
#添加允许ftp服务通行的规则
[root@192168088101_vsftp_server ftpuser]# firewall-cmd --add-service=ftp --permanent
success
#修改防火墙规则后,需要重启ftp服务
[root@192168088101_vsftp_server ftpuser]# systemctl reload firewalld.service
#查看已添加的防火墙规则
[root@192168088101_vsftp_server ftpuser]# firewall-cmd --list-services
ssh dhcpv6-client ftp
[root@192168088101_vsftp_server ftpuser]# firewall-cmd --info-service=ftp
ftp
ports: 21/tcp
protocols:
source-ports:
modules: ftp
destination:
#删除ftp服务的规则,删除规则后,ftp服务将不可访问
[root@192168088101_vsftp_server ftpuser]# firewall-cmd --remove-service=ftp --permanent
5. 关闭防火墙和selinux的方法
[root@192168088101_vsftp_server vsftpd]# firewall-cmd --state
running
[root@192168088101_vsftp_server vsftpd]# /bin/systemctl stop firewalld.service
#禁止开机自动启动防火墙
[root@192168088101_vsftp_server vsftpd]# /bin/systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@192168088101_vsftp_server vsftpd]# firewall-cmd --state
not running
[root@192168088101_vsftp_server vsftpd]# getenforce
Enforcing
#永久关闭selinux
[root@192168088101_vsftp_server vsftpd]# vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled
#临时关闭selinux
[root@192168088101_vsftp_server vsftpd]# setenforce 0
[root@192168088101_vsftp_server vsftpd]# getenforce
Permissive
6. vsftpd.conf配置文件选项详解
官方链接:http://vsftpd.beasts.org/vsftpd_conf.html 中文链接:https://www.cnblogs.com/sopcce/p/10743359.html