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

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

  •  2
     
  •   Robias · 86 天前 · 6168 次点击
    这是一个创建于 86 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    CF7 天截图 CF24 小时截图

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

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

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

    2.在各地做好 cdn。

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

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

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

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

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

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

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

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

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

    https://support.cloudflare.com/hc/en-us/articles/218411427
        50
    Devilker   86 天前
    哈哈哈哈哈哈哈哈哈 这事儿好办
    就看你的域名重要不重要

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

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

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

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

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

    更直接去 AWS 控制台 VPC,CreateNetworkAcl 默认拒绝所有入网流量
    然后整理一份中国 IP 的列表 输入进去 可以用 cli 命令处理
        72
    stabc   86 天前
    登录 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
    自己估算一下花销的风险。
        73
    stabc   86 天前
    aws 的 Cloudfront 也可以屏蔽,但是我之前咨询过他们,他们对被屏蔽掉的访问也收费的,也就是说攻击者可以直接通过攻击来刷爆你信用卡。
        74
    czb   86 天前 via Android
    cc 的确是难挡 特别是一些发起类似业务请求的连接 看了一下你的 IP 来源 大部分攻击来自 DC IP 可以做一个 Bad ASN 表做针对性的验证码或者屏蔽 Cloudflare 其实还有个服务叫做 bot management 联系客服可以开通 https://www.cloudflare.com/products/bot-management/
        75
    xabc   86 天前 via iPhone
    微信 xabcstack 可以帮你搞定, 是付费服务,搞不定没有费用
        76
    xencdn   86 天前
    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 攻击还是比较少
        77
    woshipanghu   86 天前
    百度做的是最便宜的
    一年好像 2000 出头
    ads 防御开到最强 基本能拦下所有攻击,就是进网站前会有验证
        78
    woshipanghu   86 天前
    原本用的知道创宇 月付 1500 后来不让月付了 只能年付价格还涨了 额额额 ...只能放弃了
    就切到百度上了,便宜也很好用!
    每次 cc 猛的时候都要开到防御级别最高 流量瞬间就下来了
    防御级别最该的时候就是第一次进网站会有个 5 秒验证 不介意可以用用 和 cf 应该是一样的 c
    cc 只能买抗 c 的服务
        79
    pandait   86 天前 via Android
    CF 就有封国家的功能,在 ruler 里面
        80
    pandait   86 天前 via Android
    是的,去 github 找一个叫 cckiller 的工具
        81
    chinafeng   86 天前
    楼主预算多少呢?
        82
    defunct9   85 天前 via iPhone
    开 ssh,让我上去试试
        83
    RasherN   81 天前
    被 DD 是什么味道,小主机 45.120.186.68 , 我想尝尝!
        84
    infra   69 天前
    换个 CDN 试试,另外多找找线索,看能否找到特征。
    CC 攻击见过不少,这么成气候的不知有机会深入分析不
        85
    johnnyR   46 天前
    @RasherN 放上主机论坛两分钟的事
        86
    2885232976   43 天前
    名字就是我的 QQ,如果您这边攻击还没解决的话可以加我聊下,我们公司做防御十几年了,CC 很好处理,保证 0 误封。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1062 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 34ms · UTC 23:23 · PVG 07:23 · LAX 15:23 · JFK 18:23
    ♥ Do have faith in what you're doing.