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/脚本采集上述指标并设置触发器。