IIS防卫小框框DDOS攻击实例(反向代理)

昨天因为参加2012山东互联网站长大会,晚上回到家中差不多9点的样子,去简单吃了点儿东西后也很晚了,并没有按照惯例对网站进行更多的维护操作。看了下微博发现最火的一个事件是关于不雅视频,各种的最新的图片也相继被爆出,随即搜索并转载了其中网络上的几篇新闻文章和图片到淄博都市网论坛上来。

    最近几天公司官网和业务系统的注册页面频繁遭遇DDOS攻击,导致IIS应用程序池CPU占用率100%,访问网站出现503错误。下面总结一下应对措施。

今天起床后照常维护网站,发现同在阿里云主机上的淄博都市网和工控之家论坛都出现了无法访问的状况,通过并不是立即出现无法打开的小细节可以判断可能是网络或者带宽上的问题。遂立即登录阿里云后台查看状况,从网卡带宽曲线图中发现从早上8点开始有大量的出入网,而且2M的独立带宽已经被出网数据全部占满,想到的可能原因是服务器受攻击了。

    一、启用IIS的CPU监视功能

作为站长或者公司的网站的网管,什么最可怕?显然是网站受到的DDoS攻击。大家都有这样的经历,就是在访问某一公司网站或者论坛时,如果这个网站或者论坛流量比较大,访问的人比较多,打开页面的速度会比较慢,对不?!一般来说,访问的人越多,网站或论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就相当可观。

 

    对于低频率的DDOS可以采取这种方法。w3wp.exe是应用程序池的关联进程,当WEB访问量大时,w3wp.exe会占用大量的系统资源。在DDOS攻击下,很明显的现象就是w3wp.exe占用CPU达到100%,网站拒绝访问,这个时候远程登录服务器都很困难。针对这种情况,做如下优化:

CC攻击是DDoS(分布式拒绝服务)的一种,相比其它的DDoS攻击CC似乎更有技术含量一些。这种攻击你见不到虚假IP,见不到特别大的异常流量,但造成服务器无法进行正常连接,一条ADSL的普通用户足以挂掉一台高性能的Web服务器。由此可见其危害性,称其为”Web杀手”毫不为过。最让站长们忧虑的是这种攻击技术含量不是很高,利用工具和一些IP代理,一个初、中级的电脑水平的用户就能够实施DDoS攻击。

www.hj8828.com 1  
从早上8点开始服务器网卡有大量的出入网数据

    1、为IIS中的每个网站设置单独的应用程序池。

那么怎样保证这些网站服务器的安全呢?防护CC攻击大家有必要了解CC攻击的原理及如果发现CC攻击和对CC攻击的防范措施。

因为自己在服务器管理方面并不熟络,所以能想到的就是赶紧修改服务器登陆密码,重启服务器。当修改完密码重启服务器后网站依然无法打开,而且远程桌面也无法连接。此时感觉这事儿自己搞不定了,遂在后台向阿里技术提交了工单,很快收到回复。

    2、为每个应用程序池设置CPU监视功能:当w3wp.exe的CPU超过50%或更高时,自动杀死w3wp.exe进程,监视频率为1分钟。只要有访问请求进来,w3wp.exe便会重新启动,不影响用户访问。

一、CC攻击的原理

对于服务器带宽临时跑满的情况,阿里云技术给出的分析是A、网站规模太大导致的本身访问需求量大。B、网站页面的设计不合理,页面文件中含有大量图片音视频导致页面本身文件过大。C、网站内容被盗链或者提供数据下载,或者网站提供流媒体文件的播放服务。D、网遭受DDOS攻击或者被挂马而导致大量访问需求。

    www.hj8828.com 2

CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来攻击页面的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止。

根据阿里云提供技术分析我排除了AB两项原因,此时想起了网站的访问数据统计,当看到统计报表(如下图)后果断的排除服务器遭受DDOS攻击的可能性,一定是因为图片被盗链引起的,而且我也想到了是因为昨天晚上转载的不雅视频事件中图片被盗链引起的。

二、流量清洗

二、CC攻击的种类

www.hj8828.com 3

    当黑客发现低层次的DDOS已经不起作用时,便会加大攻击力度。一开始我们官网的平均并发数只有几千,后来加大到了平均1万6千个并发,最高7万个并发,这样上面的CPU监视功能就没有效果了,因为w3wp.exe重启后,会在极短时间内CPU重新达到100%。

www.hj8828.com,CC攻击的种类有三种,直接攻击,代理攻击,僵尸网络攻击。

