前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >疑似被攻击?丝毫不慌张!

疑似被攻击?丝毫不慌张!

作者头像
腾讯云开发TCB
修改2021-07-16 16:15:35
3810
修改2021-07-16 16:15:35
举报
文章被收录于专栏:云开发云开发

导语

什么,个人网站疑似被攻击?

看机智的开发者如何巧妙运用云开发 CloudBase 提供的安全能力,化解网站攻击风险。

大家好我是鱼皮,前段时间,我的网站疑似被攻击了,今天带大家一起来事故现场看看,并且分享事故分析思路和事后防控手段。 来龙去脉

先看看我是怎么发现网站被攻击的吧。

通常,为了保证线上网站和后台服务的稳定运行,我们需要给项目添加监控告警功能,出现意外情况时,系统会第一时间向管理员发送通知。

由于我的项目使用 云开发CloudBase 来部署,默认提供了额度监控和告警,可以防止资源消耗过多,非常方便。

额度监控
额度监控

但光有告警还不够,真出了问题,靠什么去分析呢?必须给故障排查提供一些线索。

云开发 CloudBase 默认为云函数、云托管等提供了监控和日志记录,一行代码都不用写,就能够看到资源的运行信息和详细日志,比如请求时间、IP 地址、请求头信息等,非常方便。

日志记录
日志记录

此外,我还在开发时,给服务添加了一些日志和数据上报,比如哪位用户在哪个时间执行了什么操作。记录的越详细,排查问题就越方便。当然,无意义的内容就不用记录了,否则看日志的时候密密麻麻的,伤眼又低效!

我一直把项目当成自己的“孩子”,因此,我每天都会看一下监控和日志,来了解下他们的身体状况。

我最常看的监控指标是服务的 调用次数,它很大程度上反映了用户流量的访问情况。

正常情况下,调用次数随时间的曲线图应该是下面这样的,夜里没人看,白天流量还算平稳,偶尔会有一些小高峰:

但有一天,我突然看到了下面这个曲线图,大家看看这个曲线有什么特点?

没错,地中海上偏偏长了一根长毛!在 25 分附近,调用次数突然飙升,我们一般把这种现象称为 “流量突刺”,把监控图上这一枝独秀称为 “毛刺”。

大多数情况下,有毛刺可不是什么好事。看到这个曲线,我的第一反应不是 “卧槽,项目火了?”,而是 “卧槽,被攻击了!”

到底是不是被攻击了?是谁攻击我了呢?不会我真的火了吧(还带有一丝幻想)?

带着这些疑问,赶紧来分析一下。

分析

光看上面的曲线图,是分析不出来的,必须要从事故现场找找线索。

还好云开发帮我们记录了访问日志,选择事故发生的时间段(以 25 分钟为基准,前后各空 5 分钟),然后就筛选出了对应日志。

查看日志
查看日志

为了更灵活地分析,我们将日志导出到本地,使用 Excel 等表格软件打开它。

然后,我们来分析下日志,先看 日志生产时间 这列,即案发时间:

查看日志‍‍‍‍‍‍‍‍‍
查看日志‍‍‍‍‍‍‍‍‍

大家发现了么?日志生产时间非常均匀!每秒大概 3 - 4 条。

从这点就说明了,大概率不是人工访问服务,而是机器自动按照某个频率发送请求。

再看下日志的内容,每条日志的结构如下:

代码语言:javascript
复制
// 请求时间
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 地址都是相同的!

这下我松了口气,应该只是一个人在小打小闹吧。

然后我看了几条连续日志的请求地址,大概是这样:

代码语言:javascript
复制
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 等,但都需要自己来部署和维护,需要一定的人力物力成本。

但使用云开发CloudBase,除了上面提到的基础资源额度告警外,还可以灵活自定义各种高级的告警策略

比如给点赞功能添加调用次数限制告警,先选择告警对象为 “云函数”:

新建告警策略
新建告警策略

再配置触发条件,比如 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>

技术交流群、最新资讯关注微信公众号【腾讯云开发CloudBase】


作者:鱼皮,云开发高级布道师。腾讯应用开发工程师,公众号《程序员鱼皮》主理人,熟悉 React、Vue、Java、跨端、云开发等多种技术栈,有云开发项目制作到上线运营的全链路经验。作为云开发布道师,负责体验、完善云开发,产出技术文章、普及云开发的使用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云开发CloudBase 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分析
  • 防控
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档