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

Eli*_*Eli 21 security spam abuse geoip

我有一个在菲律宾没有用户的 Web 应用程序,但它不断受到垃圾邮件发送者、测试卡的卡片者和来自那里的其他不良活动的轰炸。我可以在日志中看到他们在菲律宾拥有 IP,并且最初是通过 google.ph 或其他.ph网站找到我的网站。

我有很好的过滤器和安全检查,所以它们不会造成太大的损害,但尽管如此,我真的厌倦了。他们用尽带宽,填满我的数据库,滥用日志和安全日志,浪费我的时间来命名帐户等。

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

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

我知道那里有一些 geoip 服务。有谁知道任何免费或便宜的服务?或者有什么其他方法可以过滤来自特定国家/地区的流量?

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

Dan*_*dey 33

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

来自中国和韩国的人(或者在中国和韩国使用代理,无论如何)一直让我们烦恼。端口扫描、抓取我们的网站寻找漏洞、进行登录尝试等。我试图忽略它们(fail2ban 通常会处理它们)但在某些时候它们对我们的打击如此之大,以至于它实际上变成了 DoS 攻击。当您同时有数百个连接来自尝试使用您的网络服务器作为代理、尝试通过 SSH 连接到您的机器、尝试随机用户名和密码的人时,它往往会给站点带来压力。我终于厌倦了。

我们没有从中国或韩国获得任何合法流量;我们公司不在那里销售(我们是电子商务),所以没有失去合法流量的风险,所以我认为提前阻止它们比等待它们变老更容易。

  1. 访问http://ip.ludost.net/并下载他们的 IP<->country 数据库。
  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...
Run Code Online (Sandbox Code Playgroud)

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

  • 是的,除了因为我们不运送到韩国,所以无论如何我们都不能卖给您任何东西,所以您访问我们的网站没有任何意义。我们也从未让来自中国或韩国的任何人购买任何东西并将其运送到美国,因此根据我们的分析,一年内损失的销售数量可能会达到 10。 (18认同)
  • 我想说明的一点是,封锁中国或韩国等国家或任何地方的想法不仅仅是封锁一群说与您不同语言的人。我是美国公民,如果我想从贵公司购买东西,你会失去我作为客户的身份,因为我在韩国服务。所以是的,那里*有*合法流量。 (2认同)

小智 8

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