一次网站被攻击后分析与防御

晚上23点左右收到大量的监控报警,公司网站直接不能访问了,立即登录服务器,直接top看到情况如下:

发现负载都达到了800了,机器眼看就要爆了,首先先停了mysql,发现负载有点下降,联系了开发同事一同查看,因为今天新上线了一些代码,可能是新上代码的问题,随后看到负载依然没降,然后将php和nginx都重启了,虽然短暂的降了一些,过一会立马负载又起来了,这时看了下nginx日志,看是不是用户访问导致的问题,结果一看就发现问题了,如下:

30分钟发了60w+的请求。

发现这个ip不停的发请求,很明显,是被攻击了,临时将这个ip在nginx中deny掉,直接返回给它503,配置如下:在server中加入

负载也慢慢降下来了,服务也正常了,当时太晚了,洗洗就睡了,结果第二天早上一来又发现网站打不开了,直接看nginx日志,攻击者换了一个ip,跟昨晚的现象一样,这次直接在源头把他干掉了,就是添加iptables,如下:

将攻击的ip全部写入iptables里面,然后联系机房看能不能做策略协助解决这种CC攻击,最后机房那边也将这些ip给封了,但是攻击者在换ip怎么办?不可能他换一个我加一条把,看来只能发大招了,写了个iptables脚本,如下:

统计tcp连接,同一ip超过500次tcp连接的肯定就是攻击者的ip了,正常用户也不可能一下去开500个窗口去访问我的网站吧,然后将这个ip直接在iptables上面干掉,现在好了,问题解决了,这种CC攻击有一个特点就是用的源ip基本都是固定的,DDOS有些可能是用不同原ip进行攻击,那么这种防御就显得有些吃力了。那遇到不同源ip攻击怎么防御呢?

首先要联系机房,一般机房都有监控和防御设备,让机房帮忙解决一些问题可能更有效,

不能在iptable上面去防御,就只能通过nginx去防御了,让nginx去识别哪些是攻击者,哪些是真正的用户?其实nginx有2个模块:ngx_http_limit_conn_module和ngx_http_limit_req_module 可以参考官方文档:

http://nginx.org/cn/docs/http/ngx_http_limit_req_module.html

http://nginx.org/cn/docs/http/ngx_http_limit_conn_module.html

首先在http中定义,如下:
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

然后到你需要限制的目录下面,server段中,一般就是php请求,如下:

location ~* ^/(.*)\.php?$ {

limit_conn addr 3;
limit_req zone=one burst=2 nodelay;

fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $host_path/$fastcgi_script_name;
include fastcgi_params;
}

应用这2条规则后,只要需要执行php脚本的这些页面同一个IP只许建立3个连接,并且每秒只能有1个请求(突发请求可以达到2个)。
虽然这样的规则一般来说对正常的用户不会产生影响(极少有人在1秒内打开3个页面),但是为了防止影响那些手快的用户访问,可以在nginx中自定义503页面,503页面对用户进行提示,然后自动刷新,这个参数可以根据自己的情况进行更改,这样不管攻击者是多个ip还是单个ip攻击都可以防御到.

如果在nginx日志中能找到攻击者特有的代码,这样就更容易防御,
比如User-agent。下面的是某一次CC攻击时的User-agent
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE 3.01)Cache-Control: no-store, must-revalidate
几乎没有正常的浏览器会在User-agent中带上“must-revalidate”这样的关键字。所以我们可以以这个为特征进行过滤,将User-agent中带有“must-revalidate”的请求全部拒绝访问:

if ($http_user_agent ~ must-revalidate) {
return 403;
}

原文地址:http://www.myjishu.com/?p=240

时间: 2024-10-12 01:21:21

一次网站被攻击后分析与防御的相关文章

网站被攻击怎么办

随着互联网的发展,越来越多的人们开始认识到网络宣传的优越性.大大小小的网站层出不穷.然而随着网站数量的增加,出现的问题也大大增多.同行之间的竞争.也随之体现在了网络之间.一些不法分子也逐渐转移阵地到网络上来谋取利益.同行之间往往雇佣黑客打压对手攻击对方网站,甚至有些人故意攻击别人网站索要保护费.不给钱就攻击你,让你网站瘫痪.对于这类事情,网站主往往是求助无门干着急,不得已妥协. 各位站长在做站的工程中应该都会遇到类似的问题,虽然我们勤勤恳恳的做自己的站,但是突然有一天会发现我们的网站突然就被人黑

维护被攻击后的服务器的方法

如果是流量攻击可以采用软件加cdn结合的方式来进行防护:如果是洪水级别的流量攻击,建议购买硬件防火墙,软硬件结合来进行防御. 当服务器被黑后,你怎么办?要如何进行服务器维护呢?首先,我们可以分析一下,对网络服务器的恶意网络行为包括两个方面:一是恶意的攻击行为,如拒绝服务攻击,网络病毒等等,这些行为旨在消耗服务器资源,影响服务器的正常运作,甚至服务器所在网络的瘫痪:另外一个就是恶意的入侵行为,这种行为更是会导致服务器敏感信息泄露,入侵者更是可以为所欲为,肆意破坏服务器.所以我们要保证网络服务器的安

