在Linux中pipe理iptables规则

我有很多的规则,我的iptables设置(路由,SSH密码等)我也拿起了IP列表禁止从这里http://blacklist.linuxadmin.org现在它变得非常复杂。

我的/etc/sysconfig/iptables真的很长。 有没有办法通过包含来自外部文件的规则来pipe理规则?

例如:

 #include "pre_routing_rules" #include "ssh_bans" 

这将包括在文件“pre_routing_rules”和“ssh_bans”中添加的规则。这样我就可以轻松地pipe理我的规则,而无需在cat /etc/sysconfig/iptables

尝试iptables的ipsets 。 ipset是分开configuration的,如果你有足够的ip地址进行pipe理,这些ipset也会更快。

iptables规则可以像这样引用ipset:

iptables -A FORWARD -m set –set阻止列表src,dst -j DROP

一个简单的解决scheme是为每个部分使用多个bash脚本,如:

 iptables-routing.sh iptables-ssh-bans.sh iptables-blacklist.sh 

并从主脚本运行这些文件。

iptables不直接读取文件,这是由一个名为iptables-restore的程序完成的。 这通常是从你的一个init脚本调用的。

你可以添加额外的input文件到你的iptables-restore行。 你必须find你的系统上这行是在哪里,但是在我的Debain框中,它在/etc/init.d/nat

该行目前读取像这样:

 /sbin/iptables-restore < /etc/network/iptables 

也许它可以改变成这样的东西:

 cat /etc/network/iptables \ /etc/network/pre_routing_tables \ /etc/network/ssh_bans | /sbin/iptables-restore 

我倾向于使用许多iptables防火墙脚本/工具之一,如Firestarter或Shorewall,它们带有许多文件,按目的分开,添加有趣的规则以防止某些types的伪造数据包,并且它们通常工作好。

我不知道你正在运行哪个发行版,因为我的文件没有你所指的文件 – 但是通常包含iptables规则的文件只是shell脚本 – 所以你应该能够通过一个行来做你想要的如 :

。 的/ etc / SYSCONFIG / pre_routing_rules

或者像在你参考的iptables文件的顶部。