vsftpd服务部署实施文档
vsftpd 服务部署实施文档
一、文档信息
项目 | 内容 |
文档名称 | vsftpd 服务部署与配置实施方案 |
适用系统 | CentOS7/8、欧拉 OS、ubuntu等主流 Linux |
服务版本 | vsftpd 3.0.5(稳定版)vsftp3.0.2(编译后版本) |
编写人 | Jiang |
编写日期 | 2025-06-09 |
审核人 | |
适用场景 | 企业内部文件传输、局域网资源上传下载、业务文件分发 |
二、部署环境
1.服务器操作系统:Centos 7.9 aarch64
2.服务器 IP 地址:xx.xx.x.xxx
3.系统防火墙状态:关闭
4.SELINUX 状态: 关闭
5.部署方式:RPM 离线部署
6.版本号/名:vsftp-3.0.2-28.el7.aarch64.rpm
三、前期准备
3.1 环境检查
1.检查系统网络连通性,确保服务器可正常访问(在线安装需联网)
2.检查服务器端口占用,确认 21 端口、被动模式端口段未被占用,生产环境策略封堵21端口,后续要修改自定义账号
bash netstat -lnp | grep 21 |
3.关闭或放行系统安全策略(可选,根据业务需求)
•临时关闭 SELINUX
bash setenforce 0 |
•永久关闭 SELINUX(需重启生效)两种方式可选
bash 1、sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 2、vim /etc/sysconfig/selinux修改:SELINUX=disabled |
3.2 依赖安装
安装 vsftpd 运行必备依赖包
bash # CentOS/欧拉OS yum install -y gcc make libcap libcap-devel # Ubuntu/Debian apt install -y gcc make libcap-dev #离线安装 Rpm -ivh vsftp-3.0.2-28.el7.aarch64.rpm |
四、vsftpd 安装部署
4.1 方式一:yum 在线安装(快速部署)
bash # 安装服务 yum install -y vsftpd # 查看版本 vsftpd -v # 设置开机自启 systemctl enable vsftpd |
4.2 方式二:源码离线编译安装(3.0.5 版本)
1.上传 vsftpd-3.0.5 源码包至服务器/usr/local/src目录(根据个人习惯路径)
2.解压编译安装
bash cd /usr/local/src tar -zxvf vsftpd-3.0.5.tar.gz cd vsftpd-3.0.5 # 编译(默认配置) make # 安装程序 make install # 拷贝配置文件至系统目录 cp vsftpd.conf /etc/vsftpd/ |
4.2 方式二:源码离线rpm安装(3.0.2 版本)
Rpm -ivh vsftp-3.0.2-28.el7.aarch64.rpm
3.注册系统服务、设置开机自启(适配 systemd 系统)
五、核心配置文件修改
配置文件路径:/etc/vsftpd/vsftpd.conf
5.1 基础核心配置(常用生产配置)
ini # 修改为NO,关闭匿名用户访问 anonymous_enable=NO #允许本地用户登录FTP服务器 local_enable=YES # 本地用户是否允许上传 write_enable=YES # 设置系统用户FTP主目录 local_root=/data/ftpdata # 本地用户上传的权限默认是022,则目录的权限是755(777-022=755),文件权限是644(666-022=644) local_umask=022 #用户登陆成功后是否显示欢迎消息或者警告消息。 dirmessage_enable=YES # 激活记录日志,对于一个服务来说,日志是肯定且必须的。 xferlog_enable=YES # 主动模式数据传输接口时是否开启。如果是主动模式,则为YES,不需要更改。 connect_from_port_20=YES # 是否使用标准的FTP日志格式。 xferlog_std_format=YES #监听IPv4 sockets。 listen=YES #关闭ipv6监听 listen_ipv6=NO # Linux的用户名与密码默认采用的是PAM验证,这里ftp默认采用的就是PAM验证 pam_service_name=vsftpd # 用户限制或者说黑名单是否开启,单写这个没有任何的意义。 userlist_enable=YES userlist_deny=NO userlist_file=/etc/vsftpd/user_list #一个tcp简单的防火墙。 tcp_wrappers=YES #开启被动模式。 pasv_enable=YES # 配置FTP被动模式的端口 pasv_min_port=30000 pasv_max_port=30000 # 锁定用户根目录(禁止跳出家目录,安全必备) chroot_local_user=YES chroot_list_enable=NO allow_chroot_writeable=YES #自定义端口 listen_port-22121 #IP连接限制 max_clients=50000 max_per_ip=20000 |
5.2 用户配置
1.创建 FTP 专属用户(禁止 ssh 登录,仅用于 FTP 传输)
bash # 创建用户、指定家目录、禁止登录系统 useradd -d /data/ftpdata -s /sbin/nologin ftp_root# 设置用户密码 passwd ftp_root |
2.配置目录权限
bash # 归属用户权限 chown -R ftp_root:ftp_root /data/ftpdata # 目录权限 chmod -R 755 /data/ftpdata |
5.3 用户黑白名单配置
•白名单路径:/etc/vsftpd/user_list
•黑名单路径:/etc/vsftpd/ftpusers
•配置规则:白名单仅名单内用户可登录,黑名单内用户禁止登录
六、防火墙端口放行
6.1 firewalld 放行端口
bash # 放行FTP默认21端口 firewall-cmd --permanent --add-port=21/tcp # 放行被动模式端口段 firewall-cmd --permanent --add-port=30000-31000/tcp # 重载防火墙 firewall-cmd --reload |
6.2 关闭防火墙(测试环境可选)
bash systemctl stop firewalld systemctl disable firewalld |
七、服务启停与开机自启
bash # 启动服务 systemctl start vsftpd # 停止服务 systemctl stop vsftpd # 重启服务 systemctl restart vsftpd # 查看服务状态 systemctl status vsftpd # 开机自启 systemctl enable vsftpd |
八、功能测试验证
8.1 本地服务器测试
bash # 本地连接FTP ftp 服务器IP # 输入用户名、密码,测试登录、上传、下载、删除文件 |
8.2 客户端测试
1.使用 FileZilla、Xftp 等客户端,输入服务器 IP、端口 21、账号密码登录
2.验证功能:文件夹浏览、文件上传、文件下载、新建目录、删除文件
3.验证权限:锁定根目录、匿名访问限制、端口连通性
九、日志管理
1.默认日志路径:/var/log/xferlog
2.日志功能:记录所有用户登录、上传、下载、删除操作
3.日志查看命令
bash # 实时查看日志 tail -f /var/log/xferlog |
十、常见故障排查
1.无法连接 FTP 服务
•排查方向:服务是否启动、21 端口是否放行、防火墙 / SELINUX 拦截
2.登录成功,无法上传文件
•排查方向:目录权限不足、配置文件write_enable未开启、用户目录归属错误
3.被动模式连接失败
•排查方向:被动端口段未放行、端口冲突、配置文件 pasv 参数未生效
4.用户可以跳出根目录
•排查方向:chroot_local_user参数未开启、目录权限异常
十一、运维规范
1.定期清理 FTP 日志、无用历史文件(写脚本定时清理,避免造成数据打不开无法读写以及磁盘100%)
2.禁止使用 root 账号登录 FTP 服务
3.定期修改 FTP 用户密码,提升安全性
4.变更配置后必须重启 vsftpd 服务生效
5.生产环境严格开启用户根目录锁定、关闭匿名登录
十二、部署备注
1、此文档中的版本、路径、底层系统、用户、不是一尘不变的,可针具自己生产环境动态调整
2、注意网络安全规范,注意规避高风险端口,测试环境可不做更改,生产环境需规避默认端口,否则会导致端口不通问题
夜雨聆风