温馨提示×

centos lampFTP服务器设置

小樊
33
2025-12-17 17:28:05
栏目: 云计算

CentOS LAMP 环境搭建 FTP 服务器简明指南

一 环境准备与安装

  • 更新系统并安装 vsftpd(Very Secure FTP Daemon):
    • 命令:sudo yum update -y && sudo yum install -y vsftpd
  • 启动并设置开机自启:
    • 命令:sudo systemctl start vsftpd && sudo systemctl enable vsftpd
  • 说明:LAMP 中的 Apache 提供 HTTP/HTTPS 服务,FTP 仅用于文件传输,两者职责不同、可并行运行。

二 基础安全配置 vsftpd.conf

  • 建议的基础配置(/etc/vsftpd/vsftpd.conf):
    • 禁用匿名:anonymous_enable=NO
    • 允许本地用户:local_enable=YES
    • 允许写操作:write_enable=YES
    • 将本地用户限制在其家目录:chroot_local_user=YES
    • 允许 chroot 目录可写(避免登录报错):allow_writeable_chroot=YES
    • 监听 IPv4:listen=YES;如不需 IPv6 则 listen_ipv6=NO
    • PAM 认证与访问控制:pam_service_name=vsftpd;userlist_enable=YES;userlist_deny=NO(仅 user_list 中用户可登录)
    • 可选:use_localtime=YES;ftpd_banner=Welcome to FTP service
  • 说明:
    • 使用 chroot 可提升安全;若启用 chroot 且目录可写,需设置 allow_writeable_chroot=YES,否则可能登录失败。
    • user_list 与 ftpusers 的配合使用可实现黑白名单控制,生产环境建议仅放行必要账号。

三 创建网站目录与 FTP 账号

  • 创建网站根目录并授权给 FTP 用户(示例将目录指向 Apache 的默认网页目录):
    • 命令:
      • sudo mkdir -p /var/www/html
      • sudo useradd -d /var/www/html -s /sbin/nologin webftp
      • sudo passwd webftp
      • sudo chown -R webftp:webftp /var/www/html
      • sudo chmod -R 755 /var/www/html
  • 说明:
    • 使用 -s /sbin/nologin 禁止该账号登录系统终端,仅用于 FTP。
    • 目录属主设为 FTP 用户,权限 755 可满足 Apache 读取与 FTP 写入的常见需求(上传时可能需要 775 并配合所属组)。

四 防火墙与 SELinux 放行

  • firewalld(推荐):
    • 放行 FTP 服务与被动模式端口段(示例为 40000–40010):
      • 命令:
        • sudo firewall-cmd --permanent --add-service=ftp
        • sudo firewall-cmd --permanent --add-port=40000-40010/tcp
        • sudo firewall-cmd --reload
  • 被动模式建议:在 vsftpd.conf 中设置 pasv_enable=YES,并指定端口段(如 pasv_min_port=40000、pasv_max_port=40010),同时在防火墙放行相同端口段。
  • SELinux:
    • 如遇到上传/目录访问受限,可临时测试:sudo setenforce 0
    • 生产环境建议按需设置布尔值或上下文,例如:sudo setsebool -P ftpd_connect_all_unreserved 1
  • 说明:
    • 仅开放 21 控制端口不足以完成数据传输,被动模式需放行一段高位端口供数据通道使用。

五 连接测试与常见问题

  • 客户端连接测试:
    • 使用 FileZilla 或命令行 ftp/ lftp,主机填服务器 IP,端口 21,协议选 FTP,登录为创建的 webftp 账号。
  • 常见问题速查:
    • 登录被拒绝或 530:检查 /etc/vsftpd/ftpusers 是否包含该用户;核对 user_list 与 userlist_deny 的组合逻辑;确认 PAM 配置无误。
    • 能登录但无法列出/上传:检查目录属主与权限(如 755/775)、SELinux 布尔值(如 ftpd_connect_all_unreserved)、以及被动端口是否放行。
    • 目录切换受限:确认 chroot_local_user 与 chroot_list_enable 的组合是否符合预期;若启用 chroot 且需写入,确保 allow_writeable_chroot=YES。
    • 传输中断或慢:检查被动端口段与防火墙一致性、网络质量;必要时调整超时参数(如 idle_session_timeout、data_connection_timeout)。

0