短信发送接口被恶意访问的网络攻击事件(四)完结篇--搭建WAF清理战场
前言
短信发送接口被恶意访问的网络攻击事件(一)紧张的遭遇战险胜
短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求
短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本
以上三篇文章详细的介绍了事件的起因和经过,回顾了一下整个过程,其实就是技术人员不上心没有做好安全验证导致接口被无聊的黑客攻击,然后一系列菜鸡互啄的过程,要说战,肯定是没有的,只是这个过程比较好玩儿,因此花了一些时间记录了一下这个事故的经过,至于说为什么这一篇叫清理战场嘛,就是这四篇文章把该写的都写完了,这一篇作为最终的完结篇,也不知道该起什么名字了,因此最后一篇就做做清理、打扫的活儿了,写写自己的感受,总结一下经验教训,给这次事件画上一个句号。
一点小感受
文章发布之后,由于是关于系统安全方面的问题,感觉在这件事情上大家很热情,终于有种自己不是玩单机的感觉了,哈哈哈哈哈。文章里收到了大量的留言,也看到了很多的处理方案,有些建议确实很好,因此也就学习到了一些东西,当然也受到了一些批评,从这些批评中也知道了自己的不足,这种交流的氛围挺让我感慨的,自从写博客以来,一直有一种孤独感,而且有时候不知道写博客是干嘛的,但是通过这几篇博客与大家的交流,我觉得和大家有互动才是最棒的,长久的封闭会导致落后,也会产生些许的抵触和迷茫的情绪。
整理了一些留言,由于量有些大,就不全部贴出来了,谢谢你们的建议。
星多天空亮,人多智慧广
也可以到对应的博客留言中查看。
- 有人针对这次攻击给了一些处理的建议,也提出了不少的方案。在做日志分析的时候,就根据一位朋友提出的建议,通过日志文件去分析了请求者的request,确实是有规律可循的,可以很简单的就被识别,也听取了一些处理经验,在处理方式上没有特别的死板。
- 当然也有人提出了质疑和批评,指出对于事件的处理方法不恰、一开始也没做好安全验证等等之类的话。批评的对,确实是我们自己的原因,没有做好一个模块验证导致了这种问题。
- 也有很多留言的朋友说到他们也遭受过类似的攻击,因此这次的遭遇处境和很多朋友都挺有共鸣的,和大家的交流中得到了很多的宝贵的经验。
前面三篇文章中所说的黑名单和iptables防火墙方案,是第一天发现问题后所做的事情,但是最终并不是用的这个方法,这些只是当时的应急方案,因为我们自己也发现这个方案其实缺点很多而且不够灵活,只能临时起到一些作用,很多朋友也在留言中直接指出了方案的不足。
最终采用了另外一种方案--WAF。
WAF模式
最终的方案是添加了验证码机制,前端加图片验证码,后端加验证,同时在部署的centos服务器上架设了WAF(应用防火墙)用来做请求验证及制定策略来防御攻击,这个是运维小哥搭建的,拦截效果非常好,以后有机会再分享吧。
最终的拦截方式效果图:
图中可以直观的看到最新的防御方式为:WAF+验证码,在搭建了WAF之后,不仅仅是此次的接口攻击,对于其他类型的攻击以及一些骚扰也都有很好的防御效果,不过搭建过程较复杂,配置也比较麻烦,但是有很好的拦截功能,因此很值得推荐也很解渴。
教训一:接口安全
在这次攻击事件之前,根本没有想到过会发生类似的事情,也根本没有一个清晰而严格的关于安全验证的概念,因为以往觉得请求验证就是类似登录那种功能,或者https协议这些,网络安全和接口安全方面的意识太薄弱了,以前虽然也遭遇过攻击,但是针对于应用接口的攻击是第一次碰到,也算是自己上了一节安全知识的课了。
在实际应用层方面,做好接口安全设计和落地,以往做的安全验证过于简单,有的甚至没做,现在看来应用里还存在一些裸奔的接口,这些都需要尽快修改。这次事件虽然是发生在APP移动端,但是在WEB模块中,如果不做好接口安全,肯定也会出现类似的情况,而且WEB端的代码是可以被查看的,如果被盯上肯定更加危险。
安全问题,一定要注意,我以前还碰到过服务器被黑的情况,所以深知被攻击的痛苦。
教训二:及时应对
现在说这些都是后话了,总结了这么多,也是事后诸葛亮,事件发生当时能想到的以及所做的与现在的想法和方案确实差别较大,毕竟事件稳定后,有了更多的思路和方案,许多事情也都比原来更加深刻和清楚,而且攻击事件既然已经发生,当时的情境下,首先想到的肯定不是总结事件,也不是找各种各样的方案,而是找到一个能够实现的方案尽快止损,应对方案应该是阻止攻击以避免进一步的损失和危害。
过程中也出现过错误的判断,以为是什么流量攻击,其实只是小打小闹,只是当时太紧张,发生了错误的判断,自己吓唬自己。
也根据一些朋友留言中的建议,做了一些修改,接口返回的字段并没有直接返回错误码和错误信息,而是返回的发送成功,因为担心攻击者修改脚本,因此这么做是为了迷惑攻击者,避免他们发现工具无用后对请求做修改,使得分析变得困难。
总结
首发于我的个人博客,地址在这里
这次是一个偶然事件,我也没有预料到会忽然发生,过程中也一直在做整理,然后把整理后的文章发布到网上大家一起讨论,很多方案其实都是通过各位朋友的建议去修改的,比如最终的方案,采用的WAF+验证码也是留言中提到的较多的有效方法,问题解决了就好。
原本打算写的博客,因为这次事件已经被丢到马里亚纳海沟里去完全记不起来原先的计划了,不过关于接口攻击这个系列的博客到这一篇就算是完结了,感谢大家提出的意见以及提供的帮助。接下来要继续更新原来计划的博客了,要么是更新SSM系列的进阶篇,要么是关于ELK日志系统集群搭建教程的一个系列博文,还都没开始动笔写,不确定该写哪一篇。
短信发送接口被恶意访问的网络攻击事件(四)完结篇--搭建WAF清理战场的更多相关文章
- 短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本
前言 承接前文<短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求>,文中有讲到一个定位非法IP的shell脚本,现在就来公布一下吧,并没有什么技术难度,只是当时花了些时间去写 ...
- thinkphp 5.0整合阿里大于验证码短信发送接口,含完整模型验证实例DEMO
为大家分享一个阿里大于短信发送接口: 首先创建一个发送模型(Send.php): <?php namespace app\index\model; use think\Validate; cla ...
- 短信发送接口demo
public class SendValidCode { // 短信发送的接口网关 private static String sendUrl = "******************** ...
- 给安卓端调用的短信发送接口demo
package com.js.ai.modules.pointwall.action; import java.io.IOException; import java.util.HashMap; im ...
- python 简单爬虫获取气象数据发送气象定时报-预报预警信息及时推送及阿里云短信群发接口
!/usr/bin/python #encoding=utf-8 #Author:Ruiy #//////////////////////////////////////////////////// ...
- destoon 短信发送函数及短信接口修改
// $DT在common.inc.php中定义, $CACHE = cache_read('module.php'); $DT = $CACHE['dt']; 从缓存里读取网站配置信息. //$d ...
- C# 编写短信发送Window服务
我们做项目过程中,一般都会有发送短信的需求.最常见的就是户注册或者登录时发送短信验证码.不同类型的短信发送,我们都可以放到到一张短信表中,然后通过一个定时的作业去执行短信发送.而定时作业的执行,我们就 ...
- Abp 添加阿里云短信发送
ABP中有短信发送接口ISmsSender public interface ISmsSender { Task<string> SendAsync(string number, stri ...
- ABP框架中短信发送处理,包括阿里云短信和普通短信商的短信发送集成
在一般的系统中,往往也有短信模块的需求,如动态密码的登录,系统密码的找回,以及为了获取用户手机号码的短信确认等等,在ABP框架中,本身提供了对邮件.短信的基础支持,那么只需要根据自己的情况实现对应的接 ...
随机推荐
- jQuery选择器的分类
jQuery选择器的分类 jQuery中有很多分类,大类分为四类,四类里面又分为很多小类,下面就为大家一一介绍,这些选择器的使用和好处,Me用的是jQuery1.8.3的版本 选择器都有哪四类?? 1 ...
- memcache 启动 failed to start
以为是 端口冲突,到注册表中直接改了memcache的注册表,还是启动不了.memcache运行不了,还能咋办,看防火墙有没有阻止程序运行呗 勾上,我的windows 上的memcache 就可以运行 ...
- MySQL ProxySQL读写分离实践
目的 在上一篇文章MySQL ProxySQL读写分离使用初探里初步介绍了ProxySQL的使用,本文继续介绍它的一些特点和DBProxy的性能差异.深入一些去了解ProxySQL,通过测试来说明Pr ...
- STM32采集电阻触摸贴膜
今天为了解决一个测量电阻屏压力的问题,自己直接用STM32做了一个测量电阻屏的程序(直接把触摸屏的四根线接到单片机引脚上),通过AD切换采集,采集X轴电压,Y轴电压,和压力..最后附上自己的程序 先说 ...
- angular.js的时间指令
最后样式 html .input-group(style="max-width:150px") input.form-control(uib-datepicker-popup=&q ...
- maven 热部署至tomcat
1.配置tomcat的界面访问账号和权限./tomcat/conf目录下tomcat-users.xml添加 这里是根据自己的需求添加的一个角色权限 <role rolename="a ...
- linux下安装一款笔记软件(为知笔记)
今天突然想在ubuntu上安装一款跨平台(windows.linux.android)的笔记软件来做日常记录.文章记录以及网页收藏.原先并没有使用过类似的软件,只是见身边的很多人在使用印象笔记来做记录 ...
- object-fit 解决图片指定大小被压缩问题
object-fit 解决图片指定大小被压缩问题 第一次遇到这个属性,是在给video 写 poster的时候,选取的作为poster的img的尺寸有点小,导致video播放器两边有留白.在控制台查看 ...
- hello Kotlin!
听说谷爹要把Kotlin作为了Android开发的一级语言,吓得我赶紧写个“Hello Kotlin!”压压惊! Kotlin是由JetBrains 公司开发的语言,并且已经开源.而JetBrains ...
- NopCommerce(3.9)作业调度插件
NopCommerce(3.9)作业调度插件视频教程录制完成,下面是插件源码下载地址和插件视频教程下载地址:插件下载地址: http://www.nopcommerce.com/p/2752/jobs ...