网站监控
项目背景
近些年来,随着互联网技术的发展以及电子商务和电子政务的普及,各党政机关、企事业单位面临的网站被篡改的问题也随之凸显出来。 据CNCERT 发布的《2020 年中国互联网网络安全报告》显示,2020 年 CNCERT/CC 监测发现,我国境内约 1.7 万个网站被篡改,平均每天有将近 50 个网站被篡改,另外我国境内 8万余个网站被植入木马,平均每天有 200 余个网站被植入木马。 同时国家越来越重视网站安全风险、安全事故相关的问题,并不断加大网站安全的监管力度。中央网络安全和信息化领导小组成立后,发布的第一个文件就是《关于加强党政机关网站安全管理的通知》,该文就各级党政机关及企事业单位开展网站安全管理提出若干 条指导意见。此外,《网络安全法》于 2017 年 6 月 1 日正式执行,该法令中第三十九条明确指出“国家主管机构应当对关键基础设施的安全风险进行抽查检验,提出改进措施,同时需定期组织关键信息基础设施的运营者进行网络安全应急演练,提高应对网络安全事件的水平和协同配合能力”,与此同时,该法令中第三十八条也明确指出“关键基础设施的运营者应当自行或者委托网络安全服务机构对其网络安全性和可能存在的风险每年至少进行一次 检测和评估”。
为了继续发挥互联网经济产生效益和优势,支持国家数字化转型,各单位需要加强对安全事故监测,及时发现并处置篡改、挂马、黑链、敏感内容、数据泄密等多类网站安全事故,将安全事故带来的损失和影响降低到最低。 在此背景下,作者构建了一套网络资产监控系统(以下简称本系统),能够实时发现网站被篡改,通知网站运营者进行快速应急响应。
需求分析
随着web2.0技术的发展,网站已经不仅仅是一个静态页面,整体架构越来越复杂,涉及到负载均衡、数据库、CDN等组件,如下图所示:
因此目前仅基于web主机层的网站监控是无法发现所有网站被篡改事件,基于一套完整的能够解决包括负载均衡、数据库、cdn、web主机处被篡改的安全事件。
架构设计
本系统架构图如下:
主要包括配置管理模块、爬虫模块、智能决策引擎、报警管理4大模块
配置管理
主要对对管理员提供人机接口,方便管理员通过接口配置监控的网站列表、爬虫参数、智能决策引擎参数、报警接口等信息
爬虫参数
可设置对网站全站进行监控、还是指监控首页
可配置是否监控图片等静态资源是否被篡改
设置爬虫可抓取的页面深度
设置爬虫引擎
智能决策引擎参数
配置监控的间隔时间
配置监控的白名单
配置监控的黑名单关键词
报警接口
配置微信报警API
微信报警接收人
短信报警API
短信报警接收人
爬虫模块
对被监控的网站进行主动爬取,逐层提取链接,将相关信息输出给智能决策引擎。 爬虫模块使用两种模式,第一种模式使用python的requests库对网站进行访问,优点是速度比较快,缺点无法动态加载ajax等请求,第二种模式使用python的playwright库,对页面使用chromium浏览器引擎进行解析,可以支持所有web2.0技术,完全加载所有页面资源
智能决策引擎
使用hash算法对爬虫模块抓取的页面进行智能判断是否被篡改,内置多种校验方法
- 对于web1.0页面,直接对页面内容进行md5计算
- 对于web2.0页面,使用浏览器渲染加载所有资源后,计算md5
- 对于有动态展示的网站如动态加载广告,动态推荐的网站,使用智能识别算法,去掉动态内容的html标签,计算剩余页面md5 同时针对黑产重点攻击的页面title、keywords、description进行重点监控,计算md5
报警管理
当发现网页被篡改后,根据管理员配置信息,使用微信/短信发送报警给管理员,为了减少报警干扰,每个页面仅报警一次。 并且在页面上实时显示报警信息
难点分析
网站无法被爬取
由于web2.0技术,前后端分离等技术的发展,目前很多网站开发使用API动态加载页面,导致传统爬虫无法完全抓取页面信息,为了解决这个问题,本系统内置基于playwright页面渲染技术,可动态渲染页面,加载所有javascript生成的内容。
怎样判断页面是否被篡改
部分网站存在智能推荐系统,每次请求页面展示的内容都不相同,给判断页面是否被篡改带来很大难度。为了解决此问题,本系统采用多种算法,根据页面的具体情况采用具体的判断方案,经过实际测试,基本上可以覆盖所有web2.0开发的网站系统。
优点概述
实时性
本系统通过不断的循环执行,可接近实时发现网站被篡改,第一时间通知管理员。
全面性
本系统可以覆盖网站负载均衡、CDN、主机源文件、数据库等所有被篡改的场景,是最全的网站监控解决方案
智能报警
本系统采用微信进行报警,即经济又实时,同时对报警消息进行智能判断,防止产生报警风暴。
软件系统