公司用的一个 discuz 论坛 x3.2 ( centos ),不知道是否是 discuz 有漏洞,这几天发现有人不停地下载附件,当天日志显示此 IP 用了 100G (阿里云,按带宽付费)。我们已经把这个 IP 封了,但是无奈 ADSL 重新拨号后 IP 就会不同,所以封单个 IP 治标不治本。
因此,我想请问各位高手以下问题:
1 、能不能限制每个 IP 每天只能从服务器下载 1G 的文件,超过后不再下载。(注意,这里不是限制每个用户下载速度,而是总流量)
2 、怎样禁止多线程下载(防迅雷之类)?
3 、日志是从阿里云下载,顺便求一个好用的日志分析工具
1
supman 2016-01-06 08:57:24 +08:00 via iPad
iptables
|
2
zencoding 2016-01-06 08:58:37 +08:00
iptables
|
3
des 2016-01-06 09:00:28 +08:00
奇了怪了, 首页显示有两个回复, 进来只有一个回复, 不登陆看不到回复
|
4
testisitok 2016-01-06 09:04:47 +08:00 via Android
阿里云 OSS 吗?
那东西是坑,提意见说防 DD , CC ,他说没有 潜台词是,要是被攻击,你出钱就是了 |
5
BOYPT 2016-01-06 09:05:27 +08:00
首先你要确定你怎么区分一个用户。
|
6
ranzige OP |
7
imxieke 2016-01-06 09:37:30 +08:00 via Android
已经从 discuz 转至 phpwind 附件托管在七牛 图片在 upyun 申请的赞助 5T 流量 不过我记得 后台可以设置禁止上传与下载附件吧。
|
8
dong3580 2016-01-06 09:43:26 +08:00
是不是附件下载不需要校验登录?
拉到某些离线下载工具上,就会收到这样不断请求的 IP. |
10
ooxxcc 2016-01-06 09:46:14 +08:00
下载附件需要积分不就好了
|
12
datocp 2016-01-06 09:52:21 +08:00 via Android
|
13
datocp 2016-01-06 09:53:02 +08:00 via Android
|
18
UBER 2016-01-06 10:02:53 +08:00
https://github.com/ywgx/bin/blob/d78bd4554368f22940fac1cd6e712fb70309e185/safed.sh
楼主 看看这个脚本怎么处理的,可以临时解决你的问题 |
19
liuhaotian 2016-01-06 10:09:23 +08:00 via iPhone
@imxieke upyun 怎么申请赞助的啊
|
21
ayouwei 2016-01-06 11:13:19 +08:00
大部分 web server 都有 rate limit 功能呀, 把下载服务拆分出来单独配策略。 其实针对 url pattern 也行,只是不够清爽
|
22
crowds 2016-01-06 13:47:52 +08:00 via Android
限速不就好了 单个 ip 限速 50k 一天也下不了多少
|
23
aec4d 2016-01-06 14:16:35 +08:00
如果你会写代码修改逻辑 下载附件存储到了阿里云 OSS(OSS 可以生成临时访问 URL)
那么你可以尝试使用 OSS 的临时文件访问功能 比如将下载链接访问做统计 该链接不是直接的下载链接 而是一个 302 跳转 如果用户访问链接次数小于最大次数那么返回一个 60 秒或者 30 秒的临时访问的 URL 就可以了 我了解过阿里云、七牛、又拍 它们都没有直接的限定一个文件被某 IP 下载几次的方法 甚至连生成一次性访问 URL 的方法都没有 |
25
aec4d 2016-01-06 14:42:27 +08:00
@gamexg 各厂都有这功能,然而有效期并不能很好的防止资源被恶意访问 我设置了有效期很可能是我希望资源不被反反复复下载造成流量浪费
比如一个文件设置 30 秒有效期 我可以通过程序让在 30 秒内就创建几十几百个下载访问(假如一个文件是 1G 大小会造成多大的流量浪费) 各个云服务提供商并没有提供对每个 URL 的访问流量控制(比如这个 URL 最多只能消耗 1G 流量) |
26
chuhemiao 2016-01-06 15:46:13 +08:00
22+1
|
27
ryd994 2016-01-06 17:22:05 +08:00 via Android
文件服务器上限速限频率啊
|
28
ToughGuy 2016-01-06 17:43:51 +08:00
1. 感觉限制每个用户的下载速度和并发连接数会更简单有效一些, webserver 都有现成的模块
2. 拒绝掉 HTTP HEADER 包含 Accept-Ranges 头的请求即可 (Apache, NGINX 网上有现成方法) 3. awstats (WEB 可以用 jawstats. 有点老了,不过还可以凑合着用) |
29
wudanyang 2016-01-07 10:20:12 +08:00
阿里云不是有个按月付费吗
|
33
ranzige OP 反馈一下,现在使用 mod_bw 来控制流量。使用 goaccess 来监控流量(分析日志)。针对单 IP 的控制还是没有找到。防迅雷也没有找到
|