我有一个运行 libvirt/kvm 和fail2ban(用于 SSH 攻击)的 Ubuntu 9.04 服务器。
libvirt 和 fail2ban 都以不同的方式与 iptables 集成。Libvirt 使用(我认为)一些 XML 配置,并在启动期间(?)配置转发到 VM 子网。Fail2ban 安装一个自定义链(可能在初始化时)并定期修改它以禁止/取消禁止可能的攻击者。
我还需要安装我自己的规则来将各种端口转发到在 VM 和其他机器上运行的服务器,并设置基本的安全性(例如,丢弃所有 INPUT 流量,除了我想要打开的少数端口),当然我想要无需重新启动即可安全地添加/删除规则的能力。
在我看来,iptables 是一个强大的工具,它非常缺乏某种标准化的方式来处理所有这些东西。每个项目和每个系统管理员似乎都以不同的方式做事!(而且我认为这里有很多“货物崇拜”管理员,人们克隆粗略的方法,如“使用 iptables-save 像这样”。)
如果没有弄清楚这两个(以及可能的其他)工具究竟如何操作 netfilter 表的血淋淋的细节,以及开发我自己的脚本或只是手动执行 iptables 命令,有没有办法在不破坏功能的情况下安全地使用 iptables这些其他工具?是否有任何新的标准或项目定义为该领域带来理智?即使是我错过的一个有用的网页,它可能至少涵盖了这两个包?
这确实很老,但对于搜索并找到它的人来说,fail2ban 和许多其他实用程序一样是非常可配置的。您可以更改您的 fail2ban 操作文件,例如 iptables-multiport.conf 以调用 iptables 并以您想要的方式创建链。
例如。
这会在您的 INPUT 链中创建一个规则,这是一种丑陋且难以管理的规则,但您可以很容易地将其放入您自己的控制链中。您可以创建一个 INPUT 过滤器,然后将其链接到 fail2ban 的其他过滤器,以将其所有内容排除在您的 INPUT 链之外,如下所示。
libvirt 或 Xen 也是如此,其中有调用脚本来完成工作。例如,Xen 使用 /etc/xen/scripts ,你会发现网络桥和其他调用 iptables 的地方。根据需要设计它。最坏的情况下,更改代码。我首先使用fail2ban 来修改中央防火墙,因此所有服务器都受到保护,这意味着本地机器上的iptables 无论如何都不会显示规则。