在Linux中管理iptables规则


17

对于iptables设置,我有很多规则(路由,ssh禁止等),我还从此处http://blacklist.linuxadmin.org上选择了要禁止的IP列表,现在它变得非常复杂。

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

例如:

#include "pre_routing_rules"
#include "ssh_bans"

这将包括在文件“ pre_routing_rules”和“ ssh_bans”中添加的规则。这样,我可以轻松管理自己的规则而无需在中四处寻找cat /etc/sysconfig/iptables

Answers:


11

尝试iptables的ipsets。ipset是单独配置的,如果您有足够的ip地址来管理,它们也将更快。

iptables规则可以这样引用ipset:

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


我最大的问题是IP地址,因此我可以使用它。

我正在使用此功能。我的黑名单/白名单IP最大,因此可以放入ipset中。我认为预先路由的内容可以保留在主配置列表中

该论坛线程有一些使用ipset的脚本示例:forums.gentoo.org/viewtopic-t-863121.html
mivk 2013年

3

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

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

并从主脚本运行此文件。


是的,那就是我要做的。但是,如果我必须查看iptables规则列表(例如cat / etc / sysconfig / iptables),它将向我展示通过iptables-routing.sh iptables-blacklist.sh添加的所有规则

2

iptables不会直接读取文件,这是通过名为iptables-restore的程序完成的。通常从您的一个初始化脚本中调用它。

您可以在iptables-restore行中添加其他输入文件。您必须找到此行在系统上的位置,但在我的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

2

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


这些可以通过命令行使用吗?我的服务器是远程服务器,我真的不喜欢X而不是SSH

Shorewall是一组生成iptables规则的纯文本文件。它在命令行中非常有用,并且具有出色的文档和诊断工具。
Paul Gear

0

我不确定您正在运行哪个发行版,因为我的不拥有您所引用的文件-但通常包含iptables规则的文件只是shell脚本-因此,您应该可以通过一行来完成所需的操作如 :

。/ etc / sysconfig / pre_routing_rules

或诸如此类,位于您引用的iptables文件顶部。


我正在运行Fedora和CentOS
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.