1. 安装vsftpd

yum -y install vsftpd

2. 编辑vsftpd配置文件

vi /etc/vsftpd/vsftpd.conf

如下修改各项配置(没有的就新增)

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=NO
listen_port=2121
ftp_data_port=2122
pasv_enable=YES
pasv_min_port=2123
pasv_max_port=2131
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
ls_recurse_enable=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES

说明:不允许匿名用户登录,运行本地用户登录,允许写入,本地umask值为022,进入每个目录显示欢迎信息(读取目录下.message文件里的信息),上传和下载文件时记录日志,不使用20端口传输数据(关闭主动模式),监听端口设为2121(客户端连接此端口),数据端口设为2122,开启被动模式,被动模式起始端口设为2123,被动模式结束端口设为2131,使用标准文件日志,允许上传二进制文件,允许下载二进制文件,限制登录的本地用户在自己的主目录下活动(和chroot_list_file配套使用),指定限制在主目录活动的用户列表位置,允许使用ls -R等命令,开启IPv4监听,关闭IPv6监听(IPv4和IPv6选项只能同时允许一个,要同时监听必须用两份配置文件分别指定),使用pam模块控制(vsftpd文件在/etc/pam.d目录下),允许用户列表,只允许用户列表中的用户登录,指定用户列表位置,允许tcp_wrappers管理

查看以上各项配置是否正确

egrep -vi '^#|^$' /etc/vsftpd/vsftpd.conf

3. 配置vsftpd为ssl显示加密

新建ssl和private文件夹,用openssl生成vsftpd的证书:

mkdir -p /etc/vsftpd/ssl
mkdir -p /etc/vsftpd/ssl/private/
openssl req -x509 -nodes -days 720 -newkey rsa:2048 -keyout /etc/vsftpd/ssl/private/vsftpd.key -out /etc/vsftpd/ssl/vsftpd.pem

设置文件权限:

chmod 400 /etc/vsftpd/ssl/vsftpd.pem
chmod 400 /etc/vsftpd/ssl/private/vsftpd.key

修改vsftpd配置文件:

vi /etc/vsftpd/vsftpd.conf

在文件结尾添加如下内容:

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/ssl/private/vsftpd.key

说明:开启ssl方式访问,不允许匿名用户使用ssl,强制本地数据传输使用ssl,强制本地登录使用ssl,启用SSL TLS,不启用sslv2,不启用sslv3,指定证书文件位置,指定私钥文件位置。

4. 添加用户ifshow到vsftpd用户列表

echo "ifshow" >> /etc/vsftpd/chroot_list
echo "ifshow" >> /etc/vsftpd/user_list

5. 配置防火墙开启FTP服务端口

firewall-cmd --permanent --add-port=2121-2131/tcp
firewall-cmd --reload

这里要注意,firewalld添加FTP服务无效,要直接添加FTP的端口

6. 启动vsftpd并设置为开机自启

systemctl enable vsftpd
systemctl start vsftpd