对付低级别攻击者?

对付低级别攻击者?

我有一个小型游戏网站,有 400 名成员(其中约 50 名活跃成员),基于 MySQL 数据库构建。我是唯一的开发人员,而且我是业余爱好者,所以我会犯不少错误。

为了保护我自己、网站和我的成员的贡献,我已将服务器设置为使用纯文本“我们遇到了错误”消息并自动通过电子邮件向我发送 PHP 错误信息。

当然,这在公司环境中是行不通的,太过严厉,但我的成员们都很理解,因为我们是一起发展网站的,而且我和他们中的大多数人都有私人关系。他们通常都是不懂技术的老人,这意味着故障软化的情况会让他们感到困惑。

该网站还在所有地方使用 PDO。

/背景故事完成

我今早醒来发现有 90 封错误邮件。不寻常!

所有这些都是在 2 分钟内触发的……极不寻常!

错误消息如下

PDOStatement::execute() expects parameter 1 to be array, string given

从我的代码来看,如果没有外界干扰这是不可能的。

于是我抓取了我的流量日志,发现来自东京的 IP 219.117.193.20 正在向我的网站发起如下请求:

GET /search.php?type=basic%20AND%201%20=%201

其中第一部分GET /search.php?type=basic有效,并列在主导航中。其余所有内容均附加。

看起来像一次简单的Bobby Tables攻击。

这种情况持续了几分钟,打了大约 100 个电话,然后就停止了。

我想问你们的是:

我是否应该尝试针对此 IP 采取一些措施?

或者这仅仅是可见性的代价并且太频繁以至于不值得关心?

您是否禁止了该 IP?子网?您是否联系了 ISP?

我只是好奇专业的服务器管理员在这种情况下会做什么,因为我想这肯定会发生极其频繁地...?

答案1

这是成名的代价。每隔一段时间,就会有人尝试针对几乎每个网站采取某种措施(例如,每隔几天,我就会发现一次针对 phpMyAdmin 易受攻击版本的扫描)。由于所涉及的机器几乎全部是僵尸终端用户机器,因此“采取行动”对它们毫无用处(当然,任何形式的“主动对策”都是完全错误的,但即使试图向所有者报告受感染的机器也几乎肯定是徒劳的)。

确保您的网站是安全的,然后继续您的一天。

答案2

由于您也是开发人员,您可能会考虑编写适当的错误处理程序来忽略和/或甚至触发“tar pit”响应/处理。

答案3

您要做的第一件事是验证收到的每个输入,并完全参数化传入数据库的每个查询。这样 SQL 注入攻击就不会成功。

正如 @womble 所说,试图禁止 IP 或子网是毫无意义的。发起攻击的人很可能根本不在该 IP 上。他们只会切换到另一个僵尸并继续攻击。

确保一切安全,然后就大功告成了。攻击将会失败,他们会感到厌倦,然后继续前进。

答案4

您可以尝试使用自行生成的客户端密钥来保护您的网站。仅将该密钥分发给您的成员并每年更新一次。

缺点:您可能必须解释如何在所有类型的网络浏览器中安装和使用该密钥……

更简单的方法可能是使用 .htdigest 密码保护您的服务器。

相关内容