温馨提示×

FTP Server在Linux上如何安全设置

小樊
46
2025-11-19 11:13:36
栏目: 智能运维

Linux 上 FTP Server 的安全设置

一 基础加固与访问控制

  • 选择安全的 FTP 守护进程:优先使用 vsftpd,这是 RHEL 官方提供并面向安全的实现。
  • 禁用匿名访问:设置 anonymous_enable=NO,避免未授权上传与信息泄露。
  • 限制本地用户:启用 local_enable=YES,并通过 chroot_local_user=YES 将用户限制在其主目录;如确需写入,使用 allow_writeable_chroot=YES(注意版本差异与风险)。
  • 精细化登录控制:启用 userlist_enable=YESuserlist_deny=NO,仅允许 /etc/vsftpd/user_list 中的用户登录。
  • 降低信息暴露:自定义登录横幅,设置 ftpd_bannerbanner_file,避免显示版本信息。
  • 可选的最小写入:默认 write_enable=NO,仅在确有上传需求时再开启。

二 加密传输与证书配置

  • 启用 SSL/TLS 加密:设置 ssl_enable=YES,并强制本地登录与数据传输加密(force_local_logins_ssl=YES、force_local_data_ssl=YES)。
  • 禁用不安全协议:关闭 ssl_sslv2、ssl_sslv3,仅启用 TLSv1.x
  • 证书与密钥:准备 RSA 证书/私钥(可合并为同一 PEM 文件),配置 rsa_cert_filersa_private_key_file 路径。
  • 客户端验证:要求客户端使用 FTPS(显式) 并校验证书,避免明文凭据与数据泄露。

三 防火墙与被动模式端口

  • 控制连接:放行 TCP 21 端口(FTP 控制通道)。
  • 主动模式数据端口:放行 TCP 20 端口(由服务器主动发起数据连接)。
  • 被动模式端口范围:在 vsftpd 中配置 pasv_enable=YES、pasv_min_port=1024、pasv_max_port=1048(示例为 1024–1048,可按需扩大),并在防火墙放行相同端口范围。
  • firewalld 示例:
    • 放行服务与端口:firewall-cmd --permanent --add-service=ftp
    • 放行被动端口范围:firewall-cmd --permanent --add-port=1024-1048/tcp
    • 重载规则:firewall-cmd --reload
  • 注意:若未正确配置被动端口范围,客户端在 NAT/云环境中常出现数据连接失败。

四 用户与目录权限及 SELinux

  • 专用 FTP 用户:创建仅用于 FTP 的系统账号,禁止 SSH 登录(如 useradd -m ftpuser -s /sbin/nologin),并设置强密码。
  • 目录归属与权限:确保用户主目录归属正确(如 chown ftpuser:ftpuser /home/ftpuser),常用权限为 755(按需调整为可写)。
  • 白名单登录:将允许登录的用户写入 /etc/vsftpd/user_list,并配置 userlist_deny=NO
  • SELinux 场景:如启用 SELinux,按需开启布尔值(如 setsebool -P ftp_home_dir on)以允许 FTP 访问用户家目录;必要时调整文件上下文。
  • 最小权限原则:仅授予上传/下载所需权限,避免赋予不必要的系统级权限。

五 日志审计与持续运维

  • 启用日志:开启 xferlog_enable=YES 记录传输日志,便于审计与异常追踪;必要时结合系统日志分析工具。
  • 横幅与合规:通过自定义 ftpd_banner/banner_file 明确告知“所有活动均被记录”,提升威慑与合规效果。
  • 运行监控:使用 systemctl status vsftpd 检查服务状态,变更配置后 systemctl restart vsftpd 使生效。
  • 补丁与策略:保持 操作系统与 vsftpd 及时更新,定期审查用户列表、目录权限与防火墙规则,开展例行安全审计。

0