封锁来自特定国家/地区的所有流量的相对简单的方法?


16

我有一个Web应用程序,在菲律宾没有用户,但是不断受到垃圾邮件制造者,梳理服务员测试卡以及那里其他不良活动的轰炸。我在日志中看到他们在菲律宾拥有IP,并且最初是通过google.ph或其他.ph网站找到我的网站。

我已经准备好了不错的过滤器和安全检查,因此它们并不会造成太大的损害,但是尽管如此,我真的已经厌倦了它。他们用尽带宽,用垃圾填满我的数据库,滥用日志和安全日志,浪费我的时间来命名帐户等。

尽管绝大多数菲律宾公民不是垃圾邮件发送者,而且我不能只阻止每个困扰我的国家,但在这一点上,我认为解决方案只是阻止从菲律宾到我的Web应用程序的所有流量。(我知道封锁整个国家的IP封锁不是一个好习惯,并且有很多问题,但是对于这个国家,我想例外。)

(我知道他们可以欺骗他们的IP地址,但至少我可以让他们为它工作。)

我知道那里有一些Geoip服务。有谁知道免费或便宜的服务吗?还是采用其他方法来过滤来自特定国家/地区的流量?

如果重要的话,我正在Apache 2上运行PHP。


2
有效问题。
crashmstr

crashmstr:我会这样认为。采取这种行动来试图封锁整个国家/地区,只会导致您切断的潜在用户比切断潜在的垃圾邮件发送者更多。而且,当垃圾邮件发送者开始来自您不希望阻止的区域(例如您自己的国家)时,您将陷入困境,因为您以前的所有方法都是浪费。
TheTXI

可能什么都没有-我目前的安全处理能力还不错。请在回答之前阅读问题。

<p>那么,当垃圾邮件发送者开始来自其他国家(或者更好的是开始通过美国路由其流量)时,您将怎么办?</ p>
TheTXI

1
菲律宾是世界上主要的英语国家之一,仅次于美国,英国,加拿大和澳大利亚。我强烈建议您不要禁止他们,而不是您要禁止澳大利亚。当然,除非您的网站是针对特定国家/地区的。但是,如果是这样,它应该有一个针对特定国家/地区的TLD,而不是一个.com,那么人们会知道您不与他们打交道,因此可以访问samename.com。
李B

Answers:


8

