一.关闭selinux跟防火墙
setenforce 0
systemctl stop firewalld
二.安装vsftpd
yum install vsftpd -y
三.创建虚拟用户与目录并申请证书
mkdir /webdata 根目录
chmod 777 /webdata/
useradd webadmin 上传的文件映射为webadmin
vim user webuser虚拟用户
通过db_load工具创建出Berkeley DB格式的数据库文件
linux下的vsftpd的db_load命令_努力学习的菜头的博客-CSDN博客db_load是linux下创建虚拟账户:选项-T允许应用程序能够将文本文件转译载入进数据库。由于我们之后是将虚拟用户的信息以文件方式存储在文件里的,为了让Vsftpd这个应用程序能够通过文本来载入用户数据,必须要使用这个选项。指定了选项-T,那么一定要追加子选项-t;子选项-t,追加在在-T选项后,用来指定转译载入的数据库类型。-f 参数后面接包含用户名和密码的文本文件,文件的内容是:奇数行用户名、偶数行密码hash就是使用hash码加密db_load -T -t hash -f vuser uhttps://blog.csdn.net/yanjun52015/article/details/121361892
db_load -T -t hash -f user user.db
四.创建根证书 申请站点证书密钥和请求证书 给证书签名
vim /etc/pki/tls/openssl.cnf
mkdir /CA
cp -rf /etc/pki/tls/* /CA
cd /CA
touch index.txt
echo 01 >serial
openssl genrsa -out private/cakey.pem 2048
openssl req -x509 -new -key ./private/cakey.pem -out cacert.pem
申请站点证书密钥和请求证书
openssl genrsa -out ftp.key 2048
openssl req -new -key ftp.key -out ftp.csr
给证书签名
openssl x509 -req -in ftp.csr -CA /CA/cacert.pem -CAkey /CA/private/cakey.pem -CAcreateserial -out ftp.crt
五.编辑ftp配置文件和认证文件
vim /etc/vsftpd/vsftpd.conf 配置文件
配置文件中的带#的行数比较多 使用
mv /etc/vsftpd/vsftpd.conf /etc/vsfptd/vsftpd.conf_bak
grep -v "#" /etc/vsftpd/vsftpd.conf_bak >/etc/vsftpd/vsftpd.conf
添加这些属性节点
guest_enable=YES 启用虚拟用户
guest_username=webadmin 将虚拟用户映射为本地用户,这样虚拟用户登录后才能进入本地用户webadmin的目录
user_config_dir=/etc/vsftpd 存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)
force_local_data_ssl=YES 表示在登录和数据传输时采用证书加密
force_local_logins_ssl=YES 在登录
ssl_enable=YES 表示开启ssl证书功能
rsa_cert_file=/ca/ftp.crt 此选项用于指定 SSL 加密联接所用 RSA 证书的位置.
rsa_private_key_file=/ca/ftp.key 证书的位置.
local_root=/webdata 把本地账户指向创建的/webdata
allow_writeable_chroot=YES 这行解决了无法登陆的问题
deny_file={*.doc,*.docx,*.xlsx} 禁止上传后缀名为.doc .docx .xlsx
local_max_rate=100000 限制用户的下载最大速度为100kb/s
max_per_ip=2 最大同一IP在线人数为2人
pasv_min_port=40000 最小接口
pasv_max_port=41000 最大接口
最后两行是传输接口的范围
vim /etc/pam.d/vsftpd 认证文件
其中user是上一步生成的数据库文件的文件名,不要后缀名!!!
测试
安装lftp
yum install lftp -y
编辑lftp配置文件
vim /etc/lftp.conf
set ssl:verify-certificate no 禁用证书验证
创建四个文件测试
touch test.doc
touch test.docx
touch test.xlsx
touch test.txt
lftp -u webuser:1234 localhost 使用用户名webuser密码1234连接到本地主机localhost
lftp连接测试