从文本文件创buildIP空路由黑名单

我已经看到了各种各样的指南,如何空出一个IP地址,我以前做过。 但是,我不知道如何空路由一组IP地址。 单独浏览每一个将是太枯燥乏味。

如果我在每一行上都有一个带有IP地址的文本文件,那么我将如何将该文件中的所有地址空路由? 有没有我可以使用的routeiptables命令? 我正在运行Debian VPS。

此外,我在某处读到,这种方法可能不是禁止一组IP地址的最佳方法。 如果有更好的方法来实现这一点,请让我知道。 我一直在我的服务器上发起垃圾邮件攻击。

是否有一个原因,你想空路由的主机,而只是阻止他们与IP表? 无论哪种方式,IPtables规则和静态路由都可以通过ubuntu中的configuration文件进行pipe理。 你可以写一个脚本来parsing一个文本文件,然后修改路由或iptablesconfiguration文件,但似乎是循环的。 它本质上是创build一个configuration文件来pipe理另一个configuration文件。 如果您需要在多个服务器上执行此操作,则可以在它们之间同步configuration文件或使用configurationpipe理系统(如puppet)。

也许你想有一个简单的bash脚本或你最喜欢的shell脚本。

 #!/bin/bash shit="/tmp/null_ips" ips=$(grep -Ev "^#" $shit) for ip in $ips do ip route add blackhole $ip done 

进一步:检查你是否已经阻止这些IP ..

 ip route show 

IPtables非常简单。 首先做iptables --list来获取链条和规则的列表。 默认很简单。 如果以下情况不起作用,或者您看不到INPUT规则,请将该命令的输出与IP为了安全而删除。

下面添加一条规则来logging来自服务器的stream量,然后放下它并保存您的链,以便在启动时恢复:

 iptables -I INPUT --source 1.2.3.4/32 -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4 iptables -I INPUT --source 1.2.3.4/32 -j DROP iptables-save 

如果你有一个ip列表,你可以在bash中做这样的事情:

  #!/bin/bash while read -r ip do iptables -I INPUT --source $ip/32 -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4 iptables -I INPUT --source $ip/32 -j DROP done < $1 iptables-save 

./block.sh file-with-bad-ip's

在旁注中,该命令也将采用主机名称,但出于性能原因,这不可取。

这样做手动将是一个噩梦,绝对是一个噩梦的情况。 真正的问题是:什么样的垃圾邮件攻击?

在几乎所有情况下,这些事情都是普遍而且普遍的,通过使用公共黑名单或调整某些设置,至less可以减less一半的情况。

如果它是:

  • 评论垃圾邮件,看看你的博客/网站软件是否可以使用Akismet或类似的 – 我似乎还记得有一些东西也有基于IP信誉的filter插件。

  • 论坛垃圾邮件,启用一些validation码,并开启邮件validation之前。 您的论坛也可能有一个反垃圾邮件模块。

  • 电子邮件垃圾邮件,使用RBLs来降低垃圾邮件的60-85%(以我们的经验)(特别是在barracudacentral中查看),安装spamassassin等,或者将垃圾邮件过滤外包给公司,头痛。