此时网站访问故障的原因已经明了,接下来只要删除网站目录中昨天上传的图片即可基本解决问题。遂将服务器关闭半小时,然后打开,当后台显示开机成功的一瞬间迅速使用远程登录软件登录进服务器,关闭WEB服务,进入网站目录删除相关文件,重启WEB服务,后打开网站一切正常,值此网站访问故障恢复。

    当时监控到的并发连接数:

直接攻击主要针对有重要缺陷的WEB应用程序,一般说来是程序写的有问题的时候才会出现这种情况,比较少见。

www.hj8828.com 4

僵尸网络攻击有点类似于DDOS攻击了,从WEB应用程序层面上已经无法防御。

    CPU使用率和流量(带宽上限10M):

代理攻击:CC攻击者一般会操作一批代理服务器,比方说100个代理,然后每个代理同时发出10个请求,这样WEB服务器同时收到1000个并发请求的,并且在发出请求后,立刻断掉与代理的连接,避免代理返回的数据将本身的带宽堵死,而不能发动再次请求,这时WEB服务器会将响应这些请求的进程进行队列,数据库服务器也同样如此,这样一来,正常请求将会被排在很后被处理,就象本来你去食堂吃饭时,一般只有不到十个人在排队,今天前面却插了一千个人,那么轮到你的机会就很小很小了,这时就出现页面打开极其缓慢或者白屏。

www.hj8828.com 5

三、攻击症状

    幸运的是官网域名刚好在阿里云上做好了备案,我们迁移到阿里云上后,利用云盾的DDOS防护功能便会清洗掉大部分异常流量,CPU立马正常,官网满血复活了。www.hj8828.com 6

CC攻击有一定的隐蔽性,那如何确定服务器正在遭受或者曾经遭受CC攻击呢?我们可以通过以下三个方法来确定。

    这里贴一下云服务器的参数:

(1).命令行法

  配置: CPU2核、内存4GB 
  镜像: Windows Server 2008 R2 标准版 SP1 64位中文版 
  存储: 1块普通云盘(100GB) 
  网络: 带宽10Mbps(经典网络) 

一般遭受CC攻击时,Web服务器会出现80端口对外关闭的现象,因为这个端口已经被大量的垃圾数据堵塞了正常的连接被中止了。我们可以通过在命令行下输入命令netstat-an来查看,如果看到类似如下有大量显示雷同的连接记录基本就可以被CC攻击了:

    参数配置不高,但是能抵御高强度的DDOS攻击,这得益于阿里强大的技术实力,偷偷做个广告,嘿嘿。

  ……

    三、Nginx反向代理

  TCP
192.168.1.3:80 192.168.1.6:2205 SYN_RECEIVED 4

    但是黑客还经常攻击我们业务系统的注册页面,这次就没有这么幸运了,因为业务系统是在我们实体机房,这就要靠我们自己了。

  TCP
192.168.1.3:80 192.168.1.6: 2205 SYN_RECEIVED 4

    所以我们采取了前端Nginx反向代理、后端双IIS做负载均衡,利用Nginx强大的性能和HttpLimitReqModul模块限制某时间段内同一ip访问次数。Nginx的优化这里不提,下面只贴出相关配置:

  TCP
192.168.1.3:80 192.168.1.6: 2205 SYN_RECEIVED 4

    首先在nginx.conf的http配置段里增加如下内容:

  TCP
192.168.1.3:80 192.168.1.6: 2205 SYN_RECEIVED 4

map $http_x_forwarded_for $clientRealIp { 
  "" $remote_addr; 
  ~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr; 
  } 
  # 访问受限制后返回599 
  limit_req_status 599; 
  # 定义一个名为allips的limit_req_zone用来存储session,大小是100M内存, 
  # 以$clientRealIp 为key,限制平均每秒的请求为100个, 
  limit_req_zone $clientRealIp zone=allips:100m rate=100r/s; 

  TCP
192.168.1.3:80 192.168.1.6: 2205 SYN_RECEIVED 4

   
这里限制了同一IP每秒的请求数不超过100个,否则多余的请求会直接返回599错误。限制频率要根据实际情况进行配置,配置过低会影响正常的访问,出现页面显示不全等问题。

  ……

    然后编辑/etc/nginx/conf.d/upstream.conf:

其中”192.168.1.6″就是被用来代理攻击的主机的IP,”SYN_RECEIVED”是TCP连接状态标志,意思是”正在处于连接的初始同步状态”,表明无法建立握手应答处于等待状态。这就是攻击的特征,一般情况下这样的记录一般都会有很多条,表示来自不同的代理IP的攻击。