前言

短信发送接口被恶意访问的网络攻击事件(一)紧张的遭遇战险胜
短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求
短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本
以上三篇文章详细的介绍了事件的起因和经过,回顾了一下整个过程,其实就是技术人员不上心没有做好安全验证导致接口被无聊的黑客攻击,然后一系列菜鸡互啄的过程,要说战,肯定是没有的,只是这个过程比较好玩儿,因此花了一些时间记录了一下这个事故的经过,至于说为什么这一篇叫清理战场嘛,就是这四篇文章把该写的都写完了,这一篇作为最终的完结篇,也不知道该起什么名字了,因此最后一篇就做做清理、打扫的活儿了,写写自己的感受,总结一下经验教训,给这次事件画上一个句号。

一点小感受

文章发布之后,由于是关于系统安全方面的问题,感觉在这件事情上大家很热情,终于有种自己不是玩单机的感觉了,哈哈哈哈哈。文章里收到了大量的留言,也看到了很多的处理方案,有些建议确实很好,因此也就学习到了一些东西,当然也受到了一些批评,从这些批评中也知道了自己的不足,这种交流的氛围挺让我感慨的,自从写博客以来,一直有一种孤独感,而且有时候不知道写博客是干嘛的,但是通过这几篇博客与大家的交流,我觉得和大家有互动才是最棒的,长久的封闭会导致落后,也会产生些许的抵触和迷茫的情绪。

整理了一些留言,由于量有些大,就不全部贴出来了,谢谢你们的建议。

星多天空亮,人多智慧广



也可以到对应的博客留言中查看。

  • 有人针对这次攻击给了一些处理的建议,也提出了不少的方案。在做日志分析的时候,就根据一位朋友提出的建议,通过日志文件去分析了请求者的request,确实是有规律可循的,可以很简单的就被识别,也听取了一些处理经验,在处理方式上没有特别的死板。
  • 当然也有人提出了质疑和批评,指出对于事件的处理方法不恰、一开始也没做好安全验证等等之类的话。批评的对,确实是我们自己的原因,没有做好一个模块验证导致了这种问题。
  • 也有很多留言的朋友说到他们也遭受过类似的攻击,因此这次的遭遇处境和很多朋友都挺有共鸣的,和大家的交流中得到了很多的宝贵的经验。

前面三篇文章中所说的黑名单和iptables防火墙方案,是第一天发现问题后所做的事情,但是最终并不是用的这个方法,这些只是当时的应急方案,因为我们自己也发现这个方案其实缺点很多而且不够灵活,只能临时起到一些作用,很多朋友也在留言中直接指出了方案的不足。
最终采用了另外一种方案--WAF。

WAF模式

最终的方案是添加了验证码机制,前端加图片验证码,后端加验证,同时在部署的centos服务器上架设了WAF(应用防火墙)用来做请求验证及制定策略来防御攻击,这个是运维小哥搭建的,拦截效果非常好,以后有机会再分享吧。

最终的拦截方式效果图:

图中可以直观的看到最新的防御方式为:WAF+验证码,在搭建了WAF之后,不仅仅是此次的接口攻击,对于其他类型的攻击以及一些骚扰也都有很好的防御效果,不过搭建过程较复杂,配置也比较麻烦,但是有很好的拦截功能,因此很值得推荐也很解渴。

教训一:接口安全

在这次攻击事件之前,根本没有想到过会发生类似的事情,也根本没有一个清晰而严格的关于安全验证的概念,因为以往觉得请求验证就是类似登录那种功能,或者https协议这些,网络安全和接口安全方面的意识太薄弱了,以前虽然也遭遇过攻击,但是针对于应用接口的攻击是第一次碰到,也算是自己上了一节安全知识的课了。

在实际应用层方面,做好接口安全设计和落地,以往做的安全验证过于简单,有的甚至没做,现在看来应用里还存在一些裸奔的接口,这些都需要尽快修改。这次事件虽然是发生在APP移动端,但是在WEB模块中,如果不做好接口安全,肯定也会出现类似的情况,而且WEB端的代码是可以被查看的,如果被盯上肯定更加危险。

安全问题,一定要注意,我以前还碰到过服务器被黑的情况,所以深知被攻击的痛苦。

教训二:及时应对

现在说这些都是后话了,总结了这么多,也是事后诸葛亮,事件发生当时能想到的以及所做的与现在的想法和方案确实差别较大,毕竟事件稳定后,有了更多的思路和方案,许多事情也都比原来更加深刻和清楚,而且攻击事件既然已经发生,当时的情境下,首先想到的肯定不是总结事件,也不是找各种各样的方案,而是找到一个能够实现的方案尽快止损,应对方案应该是阻止攻击以避免进一步的损失和危害。

过程中也出现过错误的判断,以为是什么流量攻击,其实只是小打小闹,只是当时太紧张,发生了错误的判断,自己吓唬自己。

也根据一些朋友留言中的建议,做了一些修改,接口返回的字段并没有直接返回错误码和错误信息,而是返回的发送成功,因为担心攻击者修改脚本,因此这么做是为了迷惑攻击者,避免他们发现工具无用后对请求做修改,使得分析变得困难。

总结

首发于我的个人博客,地址在这里