网站被攻击了怎么办?3种网站攻击的解决办法

随着互联网的发展,越来越多的人们开始认识到网络宣传的优越性.大大小小的网站层出不穷.然而随着网站数量的增加,出现的问题也大大增多.同行之间的竞争.也随之体现在了网络之间.一些不法分子也逐渐转移阵地到网络上来谋取利益.同行之间往往雇佣黑客打压对手攻击对方网站,甚至有些人故意攻击别人网站索要保护费.不给钱就攻击你,让你网站瘫痪.对于这类事情,网站主往往是求助无门干着急,不得已妥协. 各位站长在做站的工程中应该都会遇到类似的问题,虽然我们勤勤恳恳的做自己的站,但是突然有一天会发现我们的网站突然就被人黑

网站被攻击的常见方式和解决办法

这真的是血的教训.尤其是对于做网站的朋友来说. 我只说干货吧. 1.什么站容易被黑? 常年不更新的,用的discuz的,织梦的.有一定权重的. discuz被人攻击的原因是,发广告贴,如果你不经常管理,软件会无时无刻的在你的论坛上发帖,几天下去就会有很大的数据库文件,这个时候怎么办呢. 清空论坛的帖子.直接在数据库里.没别的办法,然后注册发帖机制修改一下.但是会对seo有很大的影响,最应该做的是就是去百度工具里提交改版. 2.数据库密码和服务器安全防护措施不到位. 服务器的内存小的话,就用360

关于数字证书理解的简单整理以及12306网站证书简单分析

首先简单理解一下什么是数字证书.这里是一篇英文文档,描述的很形象.形象的描述了什么是公钥,什么是私钥,如果确保数字证书的可靠性等. 下面,我们看一个应用"数字证书"的实例:https协议.这个协议主要用于网页加密. 一般我们电脑的浏览器中都有一些受信任的证书颁发机构列表, 里边存储的都是一些机构的信息.这些机构都是权威的.当然可以通过安装软件的方式,来增加证书颁发机构,比如中国银行的根证书软件,阿里巴巴的根证书软件.默认我们认为这些软件都是从官网下载的,是绝对的没被篡改的,可靠的.简单

python Pycurl 库 —— 实现对网站抓包分析

经常使用基调网络的同学,可能对基调网络对页面元素的性能展示感觉很好.它可以做到对一条URL做详细的检测,包括:阻塞时间.DNS解析时间.建立连接时间.SSL握手时间.发出请求时间.首包时间等. 其实,我们也可以做到.比如Python pycurl 库就可以做到对数据的收集,然后可以对收集的数据写入redis或者Mysql.最后前端使用echars通过图形的形式进行展示出来. echars是百度一个开源项目,功能很强大(项目URL:http://echarts.baidu.com)可以将数据通过各

公司网站故障原因分析

1.17:20分左右部分页面出现mysql 报错. 此时带宽情况如图. 2.流量监控显示101.66.246.22占用了大量带宽,导致带宽爆满. 封锁该ip流量下降,开启该ip流量立马上升. 3.导出近十分钟日志发现如下:(该ip访问的文件) 101.66.246.22 - - [13/May/2014:17:40:09 +0800] "GET /sso_server/uploadfile/avatar/1/10/9041/web.tar.gz HTTP/1.1" 206 102623

新辰:关于个人网站安全问题的分析及对策探讨

新辰从实践出发,依靠自己建网站的经验以及对个人站长(尤其是论坛,博客等)的研究,并参考各大网站的各种建站教程以及网站SEO过程.依次举多个个人论坛网站实例,并加入自己的见解进行分析.对于个人论坛网站的安全问题,是一个个人站长必须勇敢去面对并进行对抗的过程.在此,新辰特提出对待其的方法. 经过新辰市场调查,目前市场上有50%的网站使用的都是互联网公开模版网站,从而导致有近45%的网站成为别人的赚钱工具,公开源码是非常不安全,从中找取漏洞,利用站点进行谋取暴利. 以上数据分别表明了: 1,现在的个人

网站被攻击选择哪里的高防服务器比较好呢

网站攻击正常来说是可以分为3类,分别为CC攻击.DDOS流量攻击.为了防御网站被攻击选择哪里的服务器呢?韩国高防服务器20G 200G的超高防御,可防CC攻击.DDOS流量攻击 联系 QQ80589423 联邦莹莹 CC攻击是怎么做到的? 相对来说,这种攻击的危害大一些.主机空间都有一个参数 IIS 连接数,当被访问网站超出IIS 连接数时,网站就会出现Service Unavailable .攻击者就是利用被控制的机器不断地向被攻击网站发送访问请求,迫使IIS 连接数超出限制,当CPU 资源或