如何阻止针对phpMyAdmin的黑客入侵尝试?


35

我的网站每天通过不同的IP尝试访问数千个点击:

/php-myadmin/
/myadmin/
/mysql/

...以及数千种其他变体。这些目录都不存在,我的服务器上甚至没有phpmyadmin。

我认为这些尝试都没有成功,但是它们肯定会浪费服务器资源并浪费带宽,因此,我想尽可能地阻止它们。我已经阻止了其中一些IP,但它们会不断使用新的IP,有什么办法可以更永久地防止这种情况发生?


8
每天的点击数不计其数。您实际上是在遇到性能困难还是只是在假设?一天中的几千个404确实不算什么
MDMarra 2014年

不,我没有遇到性能问题。但这让我很烦,我想知道是否有我可以做的事。
amba88 2014年

6
注意基于IP的阻止-许多IP最终会循环给合法用户。而且,某些合法用户可能会被感染为僵尸网络的一部分。如果您进行任何基于IP的阻止,请确保其有效期较短。
鲍勃

mod_security在此线程中没有提及,因此请查看。请注意,下面的注释指出,实际上这实际上将导致服务器完成更多工作。所以也许实施起来mod_evasive也很好。 ,但下面列出了。fail2ban
mbrownnyc

Answers:


42

不用担心 为404服务是Web服务器要做的非常少的工作。您可能会使用486来每秒为十个404服务。每个404的带宽可以忽略不计;一个小的GET请求和一个小的404响应。

认真地 不用担心 这只是在互联网上运行服务器的一部分。


14
地狱禁令:输出正常页面(200 OK),输出乱码。孩子们使用的工具将报告找到的页面,他们将需要手工进行调查(假冒的登录页面肯定是恶魔设备):)
arul 2014年

4
@arul-一些攻击者可能会将其视为挑战,并过分注意服务器。在这里使用较小或不同的404会很有用吗?例如,如果主机通常为带有支持链接的404服务,那么它是否应该/可以为不包含这些目标URL内容的普通404服务?
Freiheit 2014年

1
目的是使对手花费额外的资源(时间)来分析结果。如果您收到404密码,则说明该攻击无法进行。长度可变的OK结果(无需进一步研究)与预期结果没有区别。他们进行这些扫描是因为耐心不是他们的美德,所以请
驱除

1
为了获得加分,请返回一个看上去与实际phpmyadmin页面完全相似的静态页面,但该页面完全不起作用。
captncraig 2014年

1
要获得额外的奖励积分,请延迟0.5-1秒。这不会显着增加合法用户进行加载的时间,但会减慢恶意分子正在执行的扫描。(您只需要确保服务器有能力将连接保持打开状态的时间长于必要的时间,并且仍然可以处理合法请求。)
Moshe Katz 2014年

38

不幸的是,这就是互联网的运作方式。只是忽略它。成千上万的僵尸程序/特洛伊木马程序扫描了Internet。源IP将始终是随机的。没有治愈方法。

消除流量的唯一100%解决方案如下所示: 在此处输入图片说明

一种替代方法是:
-使用https / http从端口80/443移动到其他端口。漫游器通常不会在所有其他65k端口上寻找http服务器。
-使用VPN连接到服务器(如果您托管公共网站,我想这是不可能的)。


该图的LOL +1 :-)我在一个静态站点上有这个烦人的问题(就像我们所有人一样),这是最有用的答案。
戴夫·埃弗里特

30

您想要的是Fail2ban(假设这是一台Linux计算机,您没有说...)

什么是Fail2ban?

Fail2ban将解析系统日志,以查找要阻止的特定正则表达式。当找到匹配项(或来自同一IP的多个匹配项,具体取决于您如何配置)时,它将阻止,通常通过IPTables。通常,这用于阻止针对SSH或Web服务器的身份验证尝试失败。

您将其配置为在一定时间段内禁止使用它们(可能是几分钟,可能是几天...取决于它们的持久性),在此之后该禁止将失效,除非他们再次尝试。

如何帮助阻止phpmyadmin扫描机器人?

它可以很容易地用于匹配攻击的常见征兆,例如尝试访问不存在的phpmyadmin文件夹。您将必须找出正确的正则表达式以匹配此类尝试,并确保您不会阻止合法用户。

这篇博客文章中给出的配置可以逐字工作或需要对设置进行一些调整。

我为什么要阻止他们?404错误的代价不高

在iptables中阻止它们确实有一些用处-很有可能是如果他们正在检查phpmyadmin漏洞,那么他们也可能会尝试其他服务的漏洞,直到发现有用的东西为止。禁止使用它们会使大多数bot /脚本在一段时间后放弃,并且它们将继续朝着更好的目标发展。

即使通过扫描不会花费很多(除非他们实际上发现了一个漏洞),但它们的确淹没了您的日志,使您很难看到成功的攻击和Web服务器问题。

