(几乎)实时地将 iptables 规则传输到另一台服务器

(几乎)实时地将 iptables 规则传输到另一台服务器

我正在运行 2 个带ConfigServer Security & Firewall插件的 cPanel 服务器。插件的功能之一是通过 iptables(暂时和/或永久)阻止未通过各种身份验证(POP3/IMAP、SMTP、FTP、webmail、mod_security 等)的 IP。

现在,我想将这些 IP 块推送到边界路由器以尽快丢弃数据包(这样做可以保护网络上的其他机器)。

请记住,N 次登录失败后,IP 将被封锁 5 分钟,然后重新允许。如果一小时内发生多次封禁,IP 将被永久封锁,应“手动”解锁。所以我需要一个接近实时解决方案。

我正在寻找一种比解雇一些人更好的方法计划任务在 cPanel 和边界路由器上:

  • 将规则转储到文件中
  • 将文件传输到边界路由器(通过 scp/sftp)
  • 从边界路由器中的文件加载规则

我知道我需要一些脚本来解析和修改规则,就像 cPanels 一样以太网接口和一些别名,而边界路由器有以太网接口和一些环回。

所有涉及的机器都使用 Linux。

编辑按照@pjmorse 的评论。

该插件由一堆 perl 和配置文件组成。我感兴趣的部分是扫描日志文件 ( lfd) 和安装iptables规则(并发送警报电子邮件)的过程。事实上,它经常升级(每周一到两次),而且它本身就有 7000 多行 perl,所以我不太愿意篡改它。

答案1

提供实时“传输”的一个解决方案是用调用路由器的iptables脚本来替换。iptables

  1. 生成 ssh 密钥对,并授权该密钥以 root 身份登录网关主机
  2. 创建/path/to/override/iptables运行的脚本
    ssh root@routerhost iptables "$@"
  3. 在启动 Web 服务器的启动脚本中,设置PATH="/path/to/override:$PATH"

现在,无论插件何时查找,iptables它都会在 中找到它,因为它首先在中/path/to/override指定$PATH。当将脚本收到的所有参数传递给 时,它将运行脚本。 但是,如果插件使用 的绝对路径,则您必须手动更改插件中的路径。iptablesrouterhost
iptables

相关内容