您可以使用免费的IP Locatin API(例如IPInfoDB http://ipinfodb.com/index.php)基于IP地址来执行此操作。


28

与这里的其他大多数海报不同,我不会告诉您这是一个坏主意,您不应该这样做,它不能解决您的问题,或者您应该做其他事情。这是我们发生的事情:

来自中国和韩国的个人(或者无论如何都在中国和韩国使用代理)一直困扰着我们。Portscanning,爬网我们的网站以寻找漏洞,进行登录尝试等。我试图忽略它们(fail2ban通常会处理它们),但在某些时候,它们对我们的打击如此之大,以至于实际上变成了DoS攻击。当您试图将Web服务器用作代理,尝试SSH进入您的计算机,尝试使用随机的用户名和密码的人同时拥有数百个连接时,它往往会在站点上造成压力。我最终受够了。

我们没有从中国或韩国获得任何合法流量;我们的公司不在那里销售产品(我们是电子商务),因此不存在丢失合法流量的风险,因此我认为提前阻止它们而不是等待它们变得肮脏起来会更容易。

  1. 访问http://ip.ludost.net/并下载其IP <->国家数据库。
  2. 提取所有中文和韩文IP地址范围。
  3. 为netfilter安装了ipset模块
  4. 为中国和韩国构建的ipset转储(请参见下文)
  5. 向iptables添加了规则,以静默丢弃来自那些集合的任何流量。

就是这样。我们的问题用户走了,网络和服务器的负载减少了,我们度过了圣诞节,没有困难。

注意1:您可以使用常规iptables(即不使用ipset)来执行此操作,但与使用ipset相比,其计算开销更大。

注2:这是转储的外观(如果需要,ipset会为您生成这些文件):

# Generated by ipset 2.3.3 on Sat Oct  4 18:02:57 2008
-N china nethash --hashsize 5184 --probes 4 --resize 50
-A china 203.207.128.0/17
-A china 221.176.0.0/13
-A china 58.154.0.0/15
-A china 114.54.0.0/15
...etc...

注3:由于所有范围都存储为CIDR块,因此我们使用nethash。如果您不想将它们转换为CIDR,则可以改用iptreemap,但是我想如果流量很大,效率可能会降低。


2
我要说的是,封锁一个像中国或韩国这样的国家或任何地方的想法,不仅是封锁一群讲不同语言的人。我是美国公民,如果我想从您的公司购买东西,您会因为我在韩国工作而失去了我的客户。是的,那里合法的流量。
GNUix

16
是的,除了因为我们不运送到韩国,我们还是无法向您出售任何东西,因此您进入我们的网站毫无意义。我们从来没有来自中国或韩国的人购买任何东西并将其运送到美国,因此根据我们的分析,每年损失的销售数量可能达到十次。
丹·乌迪

2

您如何解决代码中的错误?

这样吗

错误:Add(2,2)返回0,应返回4。

固定代码:

int Add(int x, int y)
{
   if (x == 2 && y == 2)
      { return 4; }
   return 0;
}

明显不是。您不仅会造成特殊情况摇摇欲坠的怪兽,而且极其脆弱,并且是灾难的根源。您也不仅可以解决今天的基本问题征兆。

相反,找出根本原因,然后解决。这比您可以实施的任何骇客的特殊情况补丁程序都要强大得多。

为什么您的Web应用容易受到垃圾邮件攻击?哪些特征使其易受攻击?哪些特征使其成为有价值的目标?有什么方法可以更改这些特征,以使您的应用程序更强大,更有效地抵制垃圾邮件并减少诱人的目标?几乎可以肯定,这些问题的答案是肯定的。将验证链添加到您的表单,智能使用验证码,随机化URL和/或参数名称,使它们对机器人不友好。有数百万种方法可以解决此问题,很抱歉,您选择的是其中最有价值,最有用和最脆弱的解决方案之一。


15
我有这些,谢谢。在制定答案之前,您是否真的阅读过该帖子?
伊莱(Eli)2009年

1
@Eli,显然你有。这就是为什么您退回到激进措施的原因。因为您以前的努力是如此有效。

1

首先,我强烈建议您不要这样做。

正如其他人更有说服力的说,封锁一个特定国家并不能解决问题,只会稍微推迟一下。此外,当来自该国家/地区的用户看到您专门阻止了他们时,只会激发他们给您带来更多问题。

就是说,如果您真的想这样做,IPinfoDB提供免费的IP地理位置数据库,

首先,将仅按国家/地区定位IP。

您可以这样搜索:

SELECT * FROM `ip_group_country` where `ip_start` <= INET_ATON('74.125.45.100') order by ip_start desc limit 1;

要么

SELECT * FROM `ip_group_country` where `ip_start` <= 1249717504 order by ip_start desc limit 1;

其次,您可能希望获取特定国家/地区的IP,以使用iptable,htaccess文件或您使用的任何文件生成阻止列表。它将像这样完成:

SELECT `ip_cidr` FROM `ip_group_country` WHERE `country_code` = 'AF' order by ip_start;

这会给你:

63.243.149.0/24
67.212.160.0/24

0

您应该使用fail2ban之类的产品来消除您在Web应用程序中抛出的表明正在进行垃圾邮件的错误。这将在一段时间内阻止IP,使您的站点具有抵抗力,但不能完全阻止整个IP块。


3
就像我在帖子中所说的那样(没人看过),我有一个非常好的阻止和阻止垃圾邮件的系统。我希望减轻它要做的工作量以及我花在监视它上的时间。
伊莱2009年

这就是为什么我建议使用fail2ban的原因。它会自动为您禁止有问题的IP,而无需强行阻止大型IP块。
凯文·库帕尔

0

几个解决方案:

这些解决方案非常容易,快捷,免费。

较长期的解决方案是从您的Web应用程序检测垃圾邮件,记录IP并提供iptables以自动阻止它们。


0

您是否考虑过找到谁在运行您所攻击的网络?使用Whois查找“滥用”联系人并向他们报告。当然,它可能来自多个网络,但是如果您看到一些重复出现的地址/网络块,那也值得。


4
如果您曾经尝试过与亚洲(尤其是中国,韩国等)的ISP打交道,您会发现他们从未做过的一件事就是关心一些外国人在抱怨什么。他们没有时间去做正确的事情,所以他们不值得。报告滥用行为会浪费您的时间。
丹·乌迪

我居住在韩国,除了在韩国ISP上度过了愉快的经历外,没有其他事情。
GNUix'6

0

你必须每天以阻止任何理由可以证明自己的IP地址正确。提供服务的是您,决定是否可以提供服务的是您。如果这是道德的,也许会令人怀疑,但是那只能由您自己决定。

但是,由于某个IP区域具有某些地理方面的原因而将其阻止,在我看来或多或少类似于恐慌方法。

我过去所做的是让搜寻器浏览我最近的日志,并根据该禁令在24小时内烦人的单个IP。如果该特定IP再次出现异常,则将其禁止2天,3天等,以此类推。

被禁止使用一周以上的IP将被邮寄给我,我会向该服务提供商发送滥用邮件(他们知道它甚至可能会有所帮助)。


0

我会选择一个Snort + OSSEC解决方案,该解决方案可以动态维护这样的内容。


这就是安全VPN的目的。
Andrew Ensley 2015年
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.