他必须找到根源并堵住漏洞。
他仔细分析访问日志。
发现攻击请求集中涌向几个特定的,带有多参数查询的URL。
这些请求的User-Agent也高度相似,明显是自动化脚本发出的。
他意识到问题所在:
“防火墙太弱了,很容易被突破进来。”
他之前只设置了最基本的端口放行规则,对http请求缺乏更精细的过滤。
就在他手忙脚乱地研究iptables规则,
试图添加针对异常频率和特征的连接进行限制时。
一封新邮件的提示弹窗在屏幕角落闪过。
发件人:xxxxxxx
主题:你的堡垒有个后门
林志华点开邮件:
“看来有小朋友不喜欢你的东西。”
“攻击流量源自一个公共的压力测试botnet。”
“水平很烂,但对付你的玩具服务器足够了。”
“你的iptables规则像筛子一样。”
“第22条规则逻辑错误。”
“允许了EStAbLIShEd包的回流,反而给了他们持续握手的机会。”
“附件里有个我改过的脚本。”
“基于连接频率和URI模式进行匹配丢弃,应该能挡住这种级别的垃圾流量。”
“另外你的博客源码泄露了wordpress的版本号,记得隐藏它。”
— xxxxxx”
邮件末尾有一个GpG签名附件。
林志华感到一阵后怕,随即是巨大的惊愕。
他立刻检查了自己的防火墙规则,第22条果然有一个致命的逻辑错误。
是他之前照搬网上教程时不小心留下的。
这个漏洞等于是给攻击者开了一个小门。
他没有犹豫,下载了脚本,仔细检查了每一行代码然后谨慎地执行。
脚本生效极快。
几分钟内,netstat里的异常连接数锐减,cpU占用率像退潮一样落回正常水平。
攻击流量被精准地识别并丢弃了。
服务器恢复了正常,只剩下访问日志里那些密密麻麻的失败请求记录。
他回复邮件,只有简单的几个字:
“谢谢你的帮忙。你怎么知道的?”
几分钟后,回复来了:
“你的博客挂了。我正好在看。攻击流量源有几个是我标记过的垃圾Ip段。”
“菜鸟手法,但你更菜。”
“脚本好用的话,帮我测试下那个多重签名钱包的时间锁功能。”
林志华明白了。
这是一种极客式的以工换工。
他检查了下脚本,确认没有后门后,大胆地在服务器上运行。
脚本自动化地设置了一套更精细的iptables规则。
并封禁了刚才攻击源中的几个核心Ip段。
服务器恢复平静后,林志华并没有立刻去休息。
他调取了云服务商提供的流量清洗日志和原始的服务器访问日志。
开始进行交叉分析。
攻击流量来自成千上万个分散的Ip,这正是僵尸网络的特征,看似无迹可寻。
但林志华也处理过大量的金融数据,擅长从混乱中寻找模式。
他写了一个简单的python脚本,对所有攻击Ip进行反向dNS查询和地理信息定位。
然后将结果导入一个本地数据库进行筛选。
大部分Ip都是海外的虚拟主机或明显的代理节点。
但当他设置筛选条件为本省乃至本市的Ip段时,几个异常的数据点跳了出来。
其中有十几个Ip,经过几层代理伪装。
其最终出口Ip却指向了本市电信的一个特定Ip段。
而这个Ip段,经过他进一步查询,
主要覆盖的区域正是他所在的城市以及毗邻的科技园区!
林志华有点疑惑:
“太巧了吧?”
他进一步缩小时间范围,
发现这些本地源Ip的攻击请求,恰好是整场攻击的起始点。
在海外botnet流量大规模涌入前的几分钟。
这些本地Ip就已经开始以较高的频率试探性地访问他博客的那些特定复杂URL。
这不像是一次完全随机的,无差别的网络扫描攻击。
这更像是一次有明确目标的,先由本地节点发起试探,
然后再调动更大资源进行冲击的定向攻击。
手法虽然依旧算不上高超,但目的性极强。
这到底是是谁做的呢?
他立即将博客的访问方式改为强制httpS。
并配置了更严格的防火墙规则,直接屏蔽了那个可疑的本市Ip段的所有访问。
他彻底检查了服务器,确保没有留下任何后门或webshell。
他彻底隐藏了所有服务器软件和cmS的版本信息。
他改写了监控脚本。
特别关注任何来自本市Ip段的异常访问,并设置了更高优先级的告警。
做完这一切,天已经蒙蒙亮。
他毫无睡意,坐在电脑前,看着被屏蔽的Ip段列表,思绪纷乱。
另一处房间里,一位人影小声说道:
“林志华,我给你准备的礼物喜欢吗?我会摧毁你所建立的一切。”
隔天!
寝室的灯光下,林志华看着那本厚重的书,
是关于期权,期货及其他衍生品的教材。
他揉了揉发涩的双眼。
旁边摊开的笔记本上,密密麻麻写满了各种奇异期权的盈亏结构图。
他虽然不知道对方是谁发动的攻击,
但是他明白未来来自黑客的攻击会越来越频繁。
跟华尔街那群老狐狸交手是迟早的事情。
除了学习网络安全之外,金融的知识也是不能缺少的。
张猛打完球回来,汗津津地凑过来看了一眼林志华的书。
“华子,你看这玩意儿不头晕吗?这都啥跟啥啊?比高数难啃多了。”
林志华笑了笑:
“我们做的币购才刚起步,不能大意,网络安全,法律法规这些都要学习。”