专栏名称: 纯洁的微笑
分享微服务实践与Java技术干货、偶尔讲讲故事。在人工智能的时代,一起学习微服务架构演进和大数据治理。
目录
相关文章推荐
乐游上海  ·  总计9000万元!2025“乐游上海”旅游消 ... ·  2 天前  
l 看齐 l  ·  周杰伦,突传新消息! ·  3 天前  
l 看齐 l  ·  周杰伦,突传新消息! ·  3 天前  
51好读  ›  专栏  ›  纯洁的微笑

和黑客斗争的 6 天!

纯洁的微笑  · 公众号  ·  · 2020-03-04 09:09

正文

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎 每月每天每分钟都有黑客 在公司网站上扫描。

有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都是各个黑客检测工具来扫描,当然更 高级 一点的入侵需要很多人工协助。
一般情况下,网站被黑客入侵都是因为开发人员平时没有安全意识导致的,厉害的黑客往往会对平台的业务和内部流程非常熟悉, 很多漏洞是从逻辑上分析出来的
当然了,所有的黑客攻击行为都是有目的, 99% 都是因为其中隐藏着暴利
比如2015-2017年,很多互联网金融公司遭遇黑客敲诈,最后都是打钱了事。
和黑客在线上斗争过很多年,积累了一些案例,互联网金融公司工作期间,分享过一系列黑客攻击的案例,查看案例文章可以在公号内回复: 003
今天给大家分享的是,去年一家公司发生的事情。


1


一个客户反馈操作很慢引发的事件


第 1 天

2018年的某一天,客服接到个别用户反馈,公司某款 App 操作时某个界面响应很慢,客服将此问题反馈给了公司的相关技术人员。
技术人员接到这个反馈之后,在生产环境多次测试并 没有复现 这个问题,于是给客户反馈有可能是网络的问题,可以换个网络再试试。
第 2 天
客服接到更多用户反馈,手机操作某个功能时很慢,最长时间要等待超过 1 分钟。 客服又将相关信息反馈到技术,并且将 问题级别提高了一级
技术这边将问题上升到技术经理,开始排查问题原因,技术经理通过大量测试发现,这个缓慢现象在 测试 10 次会复现 1 次
看来又是一个偶现的问题, 偶现的 Bug 是最难处理的 ,技术经理带着研发人员在服务器调了一下前端业务日志,分析之后也没有找到具体的原因。
第 3 天
公司有一个核心代理商将此问题反馈到技术老总,老总安排技术总监来关注此问题。 技术总监要求把 访问路径的关键节点都打上日志 ,看看具体是哪部分操作慢了。
经过技术经理的排查,是在 App 操作某一个功能的时候出现 偶发性的慢 ,但是这块的操作也有缓存作为支撑,缓存的使用率并不是很高。
既然问题是偶发并且后面的 缓存使用率并不高 ,那么应该不是程序哪块出现 Bug 了,应该是 其它方面的问题 ,遂要求排查是否是服务器问题。
先给大家画一下一张图,方便大家了解一下技术背景。

