如何安装配置基于DB4的VSFTP?

FTP & SFTP & FTPS

1 前言

一个问题,一篇文章,一出故事。
笔者需要部署VSFTP服务,由于不喜欢使用传统那个基于用户名和密码的验证,于是笔者尝试使用基于DB4的VSFTP。

2 最佳实践

2.1 准备安装环境

2.1.1 系统的基本配置

Hostname = ftp.cmdschool.org
OS = Oracle Linux 9.x x86_64
IP Address = 192.168.0.21

2.1.2 系统的基本配置

如何完成CentOS 7.x的基本服务?

2.1.3 安装BerkeleyDB

如何基于Oracle Linux 9.x 编译BerkeleyDB?


需要注意的是,
你需要安装比较低版本的软件包才能兼容,即db-4.8.30.tar.gz(berkeley-db 4.8.30版本,简称DB4),详细请参阅安装文档。

2.2 安装部署

2.2.1 安装软件包

dnf install -y vsftpd

然后,你需要使用如下命令启动并设置服务自动启动,

systemctl start vsftpd.service
systemctl enable vsftpd.service
systemctl status vsftpd.service

2.2.2 确定系统默认的ftp用户存在

id ftp

可见如下输出,

uid=14(ftp) gid=50(ftp) groups=50(ftp)

2.2.3 修改服务配置文件

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.defalut
vim /etc/vsftpd/vsftpd.conf

配置修改如下,

listen=YES
anonymous_enable=NO
local_enable=YES
virtual_use_local_privs=YES
write_enable=YES
connect_from_port_20=YES
pasv_min_port=50000
pasv_max_port=60000
pam_service_name=vsftpd
guest_enable=YES
guest_username=ftp
chroot_local_user=YES
allow_writeable_chroot=YES
user_sub_token=$USER
local_root=/data/ftp/$USER
hide_ids=YES
xferlog_enable=YES
vsftpd_log_file=/var/log/vsftp/vsftpd.log
local_umask=022

根据配置,我们需要手动创建数据目录,

mkdir -p /var/log/vsftp /data/ftp

配置修改后,你需要使用如下命令重载服务使配置生效,

systemctl restart vsftpd.service

2.2.4 配置服务认证文件

vim /etc/pam.d/vsftpd

修改如下配置,

#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
#auth       include     password-auth
#account    include     password-auth
auth    sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers

配置意图为只允许虚拟用户访问FTP(注解该类型即拒绝该登录方式),根据配置,你需使用如下命令创建ftp认证的用户名和密码,

echo 'ftpUser01' >> /etc/vsftpd/loginusers
echo 'ftpPassword' >> /etc/vsftpd/loginusers

然后,你需要使用如下命令将用户名和密码转换为数据库,

db_load -T -t hash -f /etc/vsftpd/loginusers /etc/vsftpd/loginusers.db

另外基于安全的要求,你需要使用如下命令修改文件的权限,

chmod 0600 /etc/vsftpd/loginusers*

配置修改后,你需要使用如下命令重载服务使配置生效,

systemctl restart vsftpd.service

2.2.3 设置防火墙

firewall-cmd --permanent --add-service ftp
firewall-cmd --permanent --add-port 50000-60000/tcp
firewall-cmd --reload
firewall-cmd --list-all

2.2.6 创建测试用户目录

mkdir -p /data/ftp/ftpUser01/myhome
chown root:root /data/ftp/ftpUser01
chmod -R 775 /data/ftp/ftpUser01
chown ftp:ftp /data/ftp/ftpUser01/myhome

2.2.7 创建名称解析

echo '192.168.0.21 ftp.cmdschool.org' >> /etc/hosts

注:以上方法仅适用于测试环境,如果是生产环境请配置DNS

2.2.8 客户端测试


如上图所示,
在ftp客户端FileZilla中,
填写“主机名称”,范例中填写“ftp.cmdschool.org”
填写“用户”,范例中填写“ftpUser01”
填写“密码”,范例中填写“ftpPassword”
单击【连接】即可测试
如果遇到错误提示,请结合如下命令查看日志解决,

tail /var/log/vsftpd.log
tail /var/log/secure

参阅文档
=======================

https://www.cnblogs.com/LiuChang-blog/p/14704183.html
https://blog.csdn.net/weixin_34132768/article/details/92820723

没有评论

发表回复

FTP & SFTP & FTPS
如何部署sftptool的sftp服务运行环境?

1 基础知识 1.1 概念 sftp是Secure File Transfer Protocol的缩 …

FTP & SFTP & FTPS
如何使用Python连接FTP?

1 前言 一个问题,一篇文章,一出故事。 笔者遇到一个需要使用Python连接ftp的需求,于是整理 …

FTP & SFTP & FTPS
如何安装配置tftp服务?

1 前言 一个问题,一篇文章,一出故事。 笔者公司需要一个tfpt服务用于传输日志文件,于是整理此文 …