有个做电商的朋友跟我吐槽:网站被挂马整整两天才发现,还是客户打电话来问的。问题不在技术不行,而在于根本没有监控——出了事全靠用户反馈,这跟蒙眼开车有什么区别?
监控什么:三个层次缺一不可
网站安全监控不是装个宝塔面板就完事了,真正管用的监控分三层。
基础层监控可用性。服务器CPU、内存、磁盘、网络带宽,网站HTTP状态码、响应时间。这些指标异常不一定代表被攻击,但被攻击一定会导致异常。用Prometheus + Grafana搭一套,十分钟就能跑起来,配置告警规则后CPU超过80%或网站返回502就自动推送通知。
中间层监控入侵行为。Web日志里的异常请求模式、SQL注入特征、XSS攻击payload、频繁试探后台路径的行为。这部分用开源的WAF(如ModSecurity)配合日志分析工具(如ELK)可以实现。关键告警规则包括:同一IP在1分钟内触发3次以上WAF拦截、后台登录页连续失败5次以上、上传接口出现非白名单后缀文件。
顶层监控业务异常。首页内容被篡改、核心页面大面积404、数据库写入量突然飙升、凌晨出现大量订单或注册。这些靠纯技术手段不好覆盖,可以用页面完整性校验工具定期抓取首页HTML做hash比对,内容变了立刻告警。
告警怎么发:别让通知变成噪音
监控搭好了,告警配置是最容易踩坑的环节。告警太少会漏报,告警太多会导致“狼来了”效应——运维人员看到告警就麻木,真出事反而没人处理。
三个实操建议:
分级告警。把告警分成P0到P3四个等级,P0(网站完全不可用、首页被篡改)打电话同时发企业微信;P1(核心接口异常、疑似入侵)发企业微信;P2(非核心功能异常)发邮件;P3(资源使用率偏高)只记录不通知。这样运维人员每天收到的告警控制在个位数,每条都值得看。
告警聚合。同一个问题在短时间内触发多次告警,合并成一条。比如某个IP连续触发了10次WAF拦截,不要发10条告警,而是聚合为“IP x.x.x.x 在5分钟内触发10次拦截”。
值班排班。7x24监控不是让一个人7x24盯着看,而是建立值班机制。用飞书或钉钉的值班表功能,每周轮换,告警推送到当班人。当班人必须在5分钟内响应,超过5分钟未响应自动升级给backup。
监控系统的价值不在搭建,在于持续维护。每周review一次告警规则,把误报的规则调掉,把新出现的风险点加上。三个月下来,你会拥有一套真正好用的安全监控体系。