当前位置: 首页 > 科技观察

与黑客作战6天!

时间:2023-03-14 12:25:30 科技观察

在互联网公司工作,难免与黑客打交道。在我工作过的两家互联网公司,黑客几乎每天、每个月每分钟都会扫描公司网站。有的是寻找Sql注入漏洞,有的是寻找线上服务器可能存在的漏洞。他们中的大多数都被各种黑客检测工具扫描过。当然,更高级的入侵需要大量的人工协助。一般情况下,网站被黑是因为开发者通常没有安全意识。厉害的黑客往往对平台的业务和内部流程非常熟悉,很多漏洞都分析的很有逻辑。当然,所有的黑客都是有目的的,99%都是因为隐藏的利益。比如2015年到2017年,很多互联网金融公司被黑客敲诈勒索,最后都是自己掏腰包。今天要跟大家分享的是去年一家公司发生的事情。1.客户反馈操作很慢导致的事件。Day12018年某日,客服接到个人用户反馈,公司APP某界面操作时反应慢。客服将此问题反馈给公司相关人员。技术人员。技术人员接到这个反馈后,在生产环境多次测试都没有重现问题,于是给客户反馈说可能是网络问题,可以换个网络试试。第二天,客服收到更多用户反馈,手机操作某项功能很慢,最长等待时间超过1分钟。客服将相关信息反馈给技术,将问题级别提升了一个级别。技术方将问题上报给技术经理,开始排查问题原因。技术经理通过大量测试发现,这种慢现象每10次测试就会出现一次。这似乎是另一个偶然的问题。偶尔出现的错误是最难处理的。技术经理带领研发人员调整了服务器上的前端业务日志,分析后没有找到具体原因。第三天,公司的一个核心代理把这个问题反映给技术老大,老大安排技术总监关注这个问题。技术负责人要求把访问路径的所有关键节点都记录下来,看看是哪一部分运行慢了。经过技术经理的排查,发现APP在操作某个功能时偶尔会变慢,但是这个操作也是有缓存支持的,缓存的使用率不是很高。由于问题是偶发的,而且后续的缓存使用率也不高,所以应该不是程序的bug,应该是其他方面的问题,所以才问是不是服务器的问题。先给大家画个图,方便大家了解技术背景。当前端用户使用手机操作某个功能时,请求通过防火墙路由器分发到前端Nginx,Nginx通过负载均衡分发到后面的5个业务服务器。业务运行时需要调用一组数据,这些数据会根据业务规则缓存在其背后的缓存服务器集群中,以缓解后端数据库的压力。第4天,配合运维人员排查,发现分布的5台业务服务器中,有1台服务器压力比较大,所有请求都分发到这台服务器上会比较慢。由于线上服务器已经使用多年,怀疑是服务器配置老化导致的问题,随后将压力比较大的服务器下线,无缝切换到新服务器上。半小时后,继续观察,发现另一台服务器也出现了负载压力过大的问题。后来又改变了很多计划,比如减少到3台服务器支持,或者增加到9台服务器支持。总是在半小时到两小时之间切换,1-2台服务器的压力会突然上来,流量总是比较大。经过这些测试,排除了服务器的问题。然后排除是不是Nginx的分发策略有问题,导致某台服务器分发的请求过多。多次尝试更改Nginx的分布策略,问题依旧,排除Ngingx分布异常。第5天,技术人员继续跟踪,负载压力比较大的服务器线程宕机了。对比正常的服务器,发现负载压力比较大的服务器上某个线程的调用次数异常高。继续追踪这个话题。原来是某个忘记密码的函数被频繁调用了。忘记密码应该是一个常见的界面。为什么它被如此频繁地调用?然后继续跟踪哪些IP在频繁调用这些接口,不跟踪就不知道。当您跟踪它时,您会大吃一惊。我查看了调用次数最多的前100个IP,发现都是国外IP。巴黎、孟买、菲律宾、泰国,国外的IP几乎都有,但是作为国内的第三方支付公司,哪有国外的IP?大家都知道,当你忘记手机密码的时候,千万不要把手机号作为条件之一。如果您没有在本平台注册过,会报手机号不存在。这是一个很常见的功能,但是对于黑客来说,这个功能可以赚取巨额利润。很多同行业的竞争者需要挖其他公司的客户,但是他们怎么知道这些平台的客户是谁呢?直接通过这个接口,暴力破解就可以了。是不是很色情很暴力啊!因为公司办理的业务都是国内业务,所以只要直接在Nginx中写脚本,屏蔽所有国外IP,就可以暂时解决被国外IP攻击的问题。上线后真的停了,服务器没有超载,App访问正常。第6天,黑客可能一夜之间反应过来,开始频繁使用国内服务器代理IP调用这个接口。既然黑客使用的是国内IP地址,那么肯定不可能屏蔽所有国内IP。但是,Nginx背后有一个前端服务器。在前端服务器加一个很简单的过滤器:设置一个IP地址在一定时间内(可配置)只访问这个接口5次,就可以解决。问题。然后根据用户维度添加限制,一个用户在一定时间内只能访问这个接口5次(可配置)。以上方法全部执行后,一切都安静了,不存在服务过载或用户反馈操作响应慢的问题。但如果黑客有足够多的国内IP,为了防止出现此类问题,我们随后会对产品进行升级,防止黑客入侵的可能。我们都知道现在很多APP页面为了方便用户忘记密码的时候都没有图形验证码,或者有图形验证码但是比较简单,可以被机器破解。因此,升级新一代的智能验证手段势在必行。现在很多初创公司都可以提供这项服务,从各个维度防止黑客通过暴力手段获取客户信息。2.总结其实据我所知,很多互联网公司还是存在这种漏洞的。黑客很容易通过暴力破解得到用户注册的手机号。只要拿到用户的手机号,他们就可以使用各种营销手段。战略。这是目前很多企业采用的一种竞争方式。有时,产品的易用性和安全性之间实际上存在冲突。在设计产品的时候,其实应该多考虑风控和技术的设计,否则在产品运营的后期很容易出问题。大型互联网公司存在很多风险点。需要提前考虑服务器风险点和业务风险点。同时,公司必须配备相应的安全人员,定期对公司网站进行安全检查。监控公司内所有访问接口的频率,定期将公司内所有IP访问情况分析成图表,查看哪些是正常请求,哪些是异常请求。定期检查所有统计分析访问的请求,可以提前发现很多问题。开发者和黑客之间的斗争其实是一项长期的工作。凡是访问量比较大的公司,都会遇到类似的问题。遇到问题不要惊慌。仔细检查每一个细节,最后一定会找到问题的答案。在我的职场经历中,我与黑客有过很多接触。现在回想起来,这些经历是我进步最快的最好的养料。解决问题是程序员成长的第一动力,解决大问题是成为大牛的关键。程序员的一生,就是不断解决问题的一生。由此看来,我们应该为职场中遇到的困难而感恩!凡是能克服的问题都成了经验和谈资,只有那些不能克服的BUG,才能称为问题。