技术解析

如何限制用户访问服务器的总流量?
0
2021-07-05 02:57:16
idczone

公司用的一个 discuz 论坛 x3.2 ( centos ),不知道是否是 discuz 有漏洞,这几天发现有人不停地下载附件,当天日志显示此 IP 用了 100G (阿里云,按带宽付费)。我们已经把这个 IP 封了,但是无奈 ADSL 重新拨号后 IP 就会不同,所以封单个 IP 治标不治本。
因此,我想请问各位高手以下问题:
1 、能不能限制每个 IP 每天只能从服务器下载 1G 的文件,超过后不再下载。(注意,这里不是限制每个用户下载速度,而是总流量)
2 、怎样禁止多线程下载(防迅雷之类)?
3 、日志是从阿里云下载,顺便求一个好用的日志分析工具


iptables

iptables

奇了怪了, 首页显示有两个回复, 进来只有一个回复, 不登陆看不到回复

阿里云 OSS 吗?
那东西是坑,提意见说防 DD , CC ,他说没有
潜台词是,要是被攻击,你出钱就是了

首先你要确定你怎么区分一个用户。

我现在想通过 IP
不是被攻击,是恶意下载 ,不停拉流量 都是钱啊
防火墙上控制吗

已经从 discuz 转至 phpwind 附件托管在七牛 图片在 upyun 申请的赞助 5T 流量 不过我记得 后台可以设置禁止上传与下载附件吧。

是不是附件下载不需要校验登录?
拉到某些离线下载工具上,就会收到这样不断请求的 IP.

需要校验,但是怀疑有人恶意下载

下载附件需要积分不就好了

应该是你把某人加到黑名单,所以才少了一条回复吧?

https://www.v2ex.com/t/248664

https://www.v2ex.com/t/231778

是需要积分的,后台看到此用户没有下载多少附件,日志中却有很多

不是啊, 你没发现二楼不见了吗?

是唉,好神奇

相同的回复会被折叠

https://github.com/ywgx/bin/blob/d78bd4554368f22940fac1cd6e712fb70309e185/safed.sh

楼主 看看这个脚本怎么处理的,可以临时解决你的问题

upyun 怎么申请赞助的啊

wocao 5T 怎么申请的

大部分 web server 都有 rate limit 功能呀, 把下载服务拆分出来单独配策略。 其实针对 url pattern 也行,只是不够清爽

限速不就好了 单个 ip 限速 50k 一天也下不了多少

如果你会写代码修改逻辑 下载附件存储到了阿里云 OSS(OSS 可以生成临时访问 URL)
那么你可以尝试使用 OSS 的临时文件访问功能 比如将下载链接访问做统计 该链接不是直接的下载链接 而是一个 302 跳转 如果用户访问链接次数小于最大次数那么返回一个 60 秒或者 30 秒的临时访问的 URL 就可以了
我了解过阿里云、七牛、又拍 它们都没有直接的限定一个文件被某 IP 下载几次的方法 甚至连生成一次性访问 URL 的方法都没有

七牛 生成的连接可以自己设置有效期。

各厂都有这功能,然而有效期并不能很好的防止资源被恶意访问 我设置了有效期很可能是我希望资源不被反反复复下载造成流量浪费
比如一个文件设置 30 秒有效期 我可以通过程序让在 30 秒内就创建几十几百个下载访问(假如一个文件是 1G 大小会造成多大的流量浪费)
各个云服务提供商并没有提供对每个 URL 的访问流量控制(比如这个 URL 最多只能消耗 1G 流量)

22+1

文件服务器上限速限频率啊

1. 感觉限制每个用户的下载速度和并发连接数会更简单有效一些, webserver 都有现成的模块
2. 拒绝掉 HTTP HEADER 包含 Accept-Ranges 头的请求即可 (Apache, NGINX 网上有现成方法)
3. awstats (WEB 可以用 jawstats. 有点老了,不过还可以凑合着用)

阿里云不是有个按月付费吗

不想让用户把网站全下完

没有下载限制,比方说只有等级达到多少才能下载,只有做成什么任务才能下载.

有,但是怀疑有用户找到了 discuz 漏洞,可以跳过

反馈一下,现在使用 mod_bw 来控制流量。使用 goaccess 来监控流量(分析日志)。针对单 IP 的控制还是没有找到。防迅雷也没有找到

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服