温馨提示×

vsftp安全设置:如何保护你的Linux服务器

小樊
38
2025-12-20 02:12:06
栏目: 云计算

vsftpd 安全加固清单

一 基础与访问控制

  • 禁用匿名访问:设置anonymous_enable=NO,避免未授权上传与信息泄露。
  • 仅允许本地系统用户:启用local_enable=YES,并为 FTP 创建专用系统账号,建议使用**/usr/sbin/nologin/sbin/nologin**作为登录 shell,禁止其 SSH 登录。
  • 用户名单控制:
    • 在**/etc/vsftpd.ftpusers**列出永远禁止登录的用户(如 root 等)。
    • 通过**/etc/vsftpd.user_listuserlist_enable=YES/NO、userlist_deny=YES/NO**组合实现“黑名单/白名单”策略。
  • 目录隔离:启用chroot_local_user=YES将本地用户限制在其家目录;如必须使用可写根目录,可设置allow_writeable_chroot=YES(注意某些系统上需配合 SELinux 策略)。
  • 日志与审计:开启xferlog_enable=YESxferlog_std_format=YES,便于追踪上传下载与异常行为。

二 传输加密与证书配置

  • 启用 TLS/SSL:设置ssl_enable=YES,并强制登录与数据传输加密:
    • force_local_logins_ssl=YES、force_local_data_ssl=YES
    • 如允许匿名,可设置allow_anon_ssl=YES、force_anon_logins_ssl=YES、force_anon_data_ssl=YES
  • 证书配置(二选一):
    • 自签证书:生成**/etc/ssl/private/vsftpd.pem**,配置rsa_cert_filersa_private_key_file指向该文件。
    • 系统证书:使用发行版提供的**/etc/ssl/certs/ssl-cert-snakeoil.pem/etc/ssl/private/ssl-cert-snakeoil.key**。
  • 客户端验证:连接时选择FTPS(显式 SSL/TLS),确保用户名、口令与数据均加密。

三 网络与连接加固

  • 主动/被动端口:保持默认主动端口connect_from_port_20=YES;为被动模式固定端口段,如pasv_min_port=30000、pasv_max_port=31000,便于防火墙放行。
  • 防火墙放行示例(UFW):
    • 命令端口:sudo ufw allow 21/tcp
    • 数据端口段:sudo ufw allow 30000:31000/tcp
  • 并发与速率限制:
    • 总连接数:max_clients=100
    • 单 IP 连接数:max_per_ip=5
    • 速率限制(单位:字节/秒):local_max_rate=307200(约300 KB/s)、anon_max_rate=307200
  • 超时控制:
    • 会话空闲:idle_session_timeout=600(10 分钟)
    • 数据连接空闲:data_connection_timeout=120(2 分钟)
    • 接受/连接超时:accept_timeout=60、connect_timeout=60
  • 主机访问控制(若由 xinetd 托管):可使用only_from、no_access、per_source、instances、access_time等参数按网段、时间、连接数进行细粒度限制。

四 用户与目录权限

  • 专用 FTP 账号:创建仅用于 FTP 的系统用户,家目录指向业务目录,如:
    • 创建:useradd -d /home/www/ftproot -s /usr/sbin/nologin ftpuser
    • 授权:chown -R ftpuser:ftpuser /home/www/ftproot
  • 禁止 Shell 登录:确保**/etc/shells包含/usr/sbin/nologin/sbin/nologin**,避免该账号用于系统登录。
  • 目录可写策略:若启用chroot_local_user=YES且需可写,设置allow_writeable_chroot=YES;在 SELinux 环境下(如 Debian/Ubuntu 常见),执行setsebool -P ftp_home_dir 1以允许家目录写入。
  • 精细权限:仅赋予业务所需的最小权限,避免对上层目录的组/其他写权限,减少被横向移动的风险。

五 监控维护与快速检查

  • 服务与自启:
    • 启动/开机自启:sudo systemctl start vsftpd、sudo systemctl enable vsftpd
  • 日志核查:
    • 传输日志:由xferlog_enable=YESxferlog_std_format=YES写入,关注异常 IP、频繁失败登录、异常大文件传输。
    • 连接日志:检查**/var/log/vsftpd.log**或系统日志,配合 fail2ban 对多次失败登录进行封禁。
  • 例行维护:
    • 及时更新系统与 vsftpd 版本,修补已知漏洞;变更配置后使用sudo systemctl restart vsftpd生效并回归测试。
  • 快速核查清单:
    • anonymous_enable=NO
    • local_enable=YES、write_enable=YES
    • chroot_local_user=YES(或白名单方式)
    • ssl_enable=YES 且证书路径正确
    • 防火墙已放行21/tcp30000:31000/tcp
    • 日志与监控告警已就位

0