我正在考虑网络安全,然后这个想法突然出现在我脑海中。
说这个混蛋讨厌我,知道如何编程。我正在管理一个网站/博客,网站流量相当大。然后那个混蛋创建了一个程序,它会一遍又一遍地自动请求我的网站。
因此,如果我在共享托管服务提供商处托管我的网站,那么显然我的网站将停止响应。
这种类型的攻击可能并不常见,但如果有人在我的网站上尝试过类似的攻击,我必须对此做些什么。我不认为流行的CMS像wordpress或drupal那样对这类攻击做些什么。
我的假设是;
如果用户在1分钟内请求超过x
次(假设为50),则阻止该用户。 (停止回应)
我的问题是
我的假设好吗?如果不是该怎么办?
Google,Facebook,Youtube等网站[等]会对此类攻击做些什么。
答案 0 :(得分:3)
您面临的是 DoS 。[拒绝服务]攻击。一个系统试图继续向您的网络服务器发送数据包并使其无响应。
你提到了一个混蛋,如果同一个混蛋有很多朋友,那么 DDoS [分布式DoS ]攻击会怎么样?这是无法阻止的。
Apache Docs针对 DoS 的快速修复,但不针对 DDoS ...
所有网络服务器都可能遭受拒绝服务攻击 试图通过占用资源来阻止对客户的响应 服务器。完全无法阻止此类攻击,但是 你可以做某些事情来缓解他们创造的问题。
最有效的反DoS工具通常是防火墙或其他工具 操作系统配置。例如,大多数防火墙都可以 配置为限制来自任何连接的同时连接数 个人IP地址或网络,从而防止一系列简单 攻击。 当然这对分布式拒绝没有帮助 服务攻击(DDoS)。
<强> Source 强>
答案 1 :(得分:2)
这些类型的攻击称为(D)DoS(分布式拒绝服务)攻击,通常由托管PHP应用程序的Web服务器阻止。由于使用了apache,我发现了一篇你可能感兴趣的文章:http://www.linuxforu.com/2011/04/securing-apache-part-8-dos-ddos-attacks/。
文章指出,apache有多个专门用于防止(D)DoS攻击的mod。这些仍然需要安装和配置以满足您的需求。
我相信Facebook,Google等都有自己类似的实施来防止DoS攻击。我知道,如果很多搜索请求来自同一网络,Google搜索引擎会使用验证码。
为什么在PHP脚本中阻止DoS是不明智的,因为每当发出请求时仍需要启动PHP处理器,这会导致很多开销。通过使用网络服务器,您可以减少开销。
修改强> 如另一个答案所述,还可以通过配置服务器的防火墙来防止常见的DoS攻击。检查具有防火墙规则的攻击是在Web服务器受到攻击之前发生的,因此开销更少。此外,您还可以检测对其他端口的攻击(例如端口扫描)。我相信两者的结合最好,因为它们互相补充。
答案 2 :(得分:1)
问题部分在于拒绝糟糕的流量,部分是改善自己代码的性能。
被恶意攻击造成超额流量被称为拒绝服务攻击。我的想法是通过流量访问网站,使服务器无法应对负载,停止响应,因此没有人可以通过并且网站脱机。
但是,由于您的网站变得流行,您也可能因流量太大而受到打击。这很容易在一夜之间发生,并且没有任何警告,例如,如果有人在其他热门网站上发布了指向您网站的链接。这种流量实际上可能是真实的并且需要(额外销售数百美元!yay!),但如果您没有做好准备,可能会对您的服务器产生相同的影响。
正如其他人所说,配置您的网络服务器以应对高流量非常重要;我会让其他答案在这个问题上说明一点,这是重要的一点,但是你可以在自己的代码中做些改进的事情。
服务器无法应对增加的负载的一个主要原因是由于请求所花费的处理时间。
您的网络服务器只能同时处理一定数量的请求,但此处的关键字是“同步”,减少同时请求数量的关键是减少您的时间。程序运行。
想象一下,您的服务器可以同时处理10个请求,并且您的页面需要一秒钟才能加载。
如果每秒最多获得10个请求,一切都将无缝地工作,因为服务器可以应对它。但是如果你略微超过那个,那么第十一个请求要么失败要么必须等到其他十个要求完成。然后它会运行,但会进入下一秒的十个请求。到了十秒钟的时候,你的响应时间就缩短了一整秒,只要请求不断涌入同一级别,它就会越来越糟。服务器不会花费很长时间就会被淹没,即使只是它只是它的容量的一小部分。
现在想象同一页面可以优化以减少时间,让我们说半秒钟。您的同一台服务器现在可以处理每秒20个请求,因为PHP代码更快。而且,它将更容易从过多的流量水平恢复。而且因为PHP代码运行时间较短,所以任何两个给定请求的可能性都会降低。
简而言之,当您减少处理请求所需的时间时,服务器处理高流量的能力会大大增加 。
因此,这是网站在高流量浪涌中幸存的关键:让它运行得更快。
缓存:像Drupal和Wordpress这样的CMS内置了缓存。确保它已启用。为了获得更好的性能,请考虑像Varnish这样的服务器级缓存系统。对于不会更改页面内容的CMS类型系统,这是提高性能所能做的最重要的事情。
优化您的代码:虽然您不能期望修复第三方软件(如Drupal)中的性能问题,但可以分析您自己代码的性能,如果您有任何。可能是自定义Drupal模块?使用分析器工具查找瓶颈。通常,这种分析可以揭示单个瓶颈是造成90%页面加载时间的原因。不要费心去优化小东西,但是如果你能找到并解决这样的一两个大瓶颈,它就会产生巨大的影响。
希望有所帮助。
答案 3 :(得分:0)
在我看来,防止DoS的最佳方法是将防火墙设置为较低级别:在服务器的入口处。通过使用 iptables 设置某些网络防火墙配置,您可以丢弃来自服务器的数据包过多的数据包。
它比通过PHP和Apache更有效率,因为它们需要使用大量(相对)的进程来进行检查,即使您检测到攻击者,它们也可能阻止您的网站。< / p>
您可以查看此主题以获取更多信息:https://serverfault.com/questions/410604/iptables-rules-to-counter-the-most-common-dos-attacks