FTP服务器部署(vsftpd)
本文详细介绍了在OpenEuler 24.03系统上配置vsftpd服务器的完整过程。主要内容包括:1)基础环境搭建与软件安装;2)三种用户认证模式(虚拟用户、匿名用户、本地用户)的详细配置方法,重点说明虚拟用户的安全配置流程;3)防火墙和SELinux相关设置;4)服务启动与测试。配置过程涵盖权限控制、日志记录、连接限制等安全措施,并提供了不同用户类型的权限管理方案,特别适合需要灵活权限控制的企
1 部署环境
OpenEuler-24.03-LTS-SP1
2 安装软件
dnf install vsftpd
#使用虚拟用户认证时,需安装gdbm数据库
dnf install gdbm
3 配置文件
备份配置文件:
cd /etc/vsftpd
cp vsftpd.conf vsftpd.conf~
vi vsftpd.conf
3.1 基础配置
编辑配置文件:
# 使用IPV4连接
listen=YES
# 禁用IPV6连接
listen_ipv6=NO# 指定数据传输端口为20
connect_from_port_20=YES# 不显示目录说明和欢迎信息,选择YES时需在目录内创建“.message”文件,设置权限644
dirmessage_enable=NO# 显示欢迎信息
ftpd_banner="欢迎到东哥的FTP做客!"#
# 启用xferlog日志功能
xferlog_enable=YES
# 不启用xferlog格式记录传输日志
xferlog_std_format=NO
# 指定xferlog日志存储位置
xferlog_file=/var/log/vsftpd.log#开启传输日志,详细记录登录信息
log_ftp_protocol=YES
#不隐藏访问IPhide_ids=NO
#
#允许写入
write_enable=YES
#本地用户创建文件默认掩码
local_umask=022
#匿名用户创建文件默认掩码
anon_umask=022
#允许用户修改文件属性
chmod_enable=YES
#关闭仅可访问全局可读文件功能
anon_world_readable_only=NO
#
#不允许用户递归访问目录
ls_recurse_enable=NO
#关闭兼容旧版本客户端模式以提高安全性
async_abor_enable=NO
#关闭ascii编码传输,可以有效解决文件名乱码问题
ascii_upload_enable=NO
ascii_download_enable=NO
#
# 禁锢用户在家目录
chroot_local_user=YES
# 允许家目录写入
allow_writeable_chroot=YES
# 指定家目录写入权限白名单位置
chroot_list_file=/etc/vsftpd/chroot_list
## 启用用户名单
userlist_enable=YES# 设置白名单模式
userlist_deny=NO
# 用户名单路径
userlist_file=/etc/vsftpd/user_list
##最大登录失败次数
max_login_fails=5
# 最大并发终端数
max_clients=20
# 每IP最大连接数5
max_per_ip=5
# 建立FTP连接的超时时间,单位为秒
accept_timeout=60
# PORT 方式下建立数据连接的超时时间,单位为秒
connect_timeout=60
# 建立FTP数据连接的超时时间,单位为秒
data_connection_timeout=120
# 无操作时,断开连接时间,单位为秒
idle_session_timeout=600#
# 启用被动响应模式
pasv_enable=YES
# 起始端口号
pasv_min_port=50001
# 结束端口号
pasv_max_port=51000
# 自动解析服务器公网地址pasv_addr_resolve=YES
创建相关配置文件和目录(属主为root),如文件已存在可以忽略:
mkdir /etc/vsftpd/user_config
chmod 700 /etc/vsftpd/user_config
touch /etc/vsftpd/chroot_list
chmod 600 /etc/vsftpd/chroot_list
touch /etc/vsftpd/user_list
chmod 600 /etc/vsftpd/chroot_list
touch /etc/vsftpd/vuser.pag
chmod 600 /etc/vsftpd/vuser.pag
3.2 虚拟用户配置
FTP用户配置分为三种情况:匿名用户、本地用户、虚拟用户。
建议选择虚拟用户配置,虽然配置相对复杂一些,但是安全性和灵活性方面都是最好的,以下为虚拟用户配置过程。
3.2.1 编辑配置文件
在基础配置中,添加以下内容
#启用本地用户登录
local_enable=YES
#禁用匿名用户登录,提高安全性
anonymous_enable=NO
#
# 启用虚拟用户登录
guest_enable=YES
# 映射到系统用户,系统自动创建ftp用户
guest_username=ftp# 虚拟用户独立配置目录
user_config_dir=/etc/vsftpd/user_config# 创建安全隔离环境,不建议修改默认目录
secure_chroot_dir=/usr/share/empty# 指定PAM认证文件
pam_service_name=vsftpd
3.2.2 创建虚拟用户
gdbm数据库新增和删除用户的基本操作如下:
#进入gdbmtool
gdbmtool
#打开数据库
open /etc/vsftpd/vuser.pag
#列出记录
list
#新增用户名和密码
store 【用户名】 【密码】
#删除已有用户和密码
delete 【用户名】
#退出
quit
添加用户admin/dong1234、upload/123456、download/123456
3.2.3 配置PAM认证
vi /etc/pam.d/vsftpd
注释以下配置:
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth
添加以下配置:
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
3.2.4 创建用户配置文件
touch /etc/vsftpd/user_configs/admin
chmod 600 /etc/vsftpd/user_configs/admin
vi /etc/vsftpd/user_configs/admin
3.2.4.1 上传+下载(admin)
local_root=/home/ftp
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
3.2.4.2 仅上传(upload)
local_root=/home/ftp/upload
download_enable=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
3.2.4.3 仅下载(download)
local_root=/home/ftp/download
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
3.2.5 创建用户家目录
mkdir /home/ftp
mkdir /home/ftp/download
mkdir /home/ftp/upload
chown -R ftp:ftp /home/ftp
chown -R ftp:ftp /home/ftp/download
chown -R ftp:ftp /home/ftp/upload
将所有用户家目录属主调整为ftp:ftp,所有目录均应对ftp用户开放写权限。
3.2.6 添加白名单用户
将admin、upload用户添加到家目录可写白名单,将所有用户添加到用户白名单。
echo "admin" >> /etc/vsftpd/chroot_list
echo "upload" >> /etc/vsftpd/chroot_list
echo "admin" >> /etc/vsftpd/user_list
echo "upload" >> /etc/vsftpd/user_list
echo "download" >> /etc/vsftpd/user_list
3.3 匿名用户配置
3.3.1 编辑配置文件
#启用匿名用户登录
anonymous_enable=YES
# 允许匿名用户免密登录
no_anon_password=YES
# 指定匿名用户家目录
anon_root=/var/ftp
# 禁止匿名上传
anon_upload_enable=NO
# 禁止创建目录
anon_mkdir_write_enable=NO
# 禁止删除/重命名
anon_other_write_enable=NO
3.3.2 创建匿名用户白名单
echo "anonymous" >> /etc/vsftpd/user_list
echo "ftp" >> /etc/vsftpd/user_list
匿名用户访问FTP时,可以使用anonymous作为用户名,密码可以为空也可以输入任意字符。
3.4 本地用户配置
3.4.1 编辑配置文件
#启用本地用户登录
local_enable=YES
# 启用本地用户家目录文件
user_config_dir=/etc/vsftpd/user_config
# 禁锢用户在家目录
chroot_local_user=YES
# 允许家目录写入
allow_writeable_chroot=YES
# 指定家目录写入权限白名单位置
chroot_list_file=/etc/vsftpd/chroot_list
# PAM认证配置
pam_service_name=vsftpd# PAM认证配置
pam_service_name=vsftpd
3.4.2 创建本地用户
创建本地用户组:ftp_local
创建本地用户:dong,指定用户组:ftp_local,指定家目录:/home/dong,禁止shell登录。
groupadd ftp_local
useradd -N -g ftp_local -d /home/dong -s /usr/sbin/nologin dong
3.4.3 创建用户配置文件
touch /etc/vsftpd/user_config/dong
chmod 600 /etc/vsftpd/user_config/dong
vi /etc/vsftpd/user_config/dong
根据需要编辑配置:
# 指定用户家目录
local_root=/home/dong
#允许下载
download_enable=YES
#允许上传
write_enable=YES
#允许删除
delete_enable=YES#允许重命名
rename_enable=YES
#允许创建目录
mkdir_enable=YES
3.4.4 添加用户白名单
添加本地用户到白名单:
echo "dong" >> /etc/vsftpd/chroot_list
echo "dong" >> /etc/vsftpd/user_list
4 防火墙配置
防火墙开放ftp服务和被动模式端口:
firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=50001-51000/tcp
firewall-cmd --reload
查看SELinux配置:
getsebool -a | grep ftp
根据需要进行配置:
setsebool -P ftpd_use_passive_mode=1
必要时可临时关闭SELinux进行调试。
setenforce 0
5 重启服务
systemctl restart vsftpd
systemctl status vsftpd
#设置开机自启
systemctl enable vsftpd
不足之处,敬请指正。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)