CentOS 7中搭建FTP服务器

一、VSFTP简介

  • VSFTP(Very Secure FTP)的定义与特点
  • 适用场景与优势(安全性、轻量级、高性能)
  • 常见FTP协议对比(主动模式 vs 被动模式)
二、环境准备
  • CentOS 7系统基础要求(最小化安装建议)
  • 网络配置检查(防火墙、SELinux状态)
  • 必要的软件包更新(yum update
三、安装VSFTP服务
  • 基于yum源已配置完成的情况下。

  • 通过YUM安装VSFTP:yum install vsftpd -y
  • 启动服务并设置开机自启:systemctl enable vsftpd --now
  • 验证服务状态:systemctl status vsftpd
四、基础配置详解
  • 主配置文件路径:/etc/vsftpd/vsftpd.conf
  • 关键参数说明(匿名访问、本地用户登录、端口设置)
  • 示例配置片段:
    anonymous_enable=NO  
    local_enable=YES  
    write_enable=YES  
    chroot_local_user=YES  
    

五、用户与权限管理
  • 创建FTP专用用户:useradd -d /var/ftp/user1 -s /sbin/nologin user1
  • 设置用户密码:passwd user1
  • 目录权限控制(chmodchown
六、防火墙与SELinux配置
  • 开放FTP端口(21/TCP):firewall-cmd --add-service=ftp --permanent
  • SELinux策略调整:setsebool -P ftp_home_dir on
  • 被动模式端口范围配置(如适用)
七、客户端连接测试
  • 命令行工具测试:ftp [服务器IP]
  • FileZilla等图形化工具配置
  • 常见连接错误排查(超时、认证失败)
八、高级功能扩展
  • SSL/TLS加密传输配置
  • 限制用户IP访问(hosts.allow/deny
  • 日志分析与监控(/var/log/xferlog
九、安全加固建议
  • 禁用匿名登录
  • 定期备份配置文件
  • 更新策略与漏洞防护
十、总结与参考资料
  • 核心步骤回顾
  • 官方文档与社区资源推荐

步骤一:安装vsftpd

基于yum源已配置完成的情况下。

1.执行以下命令,安装 vsftpd

sudo yum install -y vsftpd

2.执行以下命令,设置 vsftpd 开机自启动。

systemctl enable vsftpd

3.执行以下命令,启动 FTP 服务。

systemctl start vsftpd

4.执行以下命令,确认服务是否启动。

netstat -antup | grep ftp

如果显示以下图片则无net软件包

通过这个命令进行下载

sudo yum install -y net-tools

或使用ss命令去验证

使用 ss 命令(推荐,更现代)

ss -tlnp | grep vsftpd
# 或者更广泛地搜索 21 端口(FTP默认端口)
ss -tlnp | grep ':21'

显示结果如下,则说明 FTP 服务已成功启动。

步骤二:配置 vsftpd

1.执行以下命令,为 FTP 服务创建一个 Linux 用户,本文以 ftpuser 为例

useradd ftpuser

2.执行以下命令,设置 ftpuser 用户的密码。

passwd ftpuser

输入密码后请按 Enter 确认设置,密码默认不显示。

遇到下图无需理会,注意密码要输两遍

3.执行以下命令,创建 FTP 服务使用的文件目录,本文以 /var/ftp/test 为例。

mkdir /var/ftp/test

4.执行以下命令,修改目录权限。

chown -R ftpuser:ftpuser /var/ftp/test

运行以下命令,备份vsftp配置文件。

sudo cp /etc/vsftpd/vsftpd.conf  /etc/vsftpd/vsftpd.conf.bak

5.执行以下命令,打开 vsftpd.conf 文件。

vim /etc/vsftpd/vsftpd.conf

按 i 切换至编辑模式,根据实际需求选择 FTP 模式,修改配置文件 vsftpd.conf。

1.修改以下配置参数,设置匿名用户和本地用户的登录权限,设置指定例外用户列表文件的路径,并开启监听 IPv4 sockets。

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES

2.在行首添加 #,注释 listen_ipv6=YES 配置参数,关闭监听 IPv6 sockets。

#listen_ipv6=YES

添加以下配置参数,开启被动模式,设置本地用户登录后所在目录,以及云服务器建立数据传输可使用的端口范围值。

local_root=/var/ftp/test
allow_writeable_chroot=YES
#pasv_enable=YES 被动模式,pasv_enable=NO 主动模式
pasv_enable=YES
#请修改为您的 Linux 云服务器公网 IP
pasv_address=xxx.xx.xxx.xx
pasv_min_port=40000
pasv_max_port=40100

公网IP查询可以在百度里搜索IP

或者使用 curl cip.cc 命令直接查询

3.按 Esc 后输入 :wq 保存后退出。

4.执行以下命令,创建并编辑 chroot_list 文件。

vim /etc/vsftpd/chroot_list

5.按 i 进入编辑模式,输入用户名,一个用户名占据一行,设置完成后按 Esc 并输入 :wq 保存后退出。设置的用户将会被锁定在主目录,您若没有设置例外用户的需求,可跳过此步骤,输入 :q 退出文件。插入ftpuser的单个用户

6.执行以下命令,重启 FTP 服务。

systemctl restart vsftpd

步骤三:设置安全组/防火墙

根据您的 FTP 模式选择,需要开放相应的端口:

如果您使用的是主动模式:

bash

# 开放端口21
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --reload
如果您使用的是被动模式(假设使用40000-40100端口范围):

bash

# 开放端口21和被动端口范围40000-40100
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=40000-40100/tcp
sudo firewall-cmd --reload
检查当前防火墙规则:

bash

sudo firewall-cmd --list-all
如果您想暂时关闭防火墙(不推荐生产环境):

bash

# 停止防火墙
sudo systemctl stop firewalld

# 禁用防火墙开机启动
sudo systemctl disable firewalld

步骤四:验证FTP服务

1. 创建测试用户(如果尚未创建)

bash

# 创建系统用户(设置密码后会提示输入密码)
sudo useradd -m ftpuser
sudo passwd ftpuser

# 或者如果您想使用现有用户,确保其在vsftpd的用户列表中
2. 测试本地连接

bash

# 安装FTP客户端(如果尚未安装)
sudo yum install -y ftp

# 测试连接到本地FTP服务器
ftp localhost
3. 从远程客户端连接

在另一台计算机上(Windows/Linux/Mac):

  • 打开文件资源管理器(Windows)或浏览器

  • 在地址栏输入:ftp://您的服务器IP地址

  • 输入用户名和密码

  • 如果连接成功,您应该能看到用户的Home目录内容

4. 使用命令行测试(在客户端机器上)

bash

# 安装ftp客户端(如果需要)
# 对于Ubuntu/Debian: sudo apt install ftp
# 对于CentOS/RHEL: sudo yum install ftp

# 连接测试
ftp 您的服务器IP地址

额外提示:配置被动模式

如果您打算使用被动模式,请确保在 /etc/vsftpd/vsftpd.conf 中设置了以下参数:

bash

# 启用被动模式
pasv_enable=YES

# 设置被动模式端口范围
pasv_min_port=40000
pasv_max_port=40100

# 如果您在NAT后面,可能需要设置外部IP
# pasv_address=您的公网IP地址

修改配置后不要忘记重启服务:

bash

sudo systemctl restart vsftpd

检查服务状态

最后,确认服务仍在正常运行:

bash

systemctl status vsftpd
ss -tlnp | grep vsftpd

现在您的 FTP 服务器应该已经配置完成并可以接受连接了。如果遇到任何连接问题,请检查防火墙设置和 VSBTPD 配置文件的权限相关设置。

注:实际撰写时可根据需求调整章节顺序或增删内容,例如增加性能优化或故障排查案例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值