我有一个在菲律宾没有用户的networking应用程序,但不断受到垃圾邮件发送者,卡片testing人员以及其他不受欢迎的活动的轰炸。 我可以在日志中看到他们在菲律宾有IP,最初通过google.ph或其他.ph网站find我的网站。
我有相当不错的filter和安全检查,所以他们并没有真正造成太大的损害,但是,我真的很厌倦它。 他们使用带宽,填满我的数据库,滥用日志和安全日志废话,浪费我的时间帐户等。
虽然绝大多数菲律宾公民不是垃圾邮件发送者,但我不能阻止每一个惹恼我的国家,在这一点上,我认为解决scheme只是阻止来自菲律宾的所有stream量到我的web应用程序。 (我知道封锁整个国家的知识产权组织并不是一个很好的做法,并且有很多问题,但是对于这个国家,我想要例外)。
(我知道他们可以欺骗他们的IP地址,但至less我可以让他们为此工作一下。)
我知道那里有几个geoip服务。 任何人都知道任何免费或便宜的服务? 或者其他任何方式来过滤来自特定国家的stream量?
如果有问题,我在Apache 2上运行PHP。
您可以使用免费的IP Locatin API(如IPInfoDB http://ipinfodb.com/index.php),根据IP地址进行此操作。
与其他大多数海报不同,我不会告诉你这是一个坏主意,你不应该这样做,它不会解决你的问题,或者你应该做别的事情。 以下是我们遇到的情况:
来自中国和韩国的个人(或者在中国和韩国使用代理)一直让我们烦恼。 端口扫描,抓取我们的网站寻找漏洞,进行login尝试等。我试图忽略它们(fail2ban通常照顾他们),但在某些时候,他们打我们很难,它有效地变成了DoS攻击。 当您试图将您的networking服务器用作代理时,一次有数百个连接,尝试SSH到您的机器,尝试随机的用户名和密码,它往往会在网站上权衡。 我最终受够了。
我们没有从中国或韩国获得任何合法的stream量。 我们公司不在那里销售(我们是电子商务),所以没有丢失合法stream量的风险,所以我觉得提前阻止他们是比较容易的,而不是等着他们成为鸡鸣。
就是这样。 我们的问题用户走了,networking上的负载和服务器减less了,我们顺利度过了圣诞节的季节。
注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 :我们使用nethash,因为我们所有的范围都存储为CIDR块。 如果你不想把它们转换成CIDR,你可以使用iptreemap来代替,但是我想如果你得到很多stream量,可能效率会降低。
你如何修复代码中的错误?
像这样?
Bug:添加(2,2)返回0,应该返回4。
固定代码:
int Add(int x, int y) { if (x == 2 && y == 2) { return 4; } return 0; }
很明显不是。 你不只是创造一个特殊情况下的巨大的怪物,这是非常脆弱的,是一个灾难的秘诀。 你也不只是修补今天的根本问题的症状。
相反,找出根本原因,并解决这个问题。 这比你可以实现的任何黑客特例补丁都要强大得多。
为什么你的networking应用程序容易受到垃圾邮件 什么样的特征使其变得脆弱 有什么特点使它成为一个有价值的目 有没有方法可以改变这些特点,使您的应用程序更强大的反垃圾邮件和更less的诱人的目标? 这些问题的答案几乎肯定是肯定的。 将validation链添加到您的表单中,智能地使用validation码,随机化URL和/或参数名称,使其对机器人不友好。 有数百万种方法可以解决这个问题,我很抱歉地说你已经select了最有价值,最不实用,最脆弱的解决scheme之一。
这个网站似乎提供了50美元的IP国家数据库。 不是很自由,但相当便宜。
首先,我强烈build议不要这样做。
正如其他人更有说服力,阻止一个特定的国家并不能解决问题,它只是略微推迟。 而且,当来自该国的用户看到你已经专门阻止他们 ,这只会激励他们给你带来更多的问题。
也就是说,如果你真的想这样做, IPinfoDB提供一个免费的IP地理位置数据库,
首先,简单地按国家来定位知识产权。
你会这样search:
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
您应该使用诸如fail2ban之类的产品来closures您在Web应用程序中引发的错误,指出正在进行垃圾邮件尝试。 这将阻止IP一段时间,使您的网站抵抗,但不是全面阻止整个IP块。
几个解决scheme:
这些解决scheme非常简单快捷,并且免费。
更长远的解决scheme是检测您的Web应用程序中的垃圾邮件,loggingIP并提供您的iptables以自动阻止它们。
你有没有考虑find谁在经营你被攻击的networking? 使用whois查找“滥用”联系人并向他们报告。 当然,它可能来自多个networking,但如果您看到一些重复的地址/networking块,也可能值得。
你完全有权阻止任何你可以certificate自己的理由的IP地址。 是你提供服务,是你决定谁可以拥有它。 这是否是道德的,也许是有问题的,但这是你自己只能自己决定的事情。
但是,由于IP分段具有一些地理方面的原因,阻止IP分段对我来说或多或less是一种恐慌的方法。
我过去所做的就是让抓取工具浏览我最近的日志,并根据禁止24小时内讨厌的个人知识产权。 如果这个特定的知识产权再次行为不端,那么被禁止2天,3天等等,你会得到漂移。
被禁止超过一个星期的知识产权将被邮寄给我,我发送滥用邮件给该服务提供商(谁知道这甚至可以帮助)。
我会select一个Snort + OSSEC解决scheme,可以保持这样的dynamic。