服务器是阿里云买的一个 2 核 2G 的 ECS ,没有开通什么高防,因为收费和不知道其原理的原因(怕超量扣很多钱),所以我现在连什么情况都不知道,我估计是大量的接口请求导致的,因为 CPU 飙升 100%,之前都是 2%到 3%。
我目前是关掉了域名解析,服务器重启,暂避锋芒,不关掉解析 CPU 掉不下来。然后现在正常了。
我目前主要倒不是生气,倒有点觉得技不如人,可能是没有对我造成太大的损失,那产品就没几个用户,真不知道攻击者想啥,但大概率攻击者是用户之一。我想请问有什么书籍可以让我对 Web 防护有一些策略吗,我趁此机会好好学习一下。另外感谢那位哥只攻击了我一个域名。
另外我还想问问,这种请求攻击是不是就是无解?我目前想到的是短时间禁掉高频访问的 ip ,就是 tcp/ip 流量进来我就给那个 ip 给 close 了,这个有用吗?说实话这种攻击我感觉挺无力的,除了攻击者不想搞事了,还有一种办法就是进局子了,不然没完没了。
至于具体的情况,是不是我说的请求攻击,我会先问一下阿里云那面,也希望攻击者歇歇,不然真得报警了。最后,求书,求点策略,我是搞 java 的,但这里好像并不用限定这个开发语言。
1
ab 248 天前 via iPhone 3
cloudflare 先顶一顶,再慢慢了解防御的事
|
2
cJ8SxGOWRH0LSelC 248 天前 4
又不是 DDOS 攻击,简单的 API 请求就能把你的 CPU 打满, 而不是带宽被打满,说明你的代码写的有问题,还是好好优化一下吧。
|
4
nnegier OP @StinkyTofus DDOS 也是请求吧。代码的话就是简单的 Spring 全家桶,那硬要说问题,就是机器配置不高,带宽也不大
|
5
nnegier OP @StinkyTofus 你的意思是 DDOS 不会打满 CPU 吗?我带宽不知道怎么看实时流量,所以没有留意到,不知道带宽有没有满,至于具体是 TCP 握手攻击,还是大量完整的请求,只有等我问问阿里云看看了
|
6
cJ8SxGOWRH0LSelC 248 天前
@nnegier #4 按照你的描述, 这个应该是 CC 攻击,DDOS 是直接发数据包把你的网络承载能力打垮,到不了协议层, 云服务商会把你的 IP 扔到黑洞里。
|
8
proxytoworld 248 天前
DDOS 不算啥高深的攻击,纯粹是大力出奇迹
|
9
proxytoworld 248 天前
@StinkyTofus DDOS 包括 CC 攻击
|
10
datocp 248 天前 via Android
这种东西无解?
当年在这里免费开梯子,然后被不知道哪条狗 ddos 了。。。唯一一次。 记得当年做百度推广,部分关键词高达 30 块,1 天 3000 块不到的预算,怎么让竞争对手下线,那就是点它家关键词。 既然阿里有这种服务,难不成监守自盗。。。cc 这种 hashlimit 针对 ip 的并发限制,应该也是难。 |
11
JensenQian 248 天前
没什么用
就是简单的上带防御的服务器和 cdn ,比方说 ovh+cf ,设置好规则,然后硬抗 才 2 核 2G 不是很容易死吗,一般为了抗都是买独立服务器的 |
12
x86 248 天前
如果是 ddos ,你关闭域名解析也没用,源站 ip 已经暴露
|
13
linyongxin 248 天前
最重要的是隐藏好源站 IP ,套上 CloudFlare ,如果无交互网站直接全站静态化放在 CloudFlare pages
|
14
june4 248 天前
看你的问题不是什么大攻击,很可能写一个 nftables 配置全自动把每天访问超次数的 ip 全加黑名单就解决了
|
15
coderzhangsan 248 天前
没几个用户 就这机器配置 也值得 DDOS 攻击吗 先设置下 ip 黑名单拦截试下效果
|
16
wuhao 248 天前
相信我,不过是什么采集器之类的东西,没人 ddos 你
|
17
david98 248 天前
如果是带宽打满了 你封 IP 什么的都没有用,因为正常的请求也进不来,在云供应商那因为超限就给丢了。
CDN 如果买了高防服务还好,如果没有买,很多产品合同会说明,遇到攻击会回源,让你的服务器自己扛。 如果确认是攻击,报警也是可以的,但能不能很好受理就是另外一回事了。 |
18
xinzi 248 天前
雷池 waf
|
20
jiuhuicinv 247 天前
关机
|
21
lasuar 247 天前
重要业务那只能上高防,小业务就是多域名,cf 是低层本方案。
|
22
dode 247 天前
要求登录
|
23
zbatman 247 天前 via Android
带宽有多少啊,印象中阿里云带宽很贵,2h2g 这种低配的,带宽也就 10M ,跑满也不至于 cpu 占满吧
|
24
Nosub 247 天前 via Android
建议看看这个,其实阿里云有完整的分析流程,攻击你服务器没有价值哦,https://nosub.net/posts/p/100
|
25
xinge666 247 天前 via iPhone
99 元那个 2C2G 吗,那个 CPU 和硬盘的性能巨差,基本上稍微压力大点就 99%,编译安装个软件都要半天
|
26
Nosub 247 天前 via iPhone
@xinge666 此言差矣,同款服务器,我服务器跑了 Java ,postgresql ,redis ,rabbitMQ ,NGINX ,很稳定啊。
|
27
stobacco 247 天前
看对方是 cc 攻击还是 ddos 攻击,如果是 cc 的话,设置一下请求策略,比如一个 ip 一分钟最大请求次数等等。
如果是 ddos 的话,只能硬抗或者拔网线,防御方法就是尽量不要泄露服务器真实 ip ,比如不要将域名解析直接指向服务器 ip ,而是套一层 cdn 等方式,当然还是有方式可以溯源到你的服务器真实 ip ,这里有一篇文章,可以看一下: https://www.51cto.com/article/624770.html |
28
darkengine 247 天前
SSH 还能连上吗,进去看什么进程占的 CPU
|
30
nnegier OP @darkengine 等我买个 1 个月的服务器再好好研究这个,那个服务器有重要服务,目前是直接先解决问题,重启断故障域名解析解决
|
31
darkengine 247 天前
还有比较基础的就是 Redis, MySQL 的端口如果开放了极容易被挂挖矿脚本,CPU 100%就很正常了
|
32
totoro52 247 天前
你不会域名直接解析到服务器上吧? 单纯的 CC 可以套 CF 或者一些国内免费的 DNS 去隐藏服务器的真实 IP ,而且基本都带 CC 防护
|
34
bug123 247 天前
又不是 ddos ,不用套 cloudflare ,nginx 限制单个 ip 频率就行了
|
35
Hopetree 247 天前
我之前网站有的页面被单个 IP 有规律的频繁请求,频率高但是不是并发请求(但是其实对我没有任何影响),后面我写了个脚本,去查 Nginx 日志,把这种在一定时间内高频率请求的都丢黑名单里。其实 Nginx 自身也可以配置请求禁用,但是我感觉没自己写的灵活
|
36
SillyGod 247 天前
关掉解析就没事了,显然不可能是真正的攻击,因为对方甚至都没打你 IP 。
大抵就是项目的 BUG ,如果真是谁发现了你的站随便 CC 几下玩玩,那开个 WAF 防 CC 就完了(高频把请求 IP 拉黑) |
38
WoneFrank 247 天前 via iPhone
先定位问题在哪,你的 web 服务如果是单 jar 包起的,那么如果没起 jar 包没开 web 服务 cpu 还是 100%,或者高占用,就说明是别的进程占了,不是 web 的问题,需要一步步看。
你如果提供服务,可以注册接口放在 cloudflare 后面,正常业务和其他接口就不用套了,log 细一点,如果有人登陆后打接口,你从 log 可以看到 cookie 之类的就能定位是谁了 |
39
robinchina 247 天前
封 IP ,可能是爬虫····
|
40
biglee0304 247 天前 via iPhone
接 cdn ,cdn 上配置一些现成的限流、封禁规则,做好带宽上限设置,免得睡一觉起来天价账单
|
41
v2bili 247 天前
自从很久之前 drupal 漏洞被黑,我就是 docker 部署,隔离 mysql db 。只用自己开发的 app server 。
|
43
niubee1 247 天前
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 ,内存,磁盘,可以设置阈值,超过了就给你发短信 |
44
M5tuA 246 天前
歪个楼,今天 ssh 哥是休息了吗
|
45
smalltechnology 246 天前
所以先挂 cf 吧~
|
46
nnegier OP @stobacco #37 用腾讯 cdn 套 App 域名接口,不知道为何没成功,显示是超时,也就是服务器无响应,设置了无缓存,cname 验证成功状态。
|
47
ooooyeahbabe 239 天前
开 WAF
|