前端用户 使用手机操作某一个功能时, 请求 经过 防火墙路由器 分发到最前端的 Nginx ,Nginx 又通过均衡负载分发到后面的五台业务 服务器
业务操作的时候需要调用一组数据,这些数据会根据业务规则缓存到背后的缓存服务器集群中,用来缓解后端数据库的压力。
第 4 天
经过和运维人员配合调查发现,在分发的这 5 台业务服务器中,其中有 1  台服务器的压力比较大,凡是请求分发到这台服务器的时候就会出现慢的情况。
因为线上的服务器已经用了很多年,怀疑是不是 服务器配置老化 导致的问题,随后将压力比较大的服务器进行下线,无缝切换到新的服务器上。
过了半个小时后继续观察,又发现另外的一台服务器也出现负载压力大的问题。 后面变了很多方案,比如减少到 3 台服务器来支撑,或者增加到 9 台服务器来支撑。
总是切换半个小时到两个小时的时候,其中的 1-2 台服务器的压力会突然上来,一直保持比较高的访问量, 经过这些测试排除是服务器的问题
紧接着排除 Nginx 是不是分发的策略有问题,导致某个服务器分发的请求过多,试着变了几次 Nginx 的分发策略后,还是会复现出问题, 排除 Ngingx 分发异常
第 5 天
技术人员继续跟踪,负载压力比较高的服务器线程 Down 出来和正常的服务器对比,发现在负载压力比较大的服务器上 某个线程的调用数量异常的高
再继续跟踪这个线程,原来是某一个 忘记密码的功能 被频繁的调用,忘记密码应该是一个普通的接口,为什么会被这样高频率的调用呢?
然后再继续跟踪是哪些 IP 在频繁的调用这些接口,不跟踪不知道,一跟踪吓一跳,把调用 最频繁的 Top 100 IP 列出来查了一下,发现都是国外的 IP。
什么 巴黎、孟买、菲律宾、泰国,几乎所有的外国的IP都有,但是作为一家国内的第三方支付公司, 怎么可能会出现国外的 IP 呢?
大家都知道在手机上填忘记密码的时候,绝大部分平台都是使用手机号作为其中的一个条件,如果你没有在这家平台注册,那么就会反馈手机号不存在。
这是一个非常常见的功能,但是对于黑客来讲, 这个功能够暴利了
很多同行业的竞争者需要挖角其它公司客户,但是怎么知道这些平台的客户有哪些?
直接通过这个接口,暴力破解就可以了
是不是很黄很暴力!
因为公司处理的业务都是国内业务,所以只要直接在 Nginx 写脚本,把 所有来自国外的 IP 都给屏蔽 ,可以暂时解决被国外 IP 攻击的问题。
上线后果然消停了,服务器也不过载了,App 访问也正常了。
第 6 天
可能黑客过了一晚上也反应过来了,又开始使用国内的服务器代理 IP 高频调用此接口,既然黑客使用了国内的 IP 地址,肯定不能把国内 IP 都封了吧。
不过在 Nginx 之后还有一个前置服务器,在前置服务器中加一个非常简单的过滤器: 设置一个 IP 地址在某个时间段内(可配置)只能访问此接口 5 次 ,即可解决此问题。
然后再以 用户为维度 加限制,一个用户在某个时间段内(可配置)只能访问此接口 5 次。
上面这些手段都上完之后,一切都安静了,再也没有出现过服务过载或者用户反馈操作反应慢的问题了。
但是如果黑客有足够多的国内 IP 呢,为了防止出现这样的问题,我们再接着对产品进行升级,来防止黑客的这种可能性。
我们都知道现在很多 APP 页面,为了方便用户操作在忘记密码的时候没有图形验证码,或者有图形验证码却比较简单可以机器破解。
所以需要升级新一代的智能验证措施,现在很多创业公司都可以提供这种服务,这样就从各个维度防止了黑客通过暴力手段获取客户信息。


2


总结


其实据我所知,很多互联网公司到现在仍然存在这种漏洞,很容易让黑客通过 暴力破解 拿到 用户注册的 手机号 ,只要拿到了用户的手机号后面就可以采用各种营销策略。

这是目前很多公司,采用的一种竞争手段。
有的时候, 产品的易用性和安全性其实是有冲突的 ,产品在设计的时候,其实就应该和技术多考虑风控的相关设计,不然在产品运营的后期容易出现问题。
一个大型互联网公司中 风险点非常多 服务器 风险点、 业务 风险点都需要做提前考虑,同时公司必须配备相应的安全人员,对公司网站做常规安全巡检。
监控 公司所有的 访问接口频次 ,定期把公司里面所有的 IP 访问 情况做成 图表 进行 分析 ,看哪些是正常的请求,哪些是异常的访问。
定期排查统计分析访问的所有请求 ,可以提前发现很多问题。
开发人员和黑客斗争其实是一个长期的工作 ,任何一个访问量比较大的公司都会遇到类似的问题,遇到问题不要惊慌,仔细排查每一个细节,最终肯定会找到问题的答案。
在我的职场经历中,和黑客有过非常多交手的经历,现在回过头来看,这些 经历才是我提升最快的最好养分
解决问题是程序员成长的第一动力 ,解决大问题是成为大牛的关键。 程序员的一生,也就是不断解决问题的一生。
这样看来,我们要感谢职场上遇到的那些困难!

所有能爬过去的问题都成为了经历和谈资,只有那些越不过的 BUG 才能称之为问题。







请到「今天看啥」查看全文