温馨提示×

vsftp在centos上的定制化配置

小樊
32
2025-12-27 04:18:29
栏目: 智能运维

VSFTP在CentOS上的定制化配置

一 基础安装与启动

  • 安装与开机自启
    • 执行:sudo yum install -y vsftpd
    • 启动并设置开机自启:sudo systemctl start vsftpd && sudo systemctl enable vsftpd
  • 备份主配置
    • 执行:sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
  • 说明
    • 主配置文件路径为:/etc/vsftpd/vsftpd.conf
    • 服务管理命令使用 systemctl 完成启动、停止、重启与开机自启

二 核心配置模板与说明

  • 安全基线(禁用匿名、允许本地用户、开启写操作)
    • 建议值:
      • anonymous_enable=NO
      • local_enable=YES
      • write_enable=YES
      • local_umask=022
  • 用户隔离与可写
    • 全局隔离:chroot_local_user=YES
    • 例外名单:chroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list
    • 若需在被 chroot 的目录内写入:allow_writeable_chroot=YES
  • 被动模式(NAT/云环境必配)
    • 建议值:
      • pasv_enable=YES
      • pasv_min_port=10000
      • pasv_max_port=20000
      • 公网出口IP:pasv_address=YOUR_PUBLIC_IP
  • 传输与体验
    • 速率限制(示例为1MB/s):local_max_rate=1048576
    • 欢迎信息:ftpd_banner=/etc/vsftpd/welcome.txt
  • 日志与审计
    • 传输日志:xferlog_file=/var/log/vsftpd/xferlog
    • 标准格式:xferlog_std_format=YES
    • 协议交互日志:log_ftp_protocol=YES
  • 最小可用示例(可按需增删)
    • anonymous_enable=NO
    • local_enable=YES
    • write_enable=YES
    • local_umask=022
    • chroot_local_user=YES
    • allow_writeable_chroot=YES
    • pasv_enable=YES
    • pasv_min_port=10000
    • pasv_max_port=20000
    • pasv_address=YOUR_PUBLIC_IP
    • xferlog_file=/var/log/vsftpd/xferlog
    • xferlog_std_format=YES
    • log_ftp_protocol=YES
    • ftpd_banner=/etc/vsftpd/welcome.txt
  • 提示
    • 修改后执行:sudo systemctl restart vsftpd 使配置生效

三 防火墙与SELinux适配

  • firewalld
    • 开放控制端口与被动端口范围:
      • sudo firewall-cmd --permanent --add-service=ftp
      • sudo firewall-cmd --permanent --add-port=10000-20000/tcp
      • sudo firewall-cmd --reload
  • SELinux
    • 允许访问用户主目录:sudo setsebool -P ftp_home_dir on
    • 允许FTP对文件进行必要操作:sudo setsebool -P allow_ftpd_full_access on
  • 说明
    • 若未启用 SELinux,可跳过相关步骤;若遇到“目录不可写/无法列目录”等问题,优先检查 SELinux 布尔值与目录权限

四 虚拟用户与细粒度权限

  • 适用场景
    • 需要为不同用户分配不同根目录、速率、并发与权限,且不使用系统账号的场景
  • 步骤
    • 创建虚拟用户口令文件(奇行用户、偶行密码):
      • echo -e "ftpuser1\nftppass1" > /etc/vsftpd/vuser_passwd.txt
    • 生成 Berkeley DB 数据库:
      • sudo db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
    • 配置 PAM 认证(/etc/pam.d/vsftpd):
      • 建议保留系统默认行,并在其后追加:
        • auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
        • account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
    • 启用虚拟用户与宿主用户:
      • guest_enable=YES
      • guest_username=ftp(确保系统存在该用户且权限受控)
      • user_config_dir=/etc/vsftpd/vuser_conf
    • 为用户创建个性化配置(示例:/etc/vsftpd/vuser_conf/ftpuser1)
      • local_root=/var/ftp/ftpuser1
      • write_enable=YES
      • anon_upload_enable=NO
      • anon_mkdir_write_enable=NO
      • idle_session_timeout=300
      • max_clients=5
      • local_max_rate=1048576
    • 目录与权限
      • 创建目录并设定属主:sudo mkdir -p /var/ftp/ftpuser1 && sudo chown ftp:ftp /var/ftp/ftpuser1
  • 说明
    • 虚拟用户以宿主系统用户(如 ftp)身份访问文件系统,务必严格控制宿主用户的权限与可写范围

五 日志轮转与验证

  • 日志轮转(/etc/logrotate.d/vsftpd)
    • 内容示例:
      • /var/log/vsftpd/*.log {
      • daily
      • rotate 7
      • compress
      • missingok
      • notifempty
      • }
  • 验证与排错
    • 实时查看日志:
      • tail -f /var/log/vsftpd/xferlog
      • tail -f /var/log/vsftpd.log
    • 客户端连接测试:
      • 命令行:ftp localhost
      • 图形化:使用 FileZilla 连接,选择 FTP over TLS(若已启用 SSL/TLS)
    • 常见问题
      • 被动模式连接失败:核对 pasv_min_port/pasv_max_port 与防火墙开放范围是否一致,公网环境设置 pasv_address
      • 登录被拒绝:检查 anonymous_enablelocal_enablePAM 配置与虚拟用户数据库路径
      • 上传失败:确认目录属主/权限、write_enableallow_writeable_chroot 设置

0