FTPS 搭建

.安装FTP服务
为了允许从外部系统访问FTP服务,我们需要打开FTP守护进程监听的21端口

firewall-cmd --zone=public --permanent --add-port=21/tcp

firewall-cmd --zone=public --permanent --add-service=ftp

firewall-cmd --reload

2.FTP被动模式-端口配置
防火墙设置数据端口范围P,并在防火墙中开启范围P的准入

firewall-cmd --zone=public --permanent --add-port=64000-64100/tcp

3.FTP配置文件
anonymous_enable=NO ### 是否允许匿名,默认no
local_enable=YES ### 允许本地用户登录
write_enable=YES ### 允许对文件系统做改动的 FTP 命令
local_umask=022 ### 本地用户创建文件所用的 umask 值
dirmessage_enable=YES ### 当用户首次进入一个新目录时显示一个消息
xferlog_enable=YES ### 用于记录上传、下载细节的日志文件
connect_from_port_20=YES ### 使用端口 20 (ftp-data)用于 PORT 风格的连接
xferlog_std_format=YES ### 使用标准的日志格式
xferlog_file=/var/log/xferlog ###上传与下载日志存放路径
listen=NO ### 不要让 vsftpd 运行在独立模式
listen_port=2121 ### 改变vsftp的端口号
listen_ipv6=YES ### vsftpd 将监听 IPv6 而不是 IPv4
pam_service_name=vsftpd ### vsftpd 使用的 PAM 服务名
userlist_enable=YES ### vsftpd 支持载入用户列表
tcp_wrappers=YES ### 使用 tcp wrappers
ssl_enable=YES #启用ssl加密
force_local_data_ssl=YES #强制本地用户数据传输加密
force_local_logins_ssl=YES #强制本地用户登录加密
ssl_tlsv1=YES #支持TLS方式
ssl_sslv2=NO #
ssl_sslv3=NO #
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem #RSA凭证档案所在
4.可以基于用户列表文件/etc/vsftpd/配置FTP来允许/拒绝用户的访问

5.证书
第一种:自带有ssl模块
查看当前vsftpd是否具有ssl模块

创建自签名证书 红框要填写证书服务器的IP

在配置文件中添加相关ssl配置。
ssl_enable=YES #启用ssl加密
allow_anon_ssl=YES #允许匿名用户使用ssl加密
force_local_data_ssl=YES #强制本地用户数据传输加密
force_local_logins_ssl=YES #强制本地用户登录加密
ssl_tlsv1=YES #支持TLS方式
ssl_sslv2=NO #
ssl_sslv3=NO #
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem #RSA凭证档案所在

第二种:利用openssl
openssl genrsa -out vsftpd.key 2048
openssl req -new -key vsftpd.key -out vsftpd.csr
openssl x509 -req -days 365 -in vsftpd.csr -signkey vsftpd.key -out vsftpd.crt

6.目录权限
把用户限制在特定目录下
第一种方式

设置以下参数,限制用户只能访问自身的主目录。

chroot_local_user=YES #所有用户都被限制在其主目录
chroot_list_enable=YES #启用例外用户名单
chroot_list_file=/etc/vsftpd/chroot_list #例外用户名单

allow_writeable_chroot=YES #为防止报错需添加这行
第二种方式
再次打开 vsftpd 配置文件,并将下面不安全的选项注释掉:

allow_writeable_chroot=YES

接着为用户ravi创建另外一个替代根目录,并将所有用户对该目录的可写权限移除:
mkdir /home/ravi/ftp
chown nobody:nobody /home/ravi/ftp
chmod a-w /home/ravi/ftp
接下来,在用户存储他/她的文件的本地根目录下创建一个文件夹:
mkdir /home/ravi/ftp/files
chown ravi:ravi /home/ravi/ftp/files
chmod 0700 /home/ravi/ftp/files/
接着在 vsftpd 配置文件中添加/修改这些选项:
user_sub_token=$USER ### 在本地根目录下插入用户名
local_root=/home/$USER/ftp ### 定义任何用户的本地根目录

7.禁止FTP用户SSH登录,仅允许FTP登录
找到nologin的shell
vim /etc/shells

usermod -s /usr/sbin/nologin ftpuser
表示禁止FTP用户“ftpuser”登录ssh。

原文地址:https://www.cnblogs.com/hnsya/p/14372827.html