温馨提示×

Ubuntu FTP Server如何安全设置

小樊
50
2025-12-30 22:49:16
栏目: 智能运维

Ubuntu FTP Server 安全设置指南

一 基础加固

  • 安装与启动:使用 vsftpd 作为服务器,安装后启用开机自启并立即启动服务。
    • 命令:sudo apt update && sudo apt install vsftpd;sudo systemctl start vsftpd;sudo systemctl enable vsftpd
  • 最小权限原则:禁用匿名登录,仅允许本地系统用户;按需开启写入;将本地用户 chroot 到其家目录;设置合理的 umask
    • 建议配置:anonymous_enable=NO;local_enable=YES;write_enable=NO(按需开启);chroot_local_user=YES;local_umask=022
  • 访问控制:启用用户白名单(/etc/vsftpd.userlist),仅允许明确列出的用户登录;必要时结合 PAM、tcp_wrappers 做进一步限制。
    • 建议配置:userlist_enable=YES;userlist_file=/etc/vsftpd.userlist;userlist_deny=NO

二 加密传输与证书

  • 启用 FTPS(FTP over SSL/TLS):强制登录与数据传输使用 TLS,禁用不安全协议,指定证书与私钥路径。
    • 建议配置:ssl_enable=YES;force_local_logins_ssl=YES;force_local_data_ssl=YES;allow_anon_ssl=NO;rsa_cert_file=/etc/ssl/private/vsftpd.pem;rsa_private_key_file=/etc/ssl/private/vsftpd.pem;ssl_sslv2=NO;ssl_sslv3=NO
  • 证书获取与放置:
    • 自签名(测试/内网):sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
    • 生产环境:使用 Let’s Encrypt 或企业 CA 签发证书,证书与私钥权限设为仅 root 可读(如 600)。
  • 连接验证:
    • 客户端(FileZilla):协议选择 FTP - 显式 TLS/SSL,端口 21
    • 命令行:openssl s_client -connect 服务器IP:21 -starttls ftp。

三 防火墙与被动模式端口

  • UFW 放通规则:控制通道 21/TCP;主动模式数据通道 20/TCP;被动模式需固定端口范围(示例:40000:50000/TCP)。
    • 命令:sudo ufw allow 21/tcp;sudo ufw allow 20/tcp;sudo ufw allow 40000:50000/tcp;sudo ufw enable。
  • vsftpd 被动模式:启用被动模式并指定端口范围,便于防火墙放行与 NAT 场景。
    • 建议配置:pasv_enable=YES;pasv_min_port=40000;pasv_max_port=50000

四 用户与权限管理

  • 专用 FTP 用户:创建仅用于 FTP 的系统用户,禁止 SSH 登录,限定家目录与权限。
    • 命令:sudo useradd -m -d /home/ftpuser -s /usr/sbin/nologin ftpuser;sudo passwd ftpuser;sudo chown ftpuser:ftpuser /home/ftpuser;sudo chmod 755 /home/ftpuser。
  • 目录可写策略:出于安全考虑,尽量避免对 chroot 目录直接可写;如业务必须可写,可设置 allow_writeable_chroot=YES 并严格审计。
  • 精细授权:按目录设置 ACL 或组权限,分离上传与下载目录,限制覆盖与执行权限。

五 日志监控与维护

  • 启用日志:记录传输与会话日志,便于审计与入侵排查。
    • 建议配置:xferlog_enable=YES;xferlog_std_format=YES;同时使用系统日志(如 journalctl -u vsftpd)观察运行与告警。
  • 运行维护:保持系统与 vsftpd 的及时更新;定期备份用户数据与配置;结合 fail2ban 对多次失败登录进行封禁;必要时启用 AppArmor/SELinux 做进程强制访问控制。

0