前几天,我们的站点的速度忽然慢了下来,接着发生了当机,重新启动后最初访问不错,不久又慢了下来,数据库服务器方面没有显示有什么巨大压力,并且在网站根目录下创建一个静态文件,居然访问速度也奇低,由于网站最近正在更新,所以怀疑是不是逻辑有什么问题,然而和同事交流发现最近并没有更新关键的逻辑,在排除这种可能性后,焦点集中到了攻击上
可是web服务器端统计数据显示也没有很大的压力,正纳闷的时候,回去想看邮箱里的错误报告(这是由程序把所有黄页错误自动转发过来的),由于网站经常会被各种程序扫描,扫描会造成许多无法访问的路径错误,加上访问超时等,这种报告每天都会有7-800封,所以一般都忽略掉:),而今天由于网站奇慢,错误报告瞬间超过了5000多封,邮箱已经无法打开,后来据同事说,整个公司的邮件服务器都当掉,所以只好请运维人员清空了我们邮箱
幸好本地的outlook中还保留了一些发生问题最初时候的错误邮件,发现有很多outofmemory错误,都是由一种特定的操作引起的(不妨称为A操作)而这种错误本身并不能解释问题,因为发生错误的模块是分布在和服务器不同的另外一台机器上,去查了以下这个操作涉及的资源,(下称为资源B)发现这个资源由于被反复增加内容而巨大无比,而对这种资源的操作成本是和资源的大小成比例的,而且调用是同步而非异步,也就是虽然整个对资源的操作过程是在另外一台机器上,但是调用端会一直阻塞等到操作完毕(或者超时)才会退出
这就造成请求排队的原因.
攻击者就是利用A操作没有时间间隔的限制,反复调用,而使得网站瘫痪
整理逻辑发现,A操作首先是向数据库中插入一条数据,然后更新资源B,开始时候B不大,而由于请求频繁,数据库的压力大,请求可能有一些排队,但是网站还可以承受,后来随着B资源的增大,请求开始排队,这时反而数据库的压力反而小了,因为请求都堆在了对资源B的操作上
再次重启动服务后,果然看到了这个现象,发现数据库开始压力很大(由于B资源已经无法操作,大概攻击这开始操作其他的资源)
我们在解决的时候,首先在数据库端对A操作加上了时间间隔,数据库的压力立刻降低,然而请求依然排队,最后在前端也加入了限制,解决了这个问题
对这个问题进行总结
尽量使用异步调用,同步调用一定要注意超期时间:可以看到,虽然对B资源使用了分布式技术,但是由于其是同步调用,并且超期时间没有设置,所以实际没有利用到分布的优势。
限制操作的间隔时间和处理时间:每次请求处理的时间(包括成功和不成功)如果大于请求间隔时间,就会排队,适当的排队没有问题,就好象我们排队买火车票,虽然队很长,但是只要大家都有票,(当然,访问网站不会象买排队火车票一样有耐性),可是当有许多恶意请求参与排队,比如买票时候前面总是有很多黄牛:),所以我希望有一天所有售票员都可以识别所有的黄牛,等他走到授票窗口前的时候,授票员就直接告诉他,“滚”,这样就省去了他买票,后面等待的时间
所以要想办法减低恶意请求的处理时间,一方面是要识别他们,另外就是如果是恶意请求,就要尽快的返回,能够尽量在前端判断就在前端判断,能多早判断就多早判断,尽量不要拖到数据层。比如在解决这个问题时,我们就认为1秒内两次执行A操作为恶意操作,并且对时间间隔的判断在请求一开始就执行。
保护好复杂的逻辑:由于网站业务逻辑日趋复杂,许多操作都会涉及很多资源,这会给攻击者造成机会,所以大家在设计这些极端复杂操作时要尽量想到上面的问题
不要忽略错误报告:无论错误报告有多长,请不要轻易删除他们,因为他们永远可能是你找到问题的钥匙
分享到:
相关推荐
- 从理论和实践层面探讨攻击性行为的影响因素,并提出相应的教育对策,以改变家长和教师的教育观念和方式。 2. **研究方法**: - **文献法**:通过收集网络、图书资源,了解攻击性行为的危害、成因和现状,为研究...
### 分布式拒绝服务攻击预警系统的设计与实现 #### 一、引言 分布式拒绝服务攻击(Distributed Denial of Service, DDoS)自1999年首次被提及以来,迅速成为网络安全领域的一大挑战。不同于传统的单一来源攻击,...
功耗分析攻击研究及抗功耗分析攻击密码芯片设计
分布式系统设计允许攻击者从多个源头同时发起攻击,增加攻击的复杂度和防御的难度。 9. 网络安全措施的应对:文中提到SYNCookies等安全措施能有效管理监测服务器的运行状态,这表明当前网络安全防护措施正在不断...
针对文档“基于DDoS攻击的电商企业网络安全模型的设计与实现.pdf”提供的内容,我们可以提炼出以下知识点: 1. 电子商务网络安全问题:文档指出电子商务中网络安全问题日益凸显,成为电商企业长远发展的重大难题。...
故障攻击的方法从1996年Boneh等人首次提出以来,已经从简单的故障攻击发展为差分故障攻击和安全故障攻击,攻击目标涵盖了功能运算单元、存储单元和状态机,对专用芯片安全构成了威胁。例如,Bar-El等人针对RSA密码...
这是一本关于网络攻击与防护编码设计方法和技巧的书,包括放火墙、加密、信息摘要、身份鉴别、病毒等,并对书中收录的大量程序做了详细分析和注解,力图使读者能够彻底地了解这些技术,并提高程序设计水平。...
在分析“基于用户信任值的检测和防御DDoS攻击模型设计及分析”这一主题时,我们可以从以下几个角度进行探讨: 首先,DDoS攻击(分布式拒绝服务攻击)是一种常见的网络攻击方式,攻击者通过控制大量被感染的计算机...
5. 设计流程:设计流程是指从需求分析到物理实现的整个设计过程。在本文中,设计流程包括需求分析、架构设计、RTL设计、synthesis、仿真测试等步骤。 6. DES算法:DES(Data Encryption Standard)是一种经典的分组...
基于C#开发伪造一个Mysql服务端迷惑攻击者躲避爆破攻击+开发文档说明,适合竞赛设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C#开发伪造一个Mysql服务端迷惑攻击者...
本文提出的基于数据挖掘的DDos攻击检测系统(DMIDS),旨在利用数据挖掘技术从数据中提取特征与规则,实现对DDos攻击的自动识别与检测。 数据挖掘技术在处理大规模数据集方面表现出色,能够通过算法自动发现数据间...
Linux下DOS攻击防御防火墙的设计与实现.pdf
SQL自动注入攻击框架研究与设计 在当今网络安全日益重要的时代,SQL自动注入攻击框架研究与设计是一项非常重要的研究方向。随着Web应用的发展越来越成熟,应用的各项技术发展得也越来越复杂,网络安全成了业界关注...
1. 模块化设计:该系统采用模块化设计,用户可以选择不同的模块进行模拟攻击。 2. 多级保护机制:该系统具有多级保护机制,随着等级的提高,防护机制也将提高,用户需要找到防护机制的漏洞,采用不同的攻击方式去...
对于这种情况,可以通过设计抗裁剪的水印策略,如在图像边缘和中心都分布水印信息,增加攻击难度。 3. 噪声攻击:向图像添加噪声以干扰水印的检测。噪声可以是随机像素值的变化或其他形式的干扰。处理噪声通常需要...
使用ARP协议对主机的欺骗攻击的设计与实现毕业论文 本文档介绍了ARP协议的欺骗攻击的设计与实现,主要讲述了ARP协议的工作原理、漏洞分析、欺骗攻击的实现方式和防御方法。 首先,文档简要介绍了ARP协议的基本原理...
基于优先级循环队列防御SIP DOS攻击的方案设计,孙宏伟,辛阳,SIP(Session Initiation Protocol,即初始会话协议)是IETF提出的广泛用于IP电话信令协议。由于协议自身的开放性,SIP很容易遭到一个用户恶意
《幼儿攻击性行为观察记录表的设计》 幼儿期是孩子性格和社交技能形成的关键阶段,攻击性行为作为其中的一种负面表现,需要引起教育工作者的关注。设计一个有效的幼儿攻击性行为观察记录表,可以帮助教师深入了解...
日志分析对于网站管理员来说是一件非常重要的工作,但对海量的日志进行...文章介绍基于模式匹配的误用检测技术,并描述如何采用此技术设计、实现一种攻击监测系统,以定时对Web日志进行安全分析,提高网站安全管理的效率。