![有人来自中国想要杀死我的入口带宽?](https://linux22.com/image/540112/%E6%9C%89%E4%BA%BA%E6%9D%A5%E8%87%AA%E4%B8%AD%E5%9B%BD%E6%83%B3%E8%A6%81%E6%9D%80%E6%AD%BB%E6%88%91%E7%9A%84%E5%85%A5%E5%8F%A3%E5%B8%A6%E5%AE%BD%EF%BC%9F.png)
来自中国的某人使用两个不同的 IP 从我的服务器下载同一个大文件。他们的 IP 是:
- 122.89.45.210
- 60.210.7.62
他们每分钟请求并下载此文件超过 20 次。
我该怎么做才能防止这种情况发生?(我在 gentoo 上有 root 访问权限)
为什么他们要对一个与中国毫不相关的网站这样做呢?
添加1:
其他 IP:
- 221.8.60.131
- 124.67.47.56
- 119.249.179.139
- 60.9.0.176
添加2:
愚蠢的是他们只要求一个文件,哈哈。或者他们想删除那个文件(虽然我不明白为什么)或者他们很愚蠢
添加3:
情况越来越糟了。IP 也从其他国家传播开来(如果 www.geobytes.com/iplocator.htm 是正确的,那么就是美国和韩国)现在他们正在请求另一个文件。
添加4:
看来他们意识到我删除了那个文件后就不再攻击我了。我会监视情况。
他们在休眠 3-4 分钟后再次启动了同一个文件(我很幸运)。很难说为什么会发生这种情况
答案1
只需 2 个 IP 地址...您可以使用 iptables 轻松阻止 IP
iptables -I 输入 -s 122.89.45.210 -j DROP
iptables -I 输入 -s 260.210.7.62 -j DROP
编辑
由于 IP 地址数量不断增长,您可能需要考虑采取一些更激进的措施。您是否需要为中国 IP 地址提供服务?如果没有,您可以尝试使用以下网站来帮助封锁整个国家。只需将结果放入您的 .htaccess 文件中:
另一次编辑
所有请求是否还有其他共同点?用户代理是否相同?这很容易帮助阻止攻击。
答案2
我不知道您的服务器上使用的是哪种操作系统,但我猜是 UNIX(Debian、Ubuntu、Slackware 等)发行版。
保护自己免受 DoS 攻击的简单方法是安装 Fail2Ban(http://www.fail2ban.org/wiki/index.php/Main_Page)。它易于安装和使用。我使用它来保护 SSH,因为我遭受了大量 ssh dos 攻击。该程序会扫描日志文件并检查重复消息(即登录失败、像您这种情况的多次连接)。
您必须对其进行一些调整才能正确读取 Web 服务器的日志文件。如果您能够做到这一点,您可以限制访问 - 即,您可以将 1 ip 在 1 秒内尝试 GET 请求的次数限制为 50 次。达到阈值后,IP 地址将被禁止 X 次。这将帮助您节省带宽,并且不必担心此攻击是否来自其他地址。
希望这对你有帮助:)
编辑1:
我记得 apache 有一个模块可以限制这些事情 - mod_evasive。我个人从未使用过它,但很多人称它为“好东西”。我为你找到了一个教程,可能会对你有所帮助 -http://www.mydigitallife.info/2007/08/15/install-mod_evasive-for-apache-to-prevent-ddos-attacks/ 检查一下,看看它是否能满足您的需求。
答案3
您需要做的是联系您的上游提供商。大多数攻击都会对向您发起的 DDoS 攻击进行空路由;至于美国 IP,会向他们的 ISP 传达这些 IP 正在攻击您,他们通常会与客户交谈,而客户通常是机器人,负责发现您的问题,这就是为什么攻击主要来自亚洲国家。
答案4
iptables
并ipset
来救援!
首先,创建一个 IP 集:
ipset -N Attackers iphash
for ip in $LIST_OF_IP; do ipset -A Attackers $ip; done
接下来制定规则:
iptables -t raw -I PREROUTING -m set --match-set Attackers src -j DROP
或者,如果你感觉邪恶:
iptables -t raw -I PREROUTING -m set --match-set Attackers src -g trap_attackers
iptables -t raw -A trap_attackers -j NOTRACK
iptables -t raw -A trap_attackers -j ACCEPT
iptables -I INPUT -m conntrack --ctstate UNTRACKED -j TARPIT
每当有新的攻击者时,将其 IP 添加到集合中:
ipset -A Attackers a.b.c.d
-m match
上述操作可以通过使用、-m recent
和的组合来实现自动化-j SET
,例如-m match --string "GET http://url/to/offending/file" -m recent --seconds 60 --hitcount 2 -j SET --add-set Attackers src
笔记:确保对raw
表、ipset
和的支持TARPIT
都已编译到您的 Gentoo 内核中(或作为模块)。