与这里的其他大多数海报不同,我不会告诉您这是一个坏主意,您不应该这样做,它不能解决您的问题,或者您应该做其他事情。这是我们发生的事情:
来自中国和韩国的个人(或者无论如何都在中国和韩国使用代理)一直困扰着我们。Portscanning,爬网我们的网站以寻找漏洞,进行登录尝试等。我试图忽略它们(fail2ban通常会处理它们),但在某些时候,它们对我们的打击如此之大,以至于实际上变成了DoS攻击。当您试图将Web服务器用作代理,尝试SSH进入您的计算机,尝试使用随机的用户名和密码的人同时拥有数百个连接时,它往往会在站点上造成压力。我最终受够了。
我们没有从中国或韩国获得任何合法流量;我们的公司不在那里销售产品(我们是电子商务),因此不存在丢失合法流量的风险,因此我认为提前阻止它们而不是等待它们变得肮脏起来会更容易。
- 访问http://ip.ludost.net/并下载其IP <->国家数据库。
- 提取所有中文和韩文IP地址范围。
- 为netfilter安装了ipset模块
- 为中国和韩国构建的ipset转储(请参见下文)
- 向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,但是我想如果流量很大,效率可能会降低。