前段时间,我的网站疑似被攻打了,明天带大家一起来事故现场看看,并且分享事变剖析思路和预先防控伎俩。
孽起
先看看我是怎么发现网站被攻打的吧。
通常,为了保障线上网站和后盾服务的稳固运行,咱们须要给我的项目增加监控告警性能,出现意外状况时,零碎会第一工夫向管理员发送告诉。
因为我的我的项目应用 腾讯云云开发
来部署,默认提供了额度监控和告警,能够避免资源耗费过多,十分不便。
但光有告警还不够,真出了问题,靠什么去剖析呢?必须给故障排查提供一些线索。
腾讯云云开发 默认为云函数、云托管 等提供了监控和日志记录,一行代码都不必写,就可能看到资源的运行信息和具体日志,比方申请工夫、IP 地址、申请头信息等,十分不便。
此外,我还在开发时,给服务增加了一些日志和数据上报,比方哪位用户在哪个工夫执行了什么操作。记录的越具体,排查问题就越不便。当然,无意义的内容就不必记录了,否则看日志的时候稀稀拉拉的,伤眼又低效!
我始终把我的项目当成本人的孩子(尽管我还没有孩子),因而,我每天都会看一下监控和日志,来理解下“孩子”的身体状况。
我最常看的监控指标是服务的 调用次数
,它很大水平上反映了用户流量的拜访状况。
失常状况下,调用次数随工夫的曲线图应该是上面这样的,夜里没人看,白天流量还算安稳,偶然会有一些小顶峰:
但有一天,我忽然看到了上面这个曲线图,大家看看这个曲线有什么特点?
没错,地中海上偏偏长了一根长毛!在 25 分左近,调用次数忽然飙升,咱们个别把这种景象称为“流量突刺”,把监控图上这一枝独秀称为“毛刺”。
大多数状况下,有毛刺可不是什么坏事。看到这个曲线,我的第一反馈不是“卧槽,我的项目火了?”,而是“卧槽,被攻打了!”
到底是不是被攻打了?是谁攻打我了呢?不会我真的火了吧(还带有一丝空想)?
带着这些疑难,连忙来剖析一下。
剖析
光看下面的曲线图,是剖析不进去的,必须要从事故现场找找线索。
还好云开发帮咱们记录了拜访日志,抉择事变产生的时间段(以 25 分钟为基准,前后各空 5 分钟),而后就筛选出了对应日志。
为了更灵便地剖析,咱们将日志导出到本地,应用 Excel 等表格软件关上它。
而后,咱们来剖析下日志,先看 日志生产工夫
这列,即案发工夫:
大家发现了么?日志生产工夫十分平均!每秒大略 3 – 4 条。
从这点就阐明了,大概率不是人工拜访服务,而是机器主动依照某个频率发送申请。
再看下日志的内容,每条日志的构造如下:
// 申请工夫
2021-04-29T04:22:05.937752445Z
// 发动申请的 IP
stdout F 169.254.128.20
// 申请头
HEAD /webroot.bak HTTP/1.1\
// 响应状态码
200 0
// 申请地址
http://www.code-nav.cn/webroot.bak
// 申请浏览器身份
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
其中,申请工夫、申请 IP、申请地址是要害信息。工夫刚刚曾经剖析过了,再看看申请 IP 和地址。
我间接在表格中全局搜寻上述 IP,发现所有的 IP 地址都是雷同的!
这下我松了口气,应该只是一个人在小打小闹吧。
而后我看了几条间断日志的申请地址,大略是这样:
http://www.code-nav.cn/111.gz
http://www.code-nav.cn/111.tar.bz2
http://www.code-nav.cn/111.dat
http://www.code-nav.cn/111.bz2
http://www.code-nav.cn/222.tgz
http://www.code-nav.cn/222.gz
http://www.code-nav.cn/333.zip
...
看到 “111”、”222″、”333″ 我大抵明确了,这位攻击者应该是在用字典枚举的形式扫描我的网站,希图找出网站的后盾地址。
攻打的原理很简略,就根小时候咱们尝试破解他人明码一样,一个一个疯狂乱试。只不过攻击者通常会应用一些网站扫描工具,将可能的明码作为一本字典,交给机器,代替人工来试而已。试的次数和频率高了,就被称为“爆破”。
又回想起了大学时被网络安全课摆布的恐怖。。。
基于以上的剖析,这位“攻击者”应该只是拿我的网站来练练手,毕竟扫描频率不高、持续时间不长,当然,我心愿如此。
防控
这件事尽管挫伤不大,侮辱性极强!让我充沛意识到本人的网站在安全性上是缺斤少两的。最起码应该在异样流量呈现的是否给我告警,发个短信啥的吧!
如果是本人搭建服务器来部署网站我的项目,须要自行接入或开发一个业务监控告警零碎,尽管网上的这类第三方零碎很多,比方 Zabbix、Prometheus(AlertManager)、Grafana 等,但都须要本人来部署和保护,须要肯定的人力物力老本。
但应用 腾讯云云开发,除了下面提到的根底资源额度告警外,还能够灵便自定义各种高级的告警策略。
比方给点赞性能增加调用次数限度告警,先抉择告警对象为“云函数”:
再配置触发条件,比方 5 分钟内调用次数超过 100 次则告警:
再配置下告警接管人、告警形式、时间段等,反对邮件、短信、微信等,抉择很多样:
这样就功败垂成了,如法炮制,能够给每个最小粒度的函数都增加上告警,出了事儿在第一工夫就能感知到了。
产品介绍
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为开发者提供高可用、主动弹性扩缩的后端云服务,蕴含计算、存储、托管等 serverless 化能力,可用于云端一体化开发多种端利用(小程序,公众号,Web 利用,Flutter 客户端等),帮忙开发者对立构建和治理后端服务和云资源,防止了利用开发过程中繁琐的服务器搭建及运维,开发者能够专一于业务逻辑的实现,开发门槛更低,效率更高。
开明云开发:https://console.cloud.tencent.com/tcb?tdl_anchor=techsite
产品文档:https://cloud.tencent.com/product/tcb?from=12763
技术文档:https://cloudbase.net?from=10004
技术交换群、最新资讯关注微信公众号【腾讯云云开发】