和黑客斗争的 6 天

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

有的是寻找Sql注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都是各个黑客检测工具来扫描,固然更高级一点的入侵须要不少人工协助。前端

通常状况下,网站被黑客入侵都是由于开发人员平时没有安全意识致使的,厉害的黑客每每会对平台的业务和内部流程很是熟悉,不少漏洞是从逻辑上分析出来的java

固然了,全部的黑客攻击行为都是有目的,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在频繁的调用这些接口,不跟踪不知道,一跟踪吓一跳,把调用最频繁的 Top100 IP列出来查了一下,发现都是国外的IP。

什么 巴黎、孟买、菲律宾、泰国,几乎全部的外国的IP都有,可是做为一家国内的第三方支付公司,怎么可能会出现国外的IP呢?

你们都知道在手机上填忘记密码的时候,绝大部分平台都是使用手机号做为其中的一个条件,若是你没有在这家平台注册,那么就会反馈手机号不存在。

这是一个很是常见的功能,可是对于黑客来说,这个功可以暴利了

不少同行业的竞争者须要挖角其它公司客户,可是怎么知道这些平台的客户有哪些?

直接经过这个接口,暴力破解就能够了。

是否是很黄很暴力!

由于公司处理的业务都是国内业务,因此只要直接在 Nginx 写脚本,把全部来自国外的IP都给屏蔽,能够暂时解决被国外 IP 攻击的问题。

上线后果真消停了,服务器也不过载了,App 访问也正常了。

第 6 天

可能黑客过了一夜也反应过来了,又开始使用国内的服务器代理IP高频调用此接口,既然黑客使用了国内的IP地址,确定不能把国内IP都封了吧。

不过在 Nginx 以后还有一个前置服务器,在前置服务器中加一个很是简单的过滤器:设置一个IP地址在某个时间段内(可配置)只能访问此接口5次,便可解决此问题。

而后再以用户为维度加限制,一个用户在某个时间段内(可配置)只能访问此接口5次。

上面这些手段都上完以后,一切都安静了,再也没有出现过服务过载或者用户反馈操做反应慢的问题了。

可是若是黑客有足够多的国内 IP 呢,为了防止出现这样的问题,咱们再接着对产品进行升级,来防止黑客的这种可能性。

咱们都知道如今不少 APP 页面,为了方便用户操做在忘记密码的时候没有图形验证码,或者有图形验证码却比较简单能够机器破解。

因此须要升级新一代的智能验证措施,如今不少创业公司均可以提供这种服务,这样就从各个维度防止了黑客经过暴力手段获取客户信息。

2.总结

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

这是目前不少公司,采用的一种竞争手段。

有的时候,产品的易用性和安全性实际上是有冲突的,产品在设计的时候,其实就应该和技术多考虑风控的相关设计,否则在产品运营的后期容易出现问题。

一个大型互联网公司中风险点很是多,服务器风险点、业务风险点都须要作提早考虑,同时公司必须配备相应的安全人员,对公司网站作常规安全巡检。

监控公司全部的访问接口频次,按期把公司里面全部的IP访问状况作成图表进行分析,看哪些是正常的请求,哪些是异常的访问。

按期排查统计分析访问的全部请求,能够提早发现不少问题。

开发人员和黑客斗争实际上是一个长期的工做,任何一个访问量比较大的公司都会遇到相似的问题,遇到问题不要惊慌,仔细排查每个细节,最终确定会找到问题的答案。

在个人职场经历中,和黑客有过很是多交手的经历,如今回过头来看,这些经历才是我提高最快的最好营养

解决问题是程序员成长的第一动力,解决大问题是成为大牛的关键。程序员的一辈子,也就是不断解决问题的一辈子。

这样看来,咱们要感谢职场上遇到的那些困难!

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

做者简介:纯洁的微笑,一个有故事的程序员。曾在互联网金融,第三方支付公司工做,现为一名自由职业者,和你一块儿用技术的角度去看这个世界。个人微信号puresmilea,欢迎你们找我聊天,记录你个人故事。


微信扫描二维码,关注一个有故事的程序员

(转载本站文章请注明做者和出处 纯洁的微笑-ityouknow

点击了解 :Java 技术人的网站

Show Disqus Comments
Please enable JavaScript to view the comments powered by Disqus.
相关文章
相关标签/搜索