温馨提示×

CentOS系统中VSFTP的监控与报警

小樊
44
2026-01-07 20:49:42
栏目: 智能运维

监控目标与总体架构

  • 面向生产环境的 VSFTP 监控应覆盖:服务存活与端口监听、当前连接与会话、系统资源瓶颈、传输行为与异常登录、以及可视化与阈值告警。
  • 建议分层建设:
    • 主机层:用 systemd、ss、日志、系统资源工具做“分钟级”巡检与阈值告警。
    • 安全层:用 fail2ban 对暴力登录自动封禁并邮件提醒。
    • 可视化层:用 Monitorix、NetData 做实时看板;用 Prometheus + Grafana 做长期趋势与多维告警。

关键监控指标与采集方法

  • 服务与端口
    • 服务状态:systemctl is-active vsftpd;失败即告警。
    • 监听与连接:ss -tulnp | grep ‘:21’;统计 ESTABLISHED 会话数,超过业务阈值告警。
  • 进程与系统资源
    • 进程资源:top/htop 观察 vsftpd 的 CPU%、MEM%;异常飙升告警。
    • 系统资源:vmstat 1(r/b、si/so、wa)、mpstat -P ALL 1、free -m、iostat -x 1(%util、await)、dstat -d、iotop(需安装)。
  • 日志与传输行为
    • 系统日志:journalctl -u vsftpd -f;关注启动失败、异常退出。
    • 认证日志:tail -f /var/log/secure(CentOS 常见);筛选“invalid user”“authentication failure”等关键字。
    • 传输日志:tail -f /var/log/xferlog;统计单位时间记录数、总字节数,识别“有连接无传输”的异常。
  • 网络与抓包
    • 带宽与连接:iftop -i any ‘port 21’、nload、vnstat -i eth0、nethogs(按进程)。
    • 深度排查:tcpdump -i any port 21 -w vsftpd_traffic.pcap。

日志与被动模式配置要点

  • 启用与查看传输日志(用于审计与吞吐分析)
    • vsftpd.conf:
      • xferlog_enable=YES
      • xferlog_file=/var/log/xferlog
      • xferlog_std_format=YES
    • 生效:systemctl restart vsftpd;观察:tail -f /var/log/xferlog。
  • 被动模式端口范围(便于防火墙放行与连接追踪)
    • vsftpd.conf:
      • pasv_enable=YES
      • pasv_min_port=10000
      • pasv_max_port=15000
    • 防火墙放行示例:firewall-cmd --permanent --add-port=21/tcp;firewall-cmd --permanent --add-port=10000-15000/tcp;firewall-cmd --reload。
  • 认证日志位置
    • CentOS 常见为:/var/log/secure;可用 tail -f /var/log/secure | grep vsftpd 实时查看。

自动化告警与封禁

  • fail2ban 防暴力破解与邮件通知
    • 安装:yum install -y fail2ban(或系统仓库版本)。
    • 配置(/etc/fail2ban/jail.d/vsftpd.local):
      • [vsftpd]
      • enabled = true
      • port = ftp,ftp-data,ftps,ftps-data
      • logpath = %(vsftpd_log)s
      • bantime = 6h
      • findtime = 10m
      • maxretry = 1
      • action = iptables[name=VSFTPD, port=ftp, protocol=tcp]
      • sendmail-whois[name=VSFTPD, dest=your@email.com]
    • 邮件发送准备:编辑 /etc/fail2ban/jail.conf,设置 mta = mail;确保本机 MTA(如 sendmail/postfix)可用。
    • 可选更严格封禁策略:在 /etc/fail2ban/action.d/iptables-blocktype.local 中设置 blocktype = DROP。
    • 启动:systemctl enable --now fail2ban;查看:fail2ban-client status vsftpd;日志:/var/log/fail2ban.log。

可视化与阈值告警落地

  • 轻量可视化
    • Monitorix:内置 vsftpd 模块,访问 http://服务器IP:8080/monitorix/ 查看连接数、传输速率与系统资源。
    • NetData:开箱即用,访问 http://服务器IP:19999,可自定义告警规则(邮件/钉钉/Webhook)。
  • 企业级监控
    • Prometheus + Grafana:通过 vsftpd_exporter 或系统/日志采集器暴露指标,Grafana 做连接数趋势、吞吐热力图与阈值告警(邮件/钉钉/短信)。
  • 自定义脚本与阈值示例
    • 巡检脚本(/usr/local/bin/vsftpd_monitor.sh):检查 vsftpd 状态、21 端口监听、ESTABLISHED 会话、vsftpd CPU%、1 分钟负载、可用内存、磁盘 %util、近 60 秒 xferlog 记录数;配合 crontab 每分钟执行并写入 /var/log/vsftpd_monitor.log。
    • 阈值建议(示例):
      • 服务:vsftpd 非 active(立即告警)
      • 连接:ESTABLISHED 超过业务上限(如 1000
      • 负载:1 分钟平均负载 > CPU 核数
      • 磁盘:%util 持续 > 80%
      • 内存:可用 < 500MB 或 < 10%
      • 传输:业务应有流量时,xferlog 在 60 秒内无新记录
    • 平台接入:Zabbix/Nagios 可通过 UserParameter/脚本采集上述指标并设置触发器。

0