zoukankan      html  css  js  c++  java
  • 记一次被DDOS,及流量清理方法

    起因

        最近和几个志同道合的朋友们在搞一个加速器的项目,目前是3台服务器,其中一个

        用于用户登录的储存用户信息,如果这个服务器崩了,用户将会无法登录。

        服务器都是阿里云的,百因必有果,这里的“因”就是做这类的同行,这里的“果”也就

        是住服务器遭受了DDOS。

    经过

        今天【2020/3/16】有用户反馈软件登录不上去(在6点多的时候),而此时的我正

        在小破站愉快的刷着鬼畜区,于是立马坐直。

        我先看的另外两台服务器,用一下命令可以判断服务器是否被攻击。

    netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

        看了一下基本没什么问题,于是猛然想到主服务器崩了才会无法登录,于是ssh连

        接主服务器,发现连接不上,我们那几个人的群里说流量激增,我就想:是不是攻

        击的行为触犯了阿里云的“黑洞”机制,看了一下,触发的阀值是500MB(有点小,可

        能是服务器配置的过,只有2核以上处理器才可以有1G以上,再加上信誉额度给你

        点),2.5小时无攻击的情况下才能解禁。没得办法,也没得钱去换高防IP。

        这里说一下,正常的流量清洗可以通过换高防IP,CDN等方式,如果再大了(比如

        1TB)就乖乖去做分布式吧。

        如果是攻击导致连接不上ssh,那就进阿里云把所有端口先暂时关闭,然后放行ssh

        端口(默认22),不管怎么样,先连上机子再说

        等到2.5小时过后,服务器就恢复了,貌似也没有新的攻击,于是赶紧登录主机部署

        流量攻击的防御策略,如下:

    1、安装DDoS deflate
    wget http://www.inetbase.com/scripts/ddos/install.sh //下载DDoS deflate
    chmod 0700 install.sh //添加权限
    ./install.sh //执行
    
    2、配置DDoS deflate
    
    下面是DDoS deflate的默认配置位于/usr/local/ddos/ddos.conf ,内容如下:
    
    ##### Paths of the script and other files
    PROGDIR="/usr/local/ddos"
    PROG="/usr/local/ddos/ddos.sh"
    IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list" //IP地址白名单
    CRON="/etc/cron.d/ddos.cron" //定时执行程序
    APF="/etc/apf/apf"
    IPT="/sbin/iptables"
    
    ##### frequency in minutes for running the script
    ##### Caution: Every time this setting is changed, run the script with --cron
    ##### option so that the new frequency takes effect
    FREQ=1 //检查时间间隔,默认1分钟
    
    ##### How many connections define a bad IP? Indicate that below.
    NO_OF_CONNECTIONS=150 //最大连接数,超过这个数IP就会被屏蔽,一般默认即可
    
    ##### APF_BAN=1 (Make sure your APF version is atleast 0.96)
    ##### APF_BAN=0 (Uses iptables for banning ips instead of APF)
    APF_BAN=1 //使用APF还是iptables。推荐使用iptables,将APF_BAN的值改为0即可。
    
    ##### KILL=0 (Bad IPs are'nt banned, good for interactive execution of script)
    ##### KILL=1 (Recommended setting)
    KILL=1 //是否屏蔽IP,默认即可
    
    ##### An email is sent to the following address when an IP is banned.
    ##### Blank would suppress sending of mails
    EMAIL_TO="root" //当IP被屏蔽时给指定邮箱发送邮件,推荐使用,换成自己的邮箱即可
    
    ##### Number of seconds the banned ip should remain in blacklist.
    BAN_PERIOD=600 //禁用IP时间,默认600秒,可根据情况调整
    
    如果 /usr/local/ddos/ddos.sh 统计不正确,可能是启用ipv6的缘故
    
    # vi /usr/local/ddos/ddos.sh

        先这样防御着,硬防还是有效,有钱的尽量去购买硬件防火墙,注:Linux的iptables不能自动屏蔽,只能手动屏蔽。

  • 相关阅读:
    模拟登陆江西理工大学教务系统
    python3爬虫 -----华东交大校园新闻爬取与数据分析
    以selenium模拟登陆12306
    PAT (Basic Level) Practice (中文)1076 Wifi密码 (15 分)
    PAT (Basic Level) Practice (中文)1047 编程团体赛 (20 分)
    PAT (Basic Level) Practice (中文)1029 旧键盘 (20 分)
    PAT (Basic Level) Practice (中文)1016 部分A+B (15 分)
    PAT (Basic Level) Practice (中文)1031 查验身份证 (15 分)
    PAT (Basic Level) Practice (中文)1041 考试座位号 (15 分)
    PAT (Basic Level) Practice (中文)1037 在霍格沃茨找零钱 (20 分)
  • 原文地址:https://www.cnblogs.com/bentok/p/12506981.html
Copyright © 2011-2022 走看看