- 浏览: 2542683 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
http://www.hackbase.com/tech/2012-08-07/66718.html
笔者所在的网站在某一个晚上出现大范围的攻击,据事后统计而知,这次用了攻击方用了大约50万并发持续攻击网站,一看网站应用服务器的负载很高,怪不得很慢呢。接下来开始分析和解决问题。
一、 攻击描述
年初开始,网站应用服务器网卡流量普遍蹿升到100M以上,其中几台服务器网卡流量更是达到了204Mbps。随之带来的就是访问速度逐渐变慢,网络带宽数次被用完。
二、 攻击分析
1、 既然是网卡流出100M以上,那么一定有不正常的请求地址过来,接着服务器才会响应并发送到客户端。由此判断是请求的地址有异常
应用服务器受到攻击时的网卡流量图
网站应用服务器受到攻击时的负载现象
2、 分析web日志,可以发现很多IP同时在一秒钟对的多个地址发送GET请求,且返回的地址的流量在200k-300k之间。 试想一下,返回一个php地址,怎么会有200多k的流量,那么就一定是恶意的请求。看下面url中的 232347,这个232347,就是返回给客户端的流量。
123.232.102.228 - - [07/Mar/2012:14:24:23 +0800] "GET /forum-116-20.html HTTP/1.0" "200" 232347 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)" "-" 123.232.102.228 - - [07/Mar/2012:14:24:23 +0800] "GET /forum-1402-1.html HTTP/1.0" "200" 253872 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)" "-" 123.232.102.228 - - [07/Mar/2012:14:24:23 +0800] "GET /forum-63-1.html HTTP/1.0" "200" 118163 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)" "-" 123.232.102.228 - - [07/Mar/2012:14:24:23 +0800] "GET /forum-1342-1.html HTTP/1.0" "200" 235327 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)" "-" 123.232.102.228 - - [07/Mar/2012:14:24:23 +0800] "GET /forum.php?mod=forumdisplay&fid=58 HTTP/1.0" "200" 283377 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)" "-"
3、攻击主要针对php应用,php并发跟nginx差了好几个数量级 。这次攻击,平均每台php 每秒最高承受200个并发,绝大部分的针对列表页,直接对数据库造成影响。
四、解决方案
1 、防火墙封IP(不推荐)
用封IP的方式来阻止攻击源IP,是一种方法,起初,我是采用了这种方法,但是这样封IP,还需要到日志中去搜索。比较繁琐,而且效果不明现。
2 、Nginx被动防御(推荐)
还记得日志中的相同的user-agent的没有,nginx这次利用了user-agent来防御攻击。
在的nginx的配置文档的上面加入了
if ( $http_user_agent ~* "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.0\;\ .NET\ CLR\ 1.1.4322\)" ) { return 444; }
重启nginx后,nginx 在日志中检测到该类user-agent时,就会返回444 http 状态码,既请求失败。这样设置后,各应用服务器负载恢复到正常,网卡流量正常。
218.5.73.245 - - [07/Mar/2012:10:53:12 +0800] "GET /forum-222-1.html HTTP/1.0" 444 0 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)" 218.5.73.245 - - [07/Mar/2012:10:53:12 +0800] "GET /forum-222-1.html HTTP/1.0" 444 0 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)" 218.5.73.245 - - [07/Mar/2012:10:53:12 +0800] "GET /forum-222-1.html HTTP/1.0" 444 0 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
Nginx 处理攻击ip的结果
五、总结
1、本次nginx 在防小型ddos或者cc有自己的特色:处理请求高效,消耗资源极低。
缺点:需要分析日志,找到规律,比如:user-agent等等。
2、疑问?
Q: 有些同学要问了,这样屏蔽该类user-agent,造成误杀率有多大?
A: cc攻击者攻击时,都会有自己特殊的user-agent,屏蔽该类user-agent,不会造成额外的误杀。这是通过观察屏蔽日志的得出来的结论,服务器用上该类策略后,从来木有一个网友因为这事找过。
Q: 如果cc攻击软件伪装成正常的user-agent,这样的造成误杀多大?
A: 1):并不是所有的攻击者都具备修改user-agent的,相当部分的攻击者用的都是购买的攻击软件,如果要修改,则要付出金 钱的代价。这不是攻击者想要的结果。2):就算是伪装成了正常的user-agent,也会有自己的特点,可以从其共有特征来分析,比如来源地址是否相同 等等,这里就可以作为共同点来设置策略。在做策略时应注意观察nginx屏蔽日志中,是否其他的正常的请求也被屏蔽了?
124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" - 124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" - 124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" - 124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" - 124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" - 124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" - 124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" - 124.133.235.202 - - [08/Mar/2012:10:33:37 +0800] "GET / HTTP/1.1" 302 163 "/zhuanti/nzpp/zonghegr.jsp?group=2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" -
例如上面的日志,这次攻击者将user-agent伪装成正常的,再用user-agent做关键字,就会有部分误杀了。所以针对此类攻击,可以以来源地址作为关键字,nginx防护策略可以这么做,
if ($http__referer ~ * "/zhuanti/nzpp/zonghegr.jsp?group=2") { return 444; }
这样就不会有误杀了
3、经验教训
教训:去年的一次CC攻击,跟这次攻击有异曲同工之处,都是打的是php;那时我们在启用了黑洞防护墙后效果并不明显。
经验:当天晚上,我仔细分析了web日志,发现其user-agent,都是相同的,例如windows 5.0,跟正常的windows NT 5.0有本质区别,那可不可以在这上面做文章呢。带着这个问题,在网上搜索了nginx 防cc方面的资料,果然发现网上的高手的想法跟我的相同,都从其相同点user-agent入手,用nginx 来匹配该类user-agent,然后返回503 http状态码,当然这里我做了修改,返回了444状态码。所以,在吸取了上次的教训后,在今年网站遭受攻击时,我果断采用该条策略,结果证明效果很明 显。虽然cc攻击一直在持续,但是网站访问依然流畅。
作者简介:崔晓辉,网名coralzd,大众网系统管理员,精通网站系统架构、Unix技术。
发表评论
-
设置sudo为不需要密码
2015-04-17 09:04 10516有时候我们只需要执 ... -
haproxy 安装配置和负载实例
2015-03-27 11:49 11535一、环境说明实验环境 OS CentOS5.4 192.1 ... -
/dev/mapper/VolGroup00-LogVol00 100% 如何处理
2015-03-03 10:51 8218服务器磁盘跑满了, 命令查看 如下 [root@lo ... -
Tsar开源:淘宝内部大量使用的系统监控工具
2014-08-07 09:51 973Tsar是淘宝的一个用来收集服务器系统和应用信息的采集报告 ... -
Linux运维常用命令 (转载)
2013-01-31 10:23 25291 删除0字节文件find-type f - ... -
linux恢复 rm -rf 删除的文件:extundelete
2013-01-24 15:47 8914http://blog.csdn.net/pang6013 ... -
网站排障分析常用的命令
2013-01-21 18:17 1400------------------------------- ... -
迁移vmware服务器后Device eth0 does not seem to be present
2013-01-21 10:58 2251用VMware 安装 linux 6.0 ... -
LoadRunner如何监控Linux系统资源 : rpc.rstatd
2012-12-17 14:49 10302一 简述:LoadRunner监控Linux资源时弹出如下错误 ... -
僵尸Z进程和D进程
2012-12-10 16:47 13154-------------- 1 关于ZOMBIE进 ... -
Unix操作系统硬链接与符号链接的区别
2012-12-10 16:08 2023Unix操作系统有很多值得 ... -
nagios配置参数详解
2012-12-04 14:12 9447# Nagios return codes#定 ... -
nagios自定义监控nginx php和ip_conn
2012-12-03 17:57 3170自定义ip_conn.sh :http://zhume ... -
【汇总】shell show收藏
2012-11-29 14:03 1288================== shell从文本取对应的 ... -
Kickstart+PXE+DHCP+TFTP+NFS自动安装Centos5
2012-11-29 11:34 1606http://5ydycm.blog.51cto.com/11 ... -
haproxy+keepalived高可用负载均衡(七层)
2012-11-29 10:36 4009HAproxy是一款基于TCP( ... -
LVS+Keepalived
2012-11-29 10:10 1738http://www.linuxvirtualserver.o ... -
haproxy & LVS*(keepalived和heartbeat) & ng的比较
2012-11-29 10:04 7598http://network.51cto.com/art/ ... -
运维架构师-并不遥远的彼岸
2012-11-28 17:45 1737在百度里搜索运维架构师,你会发现招聘的职位还不少并且月薪、年 ... -
puppet模块汇总
2012-11-21 17:08 3031在磁盘上,一个模块对应一个特殊的目录结构: MODULE_ ...
相关推荐
6. **DDoS防护服务**:利用专门的DDoS防护服务提供商,他们有更强大的硬件设施和算法来抵御大规模攻击。 **网络基础知识** 网络基础知识是理解DOS攻击及防御策略的基础,包括网络协议、网络层次模型(如OSI七层...
整体而言,SDN下基于深度学习混合模型的DDoS攻击检测与防御为网络安全领域带来了一次技术革新,为网络攻击检测和防御提供了新的方向和方法。这项研究不仅促进了深度学习和网络安全交叉领域的发展,也为相关专业研究...
DDoS攻击,即分布式拒绝服务攻击,是一种基于拒绝服务(DoS)的特殊形式,通过分布式的、协同的大规模攻击,利用受控机器群同时向目标发起攻击,其破坏性和难以防御的特点使其成为了网络安全领域的一大挑战。...
最后,监控网络流量和日志,及时发现并响应攻击,以及与其他机构合作,共享威胁情报,共同抵御大规模的DDoS攻击。 总的来说,理解和防范DDoS攻击需要深入了解网络协议、攻击手段以及系统资源管理,通过综合防御策略...
- **Prolexic帮助某亚洲电子商务网站缓解了峰值约为45Gbps的DDoS攻击**:这表明即使是在2012年,也有针对大型电子商务平台的大规模攻击行为。 - **美团网、米奇网、WordPress、劲舞团游戏等遭受过DDoS攻击**:这些...
这就需要引入一种全新的技术——入侵防御系统(Intrusion Prevention System, IPS)防火墙是一次性的防护手段,根据防火墙的策略规则(IP地址,端口等)只允许通过策略规则所允许的数据包,但它不能发现和阻断隐藏在...
思科公司在2018年发布的这份网络安全年度报告,为我们提供了一系列有关企业网络安全状况和企业对攻击防御效力看法的调查结果。报告详细地探讨了网络攻击的形势、攻击种类以及如何应对未来可能出现的威胁。 首先,...
传统防火墙在防御DDoS攻击方面存在明显不足,尤其是在处理大规模攻击流量时。 ##### 5.5 入侵检测 入侵检测系统能够识别异常流量,但对于缓解攻击效果有限。 #### 四、DDoS防护的基本要求 有效的DDoS防护应满足...
传统的防护CC攻击的方法包括限制每个IP地址的连接数,但这在面对大规模IP池的攻击时效果有限;另一种是限制代理访问,通过识别HTTP头中的X-FORWARDED-FOR字段,但这种方法并不能完全阻止不携带该字段或使用无标识...
- **与ISP合作**:与互联网服务提供商合作,共同应对大规模攻击。 - **法律手段**:对于恶意攻击行为,可以通过法律途径追究责任。 #### 五、案例分析 ##### 5.1 典型案例 - **GitHub遭受大规模DDoS攻击**:2018年...
- **僵尸网络**:攻击者利用物联网(IoT)设备建立大规模僵尸网络,发动记录级别的DDoS攻击。 - **零日漏洞**:利用协议层面的未知漏洞进行攻击。 - **攻击频率与复杂度**:全年DDoS攻击更加频繁、持续时间更长、...
企业防御型战略是企业为了保护自身免受竞争者攻击,维持市场份额,以及抵御市场变化和外部冲击等风险而采取的一系列策略。本报告从PVC弹性地板行业的角度出发,对防御型战略进行了深入研究。 #### 研究原则与方法 ...
网络安全是信息技术领域不可或缺的重要部分,而分布式拒绝服务(Distributed Denial of Service, DDoS)攻击则是网络安全的一大威胁。DDoS攻击通过大量的恶意请求,使目标服务器过载,从而无法正常提供服务。本文将...
文章提到的中心从2006年开始进行的大规模分布式蜜网技术研究及应用工作,是对上述技术领域的一次全面尝试和实践。这不仅代表了蜜罐技术研究和应用的一个重要方向,也为网络安全防护工作提供了新的思路和工具。 通过...
《基于免疫原理的大规模分布式入侵检测模型》探讨了如何利用生物免疫原理来构建适应大规模分布式网络环境的入侵检测系统。随着网络规模的扩大和结构的复杂化,传统的入侵检测系统在应对安全挑战时显得力不从心。生物...
本文作者团队使用OPNET进行了一次网络攻击仿真,重点研究了DoS攻击对网络性能的影响,并评估了一种新型入侵检测算法的表现。通过对仿真过程中收集的数据进行分析,研究人员得出了以下结论: - DoS攻击能够显著降低...
CSRF(跨站请求伪造)攻击是Web安全领域的一个重要话题,它允许攻击者通过诱使用户在不知情的情况下执行非预期的操作来滥用用户在某个网站上的权限。这种攻击方式通常涉及两个网站:一个受信任的网站(Web A)和一个...
这是第一次公开确认的对电力基础设施的大规模网络攻击,标志着网络战已经延伸至关键基础设施领域。 7. 安全防护措施:这些事件提醒我们,工业控制系统必须加强网络安全防护。这包括定期更新和打补丁,隔离关键系统...
文档主要围绕一次针对特定游戏业务的反射攻击案例进行深入分析,详细阐释了攻击手法、分析过程、攻击复现,以及如何通过安全防护措施来应对这类攻击。 首先,攻击者在针对某款游戏业务发起攻击时,使用了多种手段,...