如下面的评论所述,Fail2ban确实需要一些系统资源。但并不多。至少我可以说我从未遇到过可以归因于Fail2ban的性能问题。但是,由于非常激进的脚本试图暴力破解密码或每秒在服务器上抛出数千次SQL注入尝试和其他攻击,我遇到了性能问题。与在服务器/应用程序级别上进行阻止相比,在防火墙级别上进行阻止所需的资源少得多。它也可以扩展为运行自定义脚本以禁止IP地址-因此,与其在IPtables中禁止它们,不如将其禁止在硬件防火墙中,或者如果同一个人不断尝试攻击您,则可以向某人发送电子邮件,以便您可以投诉到他们的ISP或让您的数据中心将它们阻止在其防火墙上。

还有其他提示吗?

强烈建议您将一些自己控制的IP地址列入白名单,以免被误锁定。


6
这将是资源的:)我认为你会使用更多的CPU周期上的fail2ban比单纯有时服务404 :)一个浪费
巴特洛梅耶Zarzecki

4
@BartłomiejZarzecki更好的安全性始终需要更多资源
user11153 2014年

3
@ heinrich5991它将在第一次尝试后阻止。对于某些扫描没有什么影响,但是对于尝试在服务器上进行多次尝试的扫描却有很大的不同。
格兰特(Grant)

2
希望Fail2ban(或类似功能)不仅仅适用于/ phpmyadmin。假设他具有任何种类的远程访问权限,F2B类型阻止(3个密码,您...都已经消失了!)不仅仅包含404个代码。
WernerCD 2014年

3
如果您这样做,请确保将禁令设置为相对较快地过期(最多几个小时),否则,如果攻击来自动态分配的IP,则有可能将合法用户拒之门外。
Jens Neubauer 2014年

7

我要做的是将一个小脚本放入相应的目录中,以便在有人访问/ phpmyadmin /时运行该脚本。该脚本除了调用iptables(在Linux下)外,什么都不做,这会阻止IP地址访问脚本30分钟(此后,cron-job刷新将IP地址添加到的iptables链)。

与fail2ban相比,优点是您不使用任何资源来解析syslog / access-log。缺点当然是,除了访问此非常特定的地址之外,您不检查其他任何内容。

我为什么要这样做?当然,为服务器提供404服务很容易,但是我不希望他们四处乱逛,就这么简单。我想浪费他们的工具时间,等待服务器回复,然后重试直到最终放弃。另外,如果您不阻止它们,它们将尝试许多不同的URL,然后再继续使用-有时超过一千。根据工具的不同,它可能会很“不错”,并在几个小时内将它们间隔开,或者可能不在乎,并在几分钟之内将所有服务器与服务器连接起来。

我为什么不提供有效的页面?他们的工具可能会停止扫描您,并警告正在运行它的滑橇-然后,后者必须手动检出。不利的一面是,如果它们的扫描不能使您获得满意的结果,它们将使您的服务器比它们看上去更近。也许他们会戳更多一点,也许会扫描一些端口,也许会让他们发疯,然后他们会发起DoS来查看它们是否可以执行任何操作。简单地阻止它们-从他们的角度来看,这使服务器在访问phpmyadmin脚本时就超时了-有效地浪费了他们的工具时间,同时避免了不必要的注意。

如果确实在服务器上安装了phpMyAdmin,则有效的解决方案可能是将其放在单独的目录中,并使用网络服务器的密码控件(对于Apache为.htpasswd)来阻止访问,然后再进行访问。


听起来像是一个不错的替代选择...但是,这是否要求Web服务器能够以root权限运行脚本?
格兰特(Grant)

1
调整phpMyAdmin之类的工具的别名。只需更改配置文件即可将其更改为adminMyPhp或chrisPhpAdmin ...或不会被脚本欺骗的内容。
WernerCD 2014年

对不起,您的回复很晚-不需要(不必要)。您可以使用sudo(带有sudoers文件)来允许Web服务器以root权限执行一个众所周知的脚本(以及该脚本)。该脚本将接受(作为参数)IP,然后根据正则表达式([0-9] + \。[0-9] + \。[0-9] + \。[0-9] + )以确保它不会注入任何奇怪的东西。
2014年

1

FWIW我们仅将对/ phpmyadmin /的访问限制为列入白名单的IP地址。

我们还使用mod_evasive(在apache2上)来阻止DOS /行为不佳的脚本攻击。


1

将mysql管理工具绑定到您的机器环回地址127.0.0.1

然后将ssh与端口转发一起使用以访问您的管理员后端。

增加一层额外的安全性,这可以是相当透明的。


-4

我们发现的最佳方法是用密码保护phpmyadmin所在的文件夹。此外,请勿将与phpmyadmin相关的任何内容用作文件夹名称:pma,phpmy等。


2
从这个问题开始:None of these directories exist, I don't even have phpmyadmin on my server.-他不是在问如何加强现有安装...他是在问如何处理不存在的内容。您无法重命名,PMA或者如果不存在,您将拥有什么。
WernerCD 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.