• HTTP请求的拦截


    申明:闲暇学习阮一峰老师的博客(http://www.ruanyifeng.com/blog/2018/06/ddos.html),所以想做简单的总结,方便以后查看。

    HTTP 请求的特征一般有两种:IP 地址和 User Agent 字段。比如,恶意请求都是从某个 IP 段发出的,那么把这个 IP 段封掉就行了。或者,它们的 User Agent 字段有特征(包含某个特定的词语),那就把带有这个词语的请求拦截。

    拦截可以在三个层次做:

    (1)专用硬件

    Web 服务器的前面可以架设硬件防火墙,专门过滤请求。这种效果最好,但是价格也最贵。

    (2)本机防火墙

    操作系统都带有软件防火墙,Linux 服务器一般使用 iptables。比如,拦截 IP 地址1.2.3.4的请求,可以执行下面的命令

    
    $ iptables -A INPUT -s 1.2.3.4 -j DROP
    

    iptables 比较复杂,我也不太会用。它对服务器性能有一定影响,也防不住大型攻击。

    (3)Web 服务器

    Web 服务器也可以过滤请求。拦截 IP 地址1.2.3.4,nginx 的写法如下。

    
    location / {
      deny 1.2.3.4;
    }
    

    Apache 的写法是在.htaccess文件里面,加上下面一段。

    
    <RequireAll>
        Require all granted
        Require not ip 1.2.3.4
    </RequireAll>
    

    如果想要更精确的控制(比如自动识别并拦截那些频繁请求的 IP 地址),就要用到 WAF

    Web 服务器的拦截非常消耗性能,尤其是 Apache。稍微大一点的攻击,这种方法就没用了。

    CDN                  https://www.cloudflare.com/zh-cn/

    指的是网站的静态内容分发到多个服务器,用户就近访问,提高速度。因此,CDN 也是带宽扩容的一种方法,可以用来防御 DDOS 攻击。

    网站内容存放在源服务器,CDN 上面是内容的缓存。用户只允许访问 CDN,如果内容不在 CDN 上,CDN 再向源服务器发出请求。这样的话,只要 CDN 够大,就可以抵御很大的攻击。不过,这种方法有一个前提,网站的大部分内容必须可以静态缓存。对于动态内容为主的网站(比如论坛),就要想别的办法,尽量减少用户对动态数据的请求。

    各大云服务商提供的高防 IP,背后也是这样做的:网站域名指向高防 IP,它提供一个缓冲层,清洗流量,并对源服务器的内容进行缓存。

    这里有一个关键点,一旦上了 CDN,千万不要泄露源服务器的 IP 地址,否则攻击者可以绕过 CDN 直接攻击源服务器,前面的努力都白费。

    源服务器前面有 CDN。如果攻击域名,CDN 可以挡住;如果直接攻击源服务器,买弹性 IP ,可以动态挂载主机实例,受到攻击就换一个地址。

  • 相关阅读:
    【BZOJ1046】[HAOI2007]上升序列
    【BZOJ1045】[HAOI2008]糖果传递
    【BZOJ1044】[HAOI2008]木棍分割
    【BZOJ1041】[HAOI2008]圆上的整点
    【LG2257】YY的GCD
    【BZOJ1018】[SHOI2008]堵塞的交通
    【LG4735】最大异或和
    【POJ2182】Lost Cows
    【POJ2482】Stars in Your Window
    【POJ1733】Parity game
  • 原文地址:https://www.cnblogs.com/libin123/p/10331424.html
Copyright © 2020-2023  润新知