VSFTPD折腾记

一、目标:使用linux本地用户,隐式SSL加密

安装 yum -y install vsftpd

systemctl start vsftpd

systemctl status vsftpd

自启 systemctl enable vsftpd.service

1. VSFTPD的配置文件 vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
force_local_data_ssl=NO
implicit_ssl=YES
ssl_enable=YES
ssl_request_cert=NO
listen_port=990
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/certs/vsftpd.key
pasv_min_port=60000
pasv_max_port=61000

2. SSL证书的生成

sudo openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /etc/ssl/certs/vsftpd.key -out /etc/ssl/certs/vsftpd.pem

-keyout :生成私钥 -out 生成公钥

3. 防火墙的设置

sudo firewall-cmd --zone=public --add-port=990/tcp --permanent

sudo firewall-cmd --zone=public --add-port=60000-61000/tcp --permanent

firewall-cmd --reload

如果不考虑安全因素,则可以直接关闭防火墙:

vi /etc/selinux/config

#SELINUX=enforcing #注释掉

#SELINUXTYPE=targeted #注释掉

SELINUX=disabled #增加

:wq! #保存退出

二、目标:使用vsftpd虚拟用户,优点:系统更安全、更加便于用户信息的迁移和管理

1. 安装db4

操作系统CENTOS8虚拟机,

yum install db4-utils db4 -y

如果用yum -y install 安装失败,找不到db4安装包,网上找到了资源,用下面命令安装

sudo dnf install https://pkgs.dyn.su/el8/base/x86_64/libdb4-devel-4.8.30-30.el8.x86_64.rpm --skip-broken

2.建立用户账户的文本文件 vusers.txt

user1

user1pass

user2

user2pass

3.生成数据库

# db_load -T -t hash -f vusers.txt vsftpd-virtual-user.db

# chmod 600 vsftpd-virtual-user.db

# rm vusers.txt

4.配置vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
force_local_data_ssl=NO
implicit_ssl=YES
ssl_enable=YES
ssl_request_cert=NO
listen_port=990
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/certs/vsftpd.key
pasv_min_port=60000
pasv_max_port=65535
pam_service_name=vsftpd.virtual
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/home/vftp/$USER
hide_ids=YES
pasv_address=x.x.x.x

5.创建pam文件

# sudo vim  /etc/pam.d/vsftpd.virtual

#%PAM-1.0

auth required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user

account required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user

session required pam_loginuid.so

:wq!

6.创建用户目录

# mkdir /home/vftp

# mkdir -p /home/vftp/{user1,user2}

# chown -R ftp:ftp /home/vftp --将目录主人改为ftp用户

#cd vftp

#chmod 555 user1 -只读:因为设置了chroot_local_user=YES,根据手册说明,用户根目录必须设置为只读,如果要上传文件,则必须创建可读写的子目录

#chmod 555 user2 -只读

7. 脚本:为了方便创建ftp用户,编写了脚本,执行时带2个参数,1是用户名2密码

#!/bin/bash
sudo mkdir /home/vftp/$1
sudo mkdir /home/vftp/$1/ftp
sudo chmod 555 /home/vftp/$1
sudo chown -R ftp:ftp /home/vftp/$1
sudo sh -c "echo ${1}>>/etc/vsftpd/vusers.txt"
sudo sh -c "echo ${2}>>/etc/vsftpd/vusers.txt"
sudo db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vsftpd-virtual-user.db

不知何故,重装了centos7.6(原版本8.1),FluentFtp不支持ssl session reuse,只好在 vsftpd.conf 添加一行配置:

require_ssl_reuse=NO

看了fluentftp的论坛,获悉是由于windows API没有提供相关的接口,fluentftp作者只能作罢。

参考文章:

https://www.cyberciti.biz/tips/centos-redhat-vsftpd-ftp-with-virtual-users.html

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值