V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Robias
V2EX  ›  信息安全

网站被大规模 CC 攻击,请问有没有什么好的解决方案?

  •  2
     
  •   Robias · 2019-09-20 09:16:54 +08:00 · 14282 次点击
    这是一个创建于 1651 天前的主题,其中的信息可能已经有所发展或是发生改变。

    机器在香港,未备案,从上周末开始,一直持续被大规模攻击,目前使用的是 cloudflare 解析,能抵御部分攻击,但是攻击量大的时候还是无法抵御,导致服务器 CPU 内存全部被占满。

    服务器是 nginx,设置了各种防护,也开启了宝塔防火墙,禁止国外 IP 等等,都没有太大的用处。

    现在在 cloudflare 上开启了 CDN 和挑战页,但是这样下去,网站经常打不开,排名也快掉完了。

    咨询了几家国内的做 CDN 的,据说都是无视一切 CC 攻击,但是要价一个月 5K-5W 不等。

    请问是否有什么其他的解决方案呢?谢谢各位了!

    CF7 天截图 CF24 小时截图

    89 条回复    2021-09-04 21:26:30 +08:00
    cst4you
        1
    cst4you  
       2019-09-20 09:28:31 +08:00
    nginx cookie
    frozenway
        2
    frozenway  
       2019-09-20 09:33:51 +08:00
    CC 攻击基本都有特征,直接封就是了
    ivmm
        3
    ivmm  
       2019-09-20 09:40:49 +08:00
    阿里云的 WAF,按量,不过容易产生添加账单。 如果包月个一月其实价格也还好
    Robias
        4
    Robias  
    OP
       2019-09-20 09:40:57 +08:00
    @frozenway 我已经开启了禁止国外 IP 访问,但是还是能够有大量的国外 IP 来进行攻击,宝塔设置了规则,自动封禁,IP 太多了,封不完
    Robias
        5
    Robias  
    OP
       2019-09-20 09:41:12 +08:00
    @cst4you 请问有详细的教程吗,谢谢
    Robias
        6
    Robias  
    OP
       2019-09-20 09:41:28 +08:00
    @ivmm 未备案的应该不能用阿里云吧?
    DonnyChao
        7
    DonnyChao  
       2019-09-20 09:42:51 +08:00 via Android
    DNS 把国外访问解析给 8.8.8.8 ? 国内访问保持正常解析。
    Robias
        8
    Robias  
    OP
       2019-09-20 09:45:33 +08:00
    @DonnyChao 这个好像还真不行,CF 不支持设置区域,上周日晚攻击实在太大(每小时 2TB 左右),我把所有的解析都解析到了 8.8.8.8,攻击确实停了一会儿,但是这样网站也无法打开,过了一段时间解析换回来后,又开始攻击。
    ivmm
        9
    ivmm  
       2019-09-20 09:46:12 +08:00
    @Robias 有海外版的
    Robias
        10
    Robias  
    OP
       2019-09-20 09:47:22 +08:00
    @ivmm 我看了一下,海外版最低购买 3 个月,1.86 万。
    frozenway
        11
    frozenway  
       2019-09-20 09:54:42 +08:00
    封 IP 是错误的做法,封不完。封 user——agent
    tqyq88
        12
    tqyq88  
       2019-09-20 09:57:03 +08:00
    好奇,请问你是什么站,为啥被盯上
    xiaoyangsa
        13
    xiaoyangsa  
       2019-09-20 10:07:53 +08:00
    这个 lz 该用的都用了,只能砸钱了嘛。。
    xiaoyangsa
        14
    xiaoyangsa  
       2019-09-20 10:09:00 +08:00
    @xiaoyangsa 这里先确认下是不是服务器 ip 漏了,可以换个服务器直接用 cloudflare 再试下
    taotaodaddy
        15
    taotaodaddy  
       2019-09-20 10:13:01 +08:00 via Android
    战略性马克
    zqyisasd
        16
    zqyisasd  
       2019-09-20 10:22:56 +08:00
    不知道 奇安信网站卫士 和 知道创宇 能满足需求吗
    Robias
        17
    Robias  
    OP
       2019-09-20 10:25:33 +08:00
    @xiaoyangsa 没有,攻击的目标是域名,最早是 index.php ,后来我把这个文件改名了,然后停了一段时间,在之后就开始攻击首页。CF 里换了解析 IP,就没事了。
    laminux29
        18
    laminux29  
       2019-09-20 10:26:53 +08:00   ❤️ 12
    网站攻击的本质,是攻击者以 n 的代价,让防御者付出 m 的代价。其中 m 远大于 n,m 甚至比 n 大几个数量级。通俗来说,就是攻击者付出 1 元钱,防御者需要付出 10 元甚至百元。

    大公司一般的防御做法是:

    1.核心机房买高端防御设备。

    2.在各地做好 cdn。

    3.一旦有来自某个地域的攻击,就给当地的流量阈值下调,这样系统就不会因为来自一个地域的攻击而崩溃。

    4.如果有同时来自不同地域攻击,这种基本上是大黑客或大公司所为,国内报网警。

    小公司或个人来做防御,基本没辙。就算买了云服务,耗费的资金不会低,而且防御效果还不好。

    楼主这种情况,如果是我遇到,我会做两手措施:

    1.设计一套基于邮件的业务流,在这种断网的特殊情况下,业务全走邮件。这种方案的本质是把防御成本转嫁给邮件服务提供商,我方付出的资金成本会非常小,最多就只需要买一个收费 vip 邮箱就行了。

    2.屏蔽所有国外 IP,屏蔽时间以 1 小时递增。比如,屏蔽 1 小时,无效就屏蔽 2 小时,再无效就屏蔽 3 小时....
    utfqvfhpyygy
        19
    utfqvfhpyygy  
       2019-09-20 10:32:06 +08:00
    攻击固定地址,那先直接封掉这个地址,对你全站影响不大吧?
    或者直接改成静态内容。他更换目标地址也麻烦把
    utfqvfhpyygy
        20
    utfqvfhpyygy  
       2019-09-20 10:35:50 +08:00
    @Robias 能加 v 聊下吗?我对你这个问题很感兴趣
    Robias
        21
    Robias  
    OP
       2019-09-20 10:43:08 +08:00
    @utfqvfhpyygy 他之前攻击 Index.php 这个文件,我把这个改掉之后,他停止了大约 5 个小时,估计是找不到方向了。但是这之后,就开始攻击域名了,也就是 www.aaa.com 了,不再攻击某个文件了。
    Robias
        22
    Robias  
    OP
       2019-09-20 10:44:29 +08:00
    @laminux29 老哥,我这个站还真没法走邮件,而且您说的第二个屏蔽国外 IP 这个,我都已经屏蔽,并且封禁是一个月,但是对方应该是用代理 IP,总是有源源不断的国外+国内 IP,封不完啊。现在就两条路,要么花费高价钱买高防 CDN,要么关站。
    utfqvfhpyygy
        23
    utfqvfhpyygy  
       2019-09-20 10:49:48 +08:00
    攻击域名,会造成域名解析问题,还是攻击你 nginx 的默认文件?请求有没有什么信息可以分析的?
    Robias
        24
    Robias  
    OP
       2019-09-20 10:51:52 +08:00
    mywaiting
        25
    mywaiting  
       2019-09-20 10:53:23 +08:00
    DDoS 都是堆钱的活

    2TB 不是特别大的量,静态化吧,开多几台 nginx 在前端缓存,启用 nginx testcookie,cf CDN proxy 同时设置 CNAME 多个后端,抗下来不是大问题

    精细化的 CC,其实没法防御的,特别是手里有大量小鸡的黑阔,打铁还需自身硬啊
    Robias
        26
    Robias  
    OP
       2019-09-20 10:53:30 +08:00
    Robias
        27
    Robias  
    OP
       2019-09-20 10:55:50 +08:00
    @mywaiting orz,已经静态了,但是不太会 nginx 的缓存和 cookie
    utfqvfhpyygy
        28
    utfqvfhpyygy  
       2019-09-20 10:56:05 +08:00
    @Robias 那就是访问你服务器的默认首页文件,这个文件是 php 还是静态文件?
    utfqvfhpyygy
        29
    utfqvfhpyygy  
       2019-09-20 10:57:07 +08:00
    改一下 nginx 的配置就可以,你可以贴一下配置
    expires 90d;
    Xusually
        30
    Xusually  
       2019-09-20 10:57:19 +08:00
    1、分析日志,根据 User-Agent 封禁。
    2、Nginx cookie,设定 ip 相关 cookie,校验不通过拒绝或者跳转。
    3、检查 ip 规则,忽略一些 x-forwarded-for 之类的代理 ip 穿透。
    4、不管怎样,源站 ip 可以多换几次。
    5、还是多分析日志吧。多少有规律的。
    utfqvfhpyygy
        31
    utfqvfhpyygy  
       2019-09-20 10:58:09 +08:00
    静态文件也有带宽问题,你先找出访问的是哪个文件,再优化文件
    heheman
        32
    heheman  
       2019-09-20 11:04:58 +08:00
    @Robias 我 qq: NDM5OTU5NDQ=
    可以来试试
    love
        33
    love  
       2019-09-20 11:05:15 +08:00   ❤️ 9
    解析到国务院 ip 来个同归于尽 :)
    kooze
        34
    kooze  
       2019-09-20 11:09:32 +08:00
    大哥,撞衫了。
    gam2046
        35
    gam2046  
       2019-09-20 11:17:09 +08:00
    用了 CF,那源站直接拒绝掉除了 CF 以外的所有请求就可以了。
    https://www.cloudflare.com/ips/

    并且可以开启 SSL 双向验证,验证客户端不是 CF 也一律拒绝。
    https://support.cloudflare.com/hc/zh-cn/articles/204899617
    lifeintools
        36
    lifeintools  
       2019-09-20 11:17:37 +08:00
    @love 真这样做了 会怎么样。。。
    love
        37
    love  
       2019-09-20 11:19:30 +08:00
    @lifeintools 对方能不能抓到另说,你大概率跑不了
    Robias
        38
    Robias  
    OP
       2019-09-20 11:23:49 +08:00
    @utfqvfhpyygy 默认文件是 index.html
    ArcticL
        39
    ArcticL  
       2019-09-20 11:25:20 +08:00
    CC 攻击规模较大的情况下是比较难办的,哪怕你做了限频,在请求聚类的这段时间只要量大一样能打挂你。如果网站是纯静态的上 CDN 就完了。
    Robias
        40
    Robias  
    OP
       2019-09-20 11:25:26 +08:00
    @love 这个厉害了。。。
    intouchables
        41
    intouchables  
       2019-09-20 11:43:35 +08:00 via Android   ❤️ 4
    laminux29
        42
    laminux29  
       2019-09-20 11:54:16 +08:00
    @Robias 那就国外全封,国内报网警。
    40huo
        43
    40huo  
       2019-09-20 12:01:29 +08:00   ❤️ 1
    五秒盾
    PbCopy111
        44
    PbCopy111  
       2019-09-20 12:06:39 +08:00
    @intouchables #41 就喜欢这种小说,真棒!
    Robias
        45
    Robias  
    OP
       2019-09-20 12:12:50 +08:00
    yytsjq
        46
    yytsjq  
       2019-09-20 12:13:46 +08:00
    利用 CF 的 Page Rules,把特征流量转发到黑洞
    lqw3030
        47
    lqw3030  
       2019-09-20 12:20:43 +08:00
    你有没有想过某一个回复就是攻击者,哈哈哈
    Robias
        48
    Robias  
    OP
       2019-09-20 12:41:49 +08:00
    @yytsjq page rules?我设置了 firewall rules 和 User Agent Rules,请问 page rules 是什么意思?
    yytsjq
        49
    yytsjq  
       2019-09-20 13:10:59 +08:00   ❤️ 1
    @Robias Page Rules 能实现 URL 通配符级别的访问控制

    https://support.cloudflare.com/hc/en-us/articles/218411427
    Devilker
        50
    Devilker  
       2019-09-20 13:18:18 +08:00
    哈哈哈哈哈哈哈哈哈 这事儿好办
    就看你的域名重要不重要

    不重要的话,低价买个备案的域名
    去国内高防服务器买个宿迁 苏州 地区的
    一个月 800 左右就搞定了。
    Devilker
        51
    Devilker  
       2019-09-20 13:27:30 +08:00
    顺便说句 改 INDEX.PHP 没啥用
    因为
    你的新闻目录 也有 PHP 文件
    皮肤文件夹,分类文件夹,DATA 文件夹,等分目录多多少少都会有 PHP 文件
    用 PHP 嗅探器一扫,就出来了,照样可以用 CC 攻击 攻击你其他的 PHP 文件造成 CPU 100% 挂机
    买高防服务器 但便宜的国内高防都需要域名备案的,所以上面问你域名对你重要与否。

    你的站是什么站,对方有没有跟你提过什么要求?

    我朋友系列,曾经有个朋友是搞这方面的,遇到两个菠菜站对打,一天 2 万美金互打,还有一些私人游戏的业务,经常会遇到这类。
    samwalt
        52
    samwalt  
       2019-09-20 13:50:45 +08:00
    战略性 马克
    Phant0m
        53
    Phant0m  
       2019-09-20 14:16:31 +08:00 via iPhone
    宝塔封锁国外 ip 效率低吧?用 nginx geo 模块,直接根据 ip 归属地禁封会好一点。
    mineqiqi
        54
    mineqiqi  
       2019-09-20 14:35:16 +08:00
    好刺激的帖子,看大佬的解答
    justs0o
        55
    justs0o  
       2019-09-20 14:50:37 +08:00
    买几台高配的主机,装 CDNFLY,成本还可以
    guozonggui
        56
    guozonggui  
       2019-09-20 14:52:28 +08:00
    嗯。。。我们可以做抗 CC。不过就像你说的那样收费的范围。
    Robias
        57
    Robias  
    OP
       2019-09-20 14:53:55 +08:00
    @frozenway 老哥,封 user agent 的话,会不会误封?比如某个人用的浏览器正好和我封的这个一致怎么办。
    Robias
        58
    Robias  
    OP
       2019-09-20 14:55:58 +08:00
    @Devilker 我没有备案,域名挺重要的,因为排名挺好的,国内的应该也没有那么便宜吧。

    我也是倒霉,被人的主要攻击目标不是我,而是排在第一名的,只是因为我排名比较靠前罢了。
    frozenway
        59
    frozenway  
       2019-09-20 14:59:35 +08:00   ❤️ 1
    @ #57 宁杀错不放过
    Robias
        60
    Robias  
    OP
       2019-09-20 15:02:43 +08:00
    @frozenway 懂啦,这个时候也不管那么多了。
    xiaoyangsa
        61
    xiaoyangsa  
       2019-09-20 15:05:47 +08:00
    @Devilker 这样要是原域名直接通过域名解析到后面这个高防域名也 ok 吧....国内的高防我遇到过会被 dianxin 直接封额。
    newworld
        62
    newworld  
       2019-09-20 15:35:35 +08:00
    @laminux29 #18 根据楼主网站是面向国内客户,就直接白名单机制,只允许国内访问,屏蔽国外,IP 段太多了。。。
    同时 CF 做规则,只允许访问静态的资源,和必要的动态资源,比如登录注册这些,禁止直接访问其他非必要 php 文件,暂时关闭网站搜索功能,这些需要用到大量查询 IO 交互的操作。当然啦,最好就是上高防,大宽带机器,全部 CDN,更换主机 IP,只允许 CDNIP 段访问和管理 IP 访问,其余的全部拒绝,这样防御 CC 基本没啥大问题,DDOS 就另说,暂时是个世界性难题。
    huangzxx
        63
    huangzxx  
       2019-09-20 15:42:13 +08:00
    nginx + ip2location
    直接根据地区 deny,可以抗一阵吗?
    rainfallmax
        64
    rainfallmax  
       2019-09-20 15:57:24 +08:00
    @love 太猛了
    dingzi
        65
    dingzi  
       2019-09-20 16:08:52 +08:00
    上次遇到过,分析流量,写 cf 防火墙规则,把攻击流量挡防火墙外
    winglight2016
        66
    winglight2016  
       2019-09-20 16:23:54 +08:00
    现在黑客都这么厉害了吗?随便发起几百 G 的流量攻击?记得之前有个哥们业余也做这种“服务”,他说,都是按 G 收费的,一次攻击也就一两千个 IP 同时使用,估计还是有水分的。
    Yourshell
        67
    Yourshell  
       2019-09-20 17:26:40 +08:00
    是时候找同行聊一下天了。
    Devilker
        68
    Devilker  
       2019-09-20 17:31:19 +08:00
    @xiaoyangsa 对,因为没备案,直接提示未备案。然后还在恶意跨白名单去解析,会封服务器,再严重,我甚至遇到过封整个机房的。
    colorfulberry
        69
    colorfulberry  
       2019-09-20 17:51:37 +08:00
    直接 AWS 走负载均衡。 然后在 AWS 上是这防火墙规则。自己配置总是配不好。多来电机器吧。
    可以用日本节点的 AWS。
    Moker
        70
    Moker  
       2019-09-20 18:53:14 +08:00
    如果用 CF 可以用 workers 直接在 CF 这层就屏蔽掉部分 ip 或者添加一些令牌验证 这样异常请求不会打到服务器
    yezhiqiucn
        71
    yezhiqiucn  
       2019-09-20 19:16:20 +08:00
    只要流量到服务器你怎么样都无效的 毕竟单机效率太差

    如果确认只要国内访问
    CF 本身可以限制访问区域
    https://docs.aws.amazon.com/zh_cn/AmazonCloudFront/latest/DeveloperGuide/georestrictions.html

    更直接去 AWS 控制台 VPC,CreateNetworkAcl 默认拒绝所有入网流量
    然后整理一份中国 IP 的列表 输入进去 可以用 cli 命令处理
    stabc
        72
    stabc  
       2019-09-20 19:52:03 +08:00
    登录 Cloudflare, 选择 Firewall -> Tools,往下拉,创建"rate limiting rules"。然后就可以限制了,比如对方某个 IP 一分钟刷了超过 30 次就自动屏蔽它 IP。这个几乎完美克制 CC 攻击,又不影响正常用户访问。

    需要注意的是 rate limiting 是额外收费的,只对通过的访问收费,被屏蔽掉的不收费: https://support.cloudflare.com/hc/en-us/articles/115000272247-Billing-for-Cloudflare-Rate-Limiting
    自己估算一下花销的风险。
    stabc
        73
    stabc  
       2019-09-20 19:55:51 +08:00
    aws 的 Cloudfront 也可以屏蔽,但是我之前咨询过他们,他们对被屏蔽掉的访问也收费的,也就是说攻击者可以直接通过攻击来刷爆你信用卡。
    czb
        74
    czb  
       2019-09-20 20:12:07 +08:00 via Android
    cc 的确是难挡 特别是一些发起类似业务请求的连接 看了一下你的 IP 来源 大部分攻击来自 DC IP 可以做一个 Bad ASN 表做针对性的验证码或者屏蔽 Cloudflare 其实还有个服务叫做 bot management 联系客服可以开通 https://www.cloudflare.com/products/bot-management/
    xabc
        75
    xabc  
       2019-09-20 22:22:22 +08:00 via iPhone
    微信 xabcstack 可以帮你搞定, 是付费服务,搞不定没有费用
    xencdn
        76
    xencdn  
       2019-09-20 22:24:38 +08:00
    if ($cookie_say != "xencdn"){ add_header Set-Cookie "say=xencdn"; rewrite .* "$scheme://$host$uri" redirect; }

    当 cookie 中 say 为空时,给一个设置 cookie say 为 xencdn 的 302 重定向包,如果访问者能够在第二个包中携带上 cookie 值,那么就能正常访问网站了,如果不能的话,那他永远活在了 302 中。

    这个应可以防大部份 CC 加在 location 中间

    Cloudflare 提高 waf 防护级别也是可以的 话说打穿 cloudflare 的 CC 攻击还是比较少
    woshipanghu
        77
    woshipanghu  
       2019-09-20 23:06:49 +08:00
    百度做的是最便宜的
    一年好像 2000 出头
    ads 防御开到最强 基本能拦下所有攻击,就是进网站前会有验证
    woshipanghu
        78
    woshipanghu  
       2019-09-20 23:15:25 +08:00
    原本用的知道创宇 月付 1500 后来不让月付了 只能年付价格还涨了 额额额 ...只能放弃了
    就切到百度上了,便宜也很好用!
    每次 cc 猛的时候都要开到防御级别最高 流量瞬间就下来了
    防御级别最该的时候就是第一次进网站会有个 5 秒验证 不介意可以用用 和 cf 应该是一样的 c
    cc 只能买抗 c 的服务
    pandait
        79
    pandait  
       2019-09-20 23:36:10 +08:00 via Android
    CF 就有封国家的功能,在 ruler 里面
    pandait
        80
    pandait  
       2019-09-20 23:37:41 +08:00 via Android
    是的,去 github 找一个叫 cckiller 的工具
    chinafeng
        81
    chinafeng  
       2019-09-21 02:22:52 +08:00
    楼主预算多少呢?
    defunct9
        82
    defunct9  
       2019-09-21 11:48:02 +08:00 via iPhone
    开 ssh,让我上去试试
    RasherN
        83
    RasherN  
       2019-09-25 12:23:39 +08:00
    被 DD 是什么味道,小主机 45.120.186.68 , 我想尝尝!
    infra
        84
    infra  
       2019-10-07 21:32:57 +08:00
    换个 CDN 试试,另外多找找线索,看能否找到特征。
    CC 攻击见过不少,这么成气候的不知有机会深入分析不
    johnnyR
        85
    johnnyR  
       2019-10-30 23:43:26 +08:00
    @RasherN 放上主机论坛两分钟的事
    2885232976
        86
    2885232976  
       2019-11-02 20:32:10 +08:00
    名字就是我的 QQ,如果您这边攻击还没解决的话可以加我聊下,我们公司做防御十几年了,CC 很好处理,保证 0 误封。
    Aug
        87
    Aug  
       2019-12-18 13:58:01 +08:00
    没试试公安部研究所的“网防 g01 吗”,据说啥都能防。
    NCDWLQ
        88
    NCDWLQ  
       2020-03-15 18:11:29 +08:00
    @love 解析到 127.0.0.1 岂不更好
    cpublic
        89
    cpublic  
       2021-09-04 21:26:29 +08:00
    你这是泄露真实 IP 了吧!否则 DDoS 和 CC 攻击的话,CloudFlare 免费版基本都能抗住,建议你排查一下 IP 泄露的地方,然后变更 IP 继续用 CloudFlare 抵挡吧!
    目前最好的方案就是 CloudFlare 了!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3477 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 11:09 · PVG 19:09 · LAX 04:09 · JFK 07:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.