这次是一个偶然事件,我也没有预料到会忽然发生,过程中也一直在做整理,然后把整理后的文章发布到网上大家一起讨论,很多方案其实都是通过各位朋友的建议去修改的,比如最终的方案,采用的WAF+验证码也是留言中提到的较多的有效方法,问题解决了就好。

原本打算写的博客,因为这次事件已经被丢到马里亚纳海沟里去完全记不起来原先的计划了,不过关于接口攻击这个系列的博客到这一篇就算是完结了,感谢大家提出的意见以及提供的帮助。接下来要继续更新原来计划的博客了,要么是更新SSM系列的进阶篇,要么是关于ELK日志系统集群搭建教程的一个系列博文,还都没开始动笔写,不确定该写哪一篇。

短信发送接口被恶意访问的网络攻击事件(四)完结篇--搭建WAF清理战场的更多相关文章

  1. 短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本

    前言 承接前文<短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求>,文中有讲到一个定位非法IP的shell脚本,现在就来公布一下吧,并没有什么技术难度,只是当时花了些时间去写 ...

  2. thinkphp 5.0整合阿里大于验证码短信发送接口,含完整模型验证实例DEMO

    为大家分享一个阿里大于短信发送接口: 首先创建一个发送模型(Send.php): <?php namespace app\index\model; use think\Validate; cla ...

  3. 短信发送接口demo

    public class SendValidCode { // 短信发送的接口网关 private static String sendUrl = "******************** ...

  4. 给安卓端调用的短信发送接口demo

    package com.js.ai.modules.pointwall.action; import java.io.IOException; import java.util.HashMap; im ...

  5. python 简单爬虫获取气象数据发送气象定时报-预报预警信息及时推送及阿里云短信群发接口

    !/usr/bin/python #encoding=utf-8 #Author:Ruiy #//////////////////////////////////////////////////// ...

  6. destoon 短信发送函数及短信接口修改

    // $DT在common.inc.php中定义, $CACHE = cache_read('module.php'); $DT = $CACHE['dt'];  从缓存里读取网站配置信息. //$d ...

  7. C# 编写短信发送Window服务

    我们做项目过程中,一般都会有发送短信的需求.最常见的就是户注册或者登录时发送短信验证码.不同类型的短信发送,我们都可以放到到一张短信表中,然后通过一个定时的作业去执行短信发送.而定时作业的执行,我们就 ...

  8. Abp 添加阿里云短信发送

    ABP中有短信发送接口ISmsSender public interface ISmsSender { Task<string> SendAsync(string number, stri ...

  9. ABP框架中短信发送处理,包括阿里云短信和普通短信商的短信发送集成

    在一般的系统中,往往也有短信模块的需求,如动态密码的登录,系统密码的找回,以及为了获取用户手机号码的短信确认等等,在ABP框架中,本身提供了对邮件.短信的基础支持,那么只需要根据自己的情况实现对应的接 ...

随机推荐

  1. 区块链入门(1):搭建(Ubuntu系统)Truffle v3.2.1 开发和测试环境

    本文主要讲解ubuntu 16.04下, truffle开发测试环境的搭建.  第一步:安装nodejs 和 npm,有两种比较常见的方法. 方法1:直接在nodejs官网下载nodejs-v6.10 ...

  2. 20155212 实验四 《Android程序设计》 实验报告

    20155212 实验四 <Android程序设计> 实验报告 (一)Android Stuidio的安装测试 参考<Java和Android开发学习指南(第二版)(EPUBIT,J ...

  3. 18、面向对象基本原则及UML类图简介

    18.1.面向对象基本原则 18.1.1.面向抽象原则 抽象类特点: a.抽象类中可以有abstract方法,也可以有非abstract方法. b.抽象类不能用new运算符创建对象. c.如果一个非抽 ...

  4. Visual Studio Code for mac

    Visual Studio Code for mac 将下载文件解压拖到应用程序文件夹即可 下载地址:链接: https://pan.baidu.com/s/1geHL5f1 密码: 2fdw

  5. 在服务器上用Fiddler抓取HTTPS流量

    转自:http://yoursunny.com/t/2011/FiddlerHTTPS/在服务器上用Fiddler抓取HTTPS流量 阳光男孩 发表于2011-03-19 开发互联网应用的过程中,常常 ...

  6. 026 hibernate操作树形结构

    树形结构:也就是目录结构,有父目录.子目录.文件等信息,而在程序中树形结构只是称为节点. 一棵树有一个根节点,而根节点也有一个或多个子节点,而一个子节点有且仅有一个父节点(当前除根节点外),而且也存在 ...

  7. The dplyr package has been updated with new data manipulation commands for filters, joins and set operations.(转)

    dplyr 0.4.0 January 9, 2015 in Uncategorized I’m very pleased to announce that dplyr 0.4.0 is now av ...

  8. 使用ConcurrentDictionary替代Hashtable对多线程的对象缓存处理

    在之前一段时间里面,我的基类多数使用lock和Hashtable组合实现多线程内缓存的冲突处理,不过有时候使用这两个搭配并不尽如人意,偶尔还是出现了集合已经加入的异常,对代码做多方的处理后依然如故,最 ...

  9. 修改tomcat图标

    页面上加入: 1 <link rel="shortcut icon" href="favicon.ico" type="image/x-icon ...

  10. Analog/digital converter (ADC)

    1.ADC1 and ADC2 are 10-bit successive approximation Anolog to Digital Converters. 所谓successive appro ...