我的 Apache 服务器目前正在遭受 DDoS 攻击。看起来所有流量都是来自俄罗斯文件共享网站文件服务器的引荐。我如何才能仅阻止来自受感染网站的流量?
答案1
以上这些答案都无济于事。
如果您的网站遭受 DDoS 攻击,唯一真正可用的帮助来源是上游提供商的技术联系人。
是的,你可以在边缘拒绝并丢弃数据包你的网络,但如果您的连接已经被来自外部的流量所饱和,那么它就不会有任何区别。
您需要与您的提供商合作,在流量到达其网络外部时丢弃流量,该网络具有大量备用冗余容量,并且更容易应用整个空路由块。
更改 iptables 或重写您的网络服务器可能会给您阻止攻击的印象,但这就像试图在割伤的动脉上贴创可贴一样。
大量的攻击流量甚至可能压垮您的内核,如果它正在执行 iptables 操作,丢弃流量也会占用 CPU 时间。让您的 ISP/Transit 提供商来做这件事。
从他们的角度来看,这也更容易。
答案2
你可以通过 iptables 简单限制每个 IP 的现有连接数来保护你的站点免受 DoS 攻击(来自任何站点)
此规则拒绝来自一个 IP 的超过 10 个连接:
iptables -A INPUT -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT --reject-with tcp-reset
以下记录了这些事件:
iptables -A INPUT -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 -j LOG --log-prefix "超过限制“
连接数只是一个例子,您必须设置自己的值。但是,如果您知道此刻 DoS 正从这个俄罗斯网站向您发起攻击,请永久阻止此 IP
iptables -I 输入 -s XXXX -j DROP
其中 xxxx 是该站点的 IP 地址。
答案3
大多数 DDoS 攻击来自多个 IP 地址,因此仅阻止单个 IP 地址可能无法“解决问题”。但是,为了帮助您(在真正的 DDoS 攻击中),我们需要更多信息,例如这是什么类型的 DDoS - SYN 洪水、ICMP 洪水、其他等等...
回答您的具体问题...
我怎样才能仅阻止来自受感染网站的流量?
根据您的操作系统(是 Ubuntu?CentOS?还是其他?)及其配置方式(是 VPS?还是您自己的物理服务器?),您可能能够使用 IP 表来阻止来自特定 IP 地址的请求:
iptables -I INPUT -s 1.2.3.4 -j DROP
但是,如果这不能回答您的问题,请向我们提供有关您的配置、日志文件、服务器架构、具体发生了什么等的更多信息...
答案4
如果您所说的 DDoS 是指大量常规用户访问您的网站并下载某些内容,那么最好的办法是通过 referer 拒绝这些请求。
最好通过查看日志来查找(介意分享几行吗?)。
因此,您可以设置类似这样的内容。您仍会获得大量连接,但这些连接会很快被拒绝,并且不会对您的 Apache 造成太大的负载。
RewriteEngine on
RewriteCond %{HTTP_REFERER} referingsite.com [NC]
RewriteRule .* - [F]
或者您可以采用其他方式,拒绝所有没有空引荐来源或来自您网站的引荐来源的请求。
当然,如果只是普通的DDoS,这无济于事。