V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nnegier
V2EX  ›  站长

服务器被攻击了,第一次,有点无所适从

  •  
  •   nnegier · 2024-04-20 01:24:02 +08:00 · 9507 次点击
    这是一个创建于 421 天前的主题,其中的信息可能已经有所发展或是发生改变。

    服务器是阿里云买的一个 2 核 2G 的 ECS ,没有开通什么高防,因为收费和不知道其原理的原因(怕超量扣很多钱),所以我现在连什么情况都不知道,我估计是大量的接口请求导致的,因为 CPU 飙升 100%,之前都是 2%到 3%。

    我目前是关掉了域名解析,服务器重启,暂避锋芒,不关掉解析 CPU 掉不下来。然后现在正常了。

    我目前主要倒不是生气,倒有点觉得技不如人,可能是没有对我造成太大的损失,那产品就没几个用户,真不知道攻击者想啥,但大概率攻击者是用户之一。我想请问有什么书籍可以让我对 Web 防护有一些策略吗,我趁此机会好好学习一下。另外感谢那位哥只攻击了我一个域名。

    另外我还想问问,这种请求攻击是不是就是无解?我目前想到的是短时间禁掉高频访问的 ip ,就是 tcp/ip 流量进来我就给那个 ip 给 close 了,这个有用吗?说实话这种攻击我感觉挺无力的,除了攻击者不想搞事了,还有一种办法就是进局子了,不然没完没了。

    至于具体的情况,是不是我说的请求攻击,我会先问一下阿里云那面,也希望攻击者歇歇,不然真得报警了。最后,求书,求点策略,我是搞 java 的,但这里好像并不用限定这个开发语言。

    第 1 条附言  ·  2024-04-20 12:40:02 +08:00
    嗯,谢谢大家的回复啊,可以推荐一本书吗? Web 攻防实战的。另外我为什么确定是攻击呢,我关掉域名解析,CPU 就下来了,另外其实重启也没有效果,我正常的应用服务 jar 都还没启动呢,cpu 还是满了,所以我不知道从哪一层去防止这样的攻击。
    第 2 条附言  ·  2024-04-20 12:57:21 +08:00
    另外我怎样去及时的去检测到这个服务器出问题呢( cpu100%)?
    47 条回复    2024-04-28 17:56:07 +08:00
    ab
        1
    ab  
       2024-04-20 01:31:07 +08:00 via iPhone   ❤️ 3
    cloudflare 先顶一顶,再慢慢了解防御的事
    cJ8SxGOWRH0LSelC
        2
    cJ8SxGOWRH0LSelC  
       2024-04-20 01:36:50 +08:00   ❤️ 4
    又不是 DDOS 攻击,简单的 API 请求就能把你的 CPU 打满, 而不是带宽被打满,说明你的代码写的有问题,还是好好优化一下吧。
    nnegier
        3
    nnegier  
    OP
       2024-04-20 01:54:57 +08:00
    @ab 是 APP
    nnegier
        4
    nnegier  
    OP
       2024-04-20 01:58:08 +08:00
    @StinkyTofus DDOS 也是请求吧。代码的话就是简单的 Spring 全家桶,那硬要说问题,就是机器配置不高,带宽也不大
    nnegier
        5
    nnegier  
    OP
       2024-04-20 02:01:51 +08:00
    @StinkyTofus 你的意思是 DDOS 不会打满 CPU 吗?我带宽不知道怎么看实时流量,所以没有留意到,不知道带宽有没有满,至于具体是 TCP 握手攻击,还是大量完整的请求,只有等我问问阿里云看看了
    cJ8SxGOWRH0LSelC
        6
    cJ8SxGOWRH0LSelC  
       2024-04-20 02:03:31 +08:00
    @nnegier #4 按照你的描述, 这个应该是 CC 攻击,DDOS 是直接发数据包把你的网络承载能力打垮,到不了协议层, 云服务商会把你的 IP 扔到黑洞里。
    ON9
        7
    ON9  
       2024-04-20 02:11:09 +08:00 via Android
    @ab cf 的盾要把域名放到 cf 里解析吧?那 5 秒盾+超慢的 dns 解析简直灾难
    proxytoworld
        8
    proxytoworld  
       2024-04-20 02:47:03 +08:00
    DDOS 不算啥高深的攻击,纯粹是大力出奇迹
    proxytoworld
        9
    proxytoworld  
       2024-04-20 02:47:23 +08:00
    @StinkyTofus DDOS 包括 CC 攻击
    datocp
        10
    datocp  
       2024-04-20 02:59:08 +08:00 via Android
    这种东西无解?
    当年在这里免费开梯子,然后被不知道哪条狗 ddos 了。。。唯一一次。

    记得当年做百度推广,部分关键词高达 30 块,1 天 3000 块不到的预算,怎么让竞争对手下线,那就是点它家关键词。
    既然阿里有这种服务,难不成监守自盗。。。cc 这种 hashlimit 针对 ip 的并发限制,应该也是难。
    JensenQian
        11
    JensenQian  
       2024-04-20 04:11:35 +08:00
    没什么用
    就是简单的上带防御的服务器和 cdn ,比方说 ovh+cf ,设置好规则,然后硬抗
    才 2 核 2G 不是很容易死吗,一般为了抗都是买独立服务器的
    x86
        12
    x86  
       2024-04-20 08:00:58 +08:00
    如果是 ddos ,你关闭域名解析也没用,源站 ip 已经暴露
    linyongxin
        13
    linyongxin  
       2024-04-20 08:07:00 +08:00
    最重要的是隐藏好源站 IP ,套上 CloudFlare ,如果无交互网站直接全站静态化放在 CloudFlare pages
    june4
        14
    june4  
       2024-04-20 08:45:04 +08:00
    看你的问题不是什么大攻击,很可能写一个 nftables 配置全自动把每天访问超次数的 ip 全加黑名单就解决了
    coderzhangsan
        15
    coderzhangsan  
       2024-04-20 09:08:18 +08:00
    没几个用户 就这机器配置 也值得 DDOS 攻击吗 先设置下 ip 黑名单拦截试下效果
    wuhao
        16
    wuhao  
       2024-04-20 09:12:22 +08:00
    相信我,不过是什么采集器之类的东西,没人 ddos 你
    david98
        17
    david98  
       2024-04-20 09:15:37 +08:00
    如果是带宽打满了 你封 IP 什么的都没有用,因为正常的请求也进不来,在云供应商那因为超限就给丢了。
    CDN 如果买了高防服务还好,如果没有买,很多产品合同会说明,遇到攻击会回源,让你的服务器自己扛。
    如果确认是攻击,报警也是可以的,但能不能很好受理就是另外一回事了。
    xinzi
        18
    xinzi  
       2024-04-20 09:33:02 +08:00
    雷池 waf
    foam
        19
    foam  
       2024-04-20 09:40:17 +08:00 via Android
    @datocp 大概率是被收录到免费代理列表了,大家伙们更新一下免费代理池,就用上了你的代理,大概率不是恶意 ddos
    jiuhuicinv
        20
    jiuhuicinv  
       2024-04-20 09:41:05 +08:00
    关机
    lasuar
        21
    lasuar  
       2024-04-20 09:53:11 +08:00
    重要业务那只能上高防,小业务就是多域名,cf 是低层本方案。
    dode
        22
    dode  
       2024-04-20 10:14:06 +08:00
    要求登录
    zbatman
        23
    zbatman  
       2024-04-20 10:27:13 +08:00 via Android
    带宽有多少啊,印象中阿里云带宽很贵,2h2g 这种低配的,带宽也就 10M ,跑满也不至于 cpu 占满吧
    Nosub
        24
    Nosub  
       2024-04-20 12:18:58 +08:00 via Android
    建议看看这个,其实阿里云有完整的分析流程,攻击你服务器没有价值哦,https://nosub.net/posts/p/100
    xinge666
        25
    xinge666  
       2024-04-20 12:41:31 +08:00 via iPhone
    99 元那个 2C2G 吗,那个 CPU 和硬盘的性能巨差,基本上稍微压力大点就 99%,编译安装个软件都要半天
    Nosub
        26
    Nosub  
       2024-04-20 12:53:58 +08:00 via iPhone
    @xinge666 此言差矣,同款服务器,我服务器跑了 Java ,postgresql ,redis ,rabbitMQ ,NGINX ,很稳定啊。
    stobacco
        27
    stobacco  
       2024-04-20 13:09:28 +08:00
    看对方是 cc 攻击还是 ddos 攻击,如果是 cc 的话,设置一下请求策略,比如一个 ip 一分钟最大请求次数等等。

    如果是 ddos 的话,只能硬抗或者拔网线,防御方法就是尽量不要泄露服务器真实 ip ,比如不要将域名解析直接指向服务器 ip ,而是套一层 cdn 等方式,当然还是有方式可以溯源到你的服务器真实 ip ,这里有一篇文章,可以看一下: https://www.51cto.com/article/624770.html
    darkengine
        28
    darkengine  
       2024-04-20 13:31:44 +08:00
    SSH 还能连上吗,进去看什么进程占的 CPU
    nnegier
        29
    nnegier  
    OP
       2024-04-20 13:32:30 +08:00 via Android
    @stobacco APP 接口域名可以套 cdn 吗?静态网页等资源我是有套 cdn 的
    nnegier
        30
    nnegier  
    OP
       2024-04-20 13:34:34 +08:00 via Android
    @darkengine 等我买个 1 个月的服务器再好好研究这个,那个服务器有重要服务,目前是直接先解决问题,重启断故障域名解析解决
    darkengine
        31
    darkengine  
       2024-04-20 13:41:04 +08:00
    还有比较基础的就是 Redis, MySQL 的端口如果开放了极容易被挂挖矿脚本,CPU 100%就很正常了
    totoro52
        32
    totoro52  
       2024-04-20 13:48:29 +08:00
    你不会域名直接解析到服务器上吧? 单纯的 CC 可以套 CF 或者一些国内免费的 DNS 去隐藏服务器的真实 IP ,而且基本都带 CC 防护
    xinge666
        33
    xinge666  
       2024-04-20 15:21:49 +08:00 via iPhone
    @Nosub #26 奇怪了,我 apt upgrade 都很慢。可能限制性能的太严重了
    bug123
        34
    bug123  
       2024-04-20 15:43:28 +08:00
    又不是 ddos ,不用套 cloudflare ,nginx 限制单个 ip 频率就行了
    Hopetree
        35
    Hopetree  
       2024-04-20 17:39:12 +08:00
    我之前网站有的页面被单个 IP 有规律的频繁请求,频率高但是不是并发请求(但是其实对我没有任何影响),后面我写了个脚本,去查 Nginx 日志,把这种在一定时间内高频率请求的都丢黑名单里。其实 Nginx 自身也可以配置请求禁用,但是我感觉没自己写的灵活
    SillyGod
        36
    SillyGod  
       2024-04-20 18:48:09 +08:00
    关掉解析就没事了,显然不可能是真正的攻击,因为对方甚至都没打你 IP 。
    大抵就是项目的 BUG ,如果真是谁发现了你的站随便 CC 几下玩玩,那开个 WAF 防 CC 就完了(高频把请求 IP 拉黑)
    stobacco
        37
    stobacco  
       2024-04-20 19:26:58 +08:00
    @nnegier #29 当然可以,在 cdn 设置里面设置规则,所有全不缓存就行了
    WoneFrank
        38
    WoneFrank  
       2024-04-20 20:20:55 +08:00 via iPhone
    先定位问题在哪,你的 web 服务如果是单 jar 包起的,那么如果没起 jar 包没开 web 服务 cpu 还是 100%,或者高占用,就说明是别的进程占了,不是 web 的问题,需要一步步看。

    你如果提供服务,可以注册接口放在 cloudflare 后面,正常业务和其他接口就不用套了,log 细一点,如果有人登陆后打接口,你从 log 可以看到 cookie 之类的就能定位是谁了
    robinchina
        39
    robinchina  
       2024-04-20 20:35:37 +08:00
    封 IP ,可能是爬虫····
    biglee0304
        40
    biglee0304  
       2024-04-21 00:20:04 +08:00 via iPhone
    接 cdn ,cdn 上配置一些现成的限流、封禁规则,做好带宽上限设置,免得睡一觉起来天价账单
    v2bili
        41
    v2bili  
       2024-04-21 01:09:05 +08:00
    自从很久之前 drupal 漏洞被黑,我就是 docker 部署,隔离 mysql db 。只用自己开发的 app server 。
    ab
        42
    ab  
       2024-04-21 04:30:47 +08:00
    @ON9
    5 秒盾那也不得已,楼主已经停服了.
    dns 慢这个其实是个迷思,解析请求的也是本地节点的缓存。
    niubee1
        43
    niubee1  
       2024-04-21 08:54:33 +08:00
    1. 首先你得定位攻击的类型,是 SYN Flood ,HTTP Flood ,还是慢速攻击。从你的描述上来看,CPU 异常升高的话,应该是 SYN Flood 。
    2. 确定抵御的方案,知道攻击类型的话,针对攻击的特征,需要确定防御的策略。因为 SYN 攻击是针对 SYN 的,所以先:sysctl -a | grep syn 看看本机的设置
    其中 tcp_max_syn_backlog 是 SYN 队列的长度,tcp_syncookies 是一个开关,是否打开 SYN Cookie 功能,该功能可以防止部分 SYN 攻击。tcp_synack_retries 和 tcp_syn_retries 定义 SYN 的重试次数。那么先 加大 SYN 队列长度,然后减少重试次数(减少重试次数有副作用,就是在网络不稳定的地区访问,正常访问失败几率会升高),另外就是要加上访问频率限制,比如超过每秒一次的 IP 就 ban 掉 30 秒。

    还有一种方式就是挂 cloudflare ,CF 的机器肯定都是有做好上面我描述的抗 DOS 的设置了,另外一个好处是,有更多的 IP 来参与分流,可以提高你的冗余度。

    另,阿里云的云监控里可以设置对主机的状态监控,CPU ,内存,磁盘,可以设置阈值,超过了就给你发短信
    M5tuA
        44
    M5tuA  
       2024-04-21 12:51:41 +08:00
    歪个楼,今天 ssh 哥是休息了吗
    smalltechnology
        45
    smalltechnology  
       2024-04-21 12:52:22 +08:00
    所以先挂 cf 吧~
    nnegier
        46
    nnegier  
    OP
       2024-04-22 12:09:51 +08:00 via Android
    @stobacco #37 用腾讯 cdn 套 App 域名接口,不知道为何没成功,显示是超时,也就是服务器无响应,设置了无缓存,cname 验证成功状态。
    ooooyeahbabe
        47
    ooooyeahbabe  
       2024-04-28 17:56:07 +08:00
    开 WAF
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2608 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:36 · PVG 11:36 · LAX 20:36 · JFK 23:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.