IPTables 允许然后阻止活动连接

IPTables 允许然后阻止活动连接

我有一个备份服务器,我想知道如果我设置一个 cron 作业以允许来自 IPTables 中的服务器的连接,那么一旦它与 rsync 连接,我可以使用 IPTables 关闭端口以阻止连接吗?

这样做的目的是当主服务器受到威胁时阻止备份被擦除的机会(是的,它是安全的,但我不会冒险。)

编辑:在尝试了一些东西并了解了它的工作原理后,我决定最好的办法是设置第二个服务器,它只从第一个服务器拉取数据。

答案1

假设它通过 ssh 而不是 rsyncd 连接,你可以使用这样的规则来处理这个问题

iptables -A INPUT -s <server> -p tcp --dport ssh -m connlimit --connlimit-saddr --connlimit-upto 1 -j ACCEPT

只要没有其他规则允许,并且 INPUT 的策略是 REJECT 或 DROP,它就会起作用。

如果你还想将其限制在特定时间,还可以使用-m time --timestart 01:00:00 --timestop 01:02:00- ,这将从每天凌晨 1 点开始提供两分钟的窗口

答案2

首先,直接回答你的问题:是的,这当然是可能的,而且非常简单。

你只需要一个 cron 作业允许来自该服务器的流量:

-A Firewall-1-INPUT -p tcp -m state --state NEW -s 1.2.3.4 -j ACCEPT

然后使用另一个 cron 作业来删除该规则:

-D Firewall-1-INPUT -p tcp -m state --state NEW -s 1.2.3.4 -j ACCEPT

但...

您是否使用本机 rsync 协议进行连接?如果是这样,您真的不应该这样做,因为它的身份验证较弱且未加密。相反,请使用 SSH 上的 rsync,并关闭密钥身份验证和密码身份验证(无论如何,您应该已经在服务器上执行此操作)。通过使用 rsync+ssh,所有流量都将被加密,并且使用密钥身份验证,也不需要执行 iptables 操作,因为有人暴力破解您的用户名和密钥对的可能性微乎其微。

此外,正如 Skaperen 在下文中提到的那样,您的备份服务器应该是启动与其正在备份的系统连接的服务器,而不是相反。

答案3

为了实现您的目标,我会考虑另一种想法,即让备份服务器隔离在防火墙后面的私有 IP 子网上,并通过私有 IP 和基于 ssh 密钥(而非密码)的连接发起互联网连接服务器的备份。这样,可以执行强大操作的密钥与互联网更加隔离。

相关内容