![确保本地网络上 2 个 Linux 服务器之间的通信安全,只允许它们访问需要的端口](https://linux22.com/image/579695/%E7%A1%AE%E4%BF%9D%E6%9C%AC%E5%9C%B0%E7%BD%91%E7%BB%9C%E4%B8%8A%202%20%E4%B8%AA%20Linux%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B9%8B%E9%97%B4%E7%9A%84%E9%80%9A%E4%BF%A1%E5%AE%89%E5%85%A8%EF%BC%8C%E5%8F%AA%E5%85%81%E8%AE%B8%E5%AE%83%E4%BB%AC%E8%AE%BF%E9%97%AE%E9%9C%80%E8%A6%81%E7%9A%84%E7%AB%AF%E5%8F%A3.png)
我有两台 Linux 服务器,它们通过交叉连接电缆相互连接,形成一个本地网络。其中一台服务器为另一台服务器(例如数据库服务器)提供了一个 DMZ,该 DMZ 必须非常安全。
我将这个问题限制在两个服务器之间的通信,这些端口只需要对这些服务器可用(而不需要其他任何服务器)。因此,可以通过以下方式建立两个服务器之间的通信:
(1)在两台服务器上打开所需的端口,并根据应用程序的规则进行身份验证。
(2)禁用与交叉连接电缆所连接的 NIC 卡关联的 IP 表(在两台服务器上)。
哪种方法更安全?
在第一种情况下,所需的端口向外界开放,但受用户名和密码保护。
在第二种情况下,所需的端口均不向外界开放,但由于与交叉连接电缆关联的 NIC 卡的 IP 表已被禁用,因此基本上所有端口都可以被视为在两个服务器之间“开放”(因此,如果创建 DMZ 的服务器受到威胁,则 DMZ 服务器上的黑客可以使用交叉连接电缆查看所有开放的端口)。
有没有传统观点认为,只有这些服务器需要访问端口,才能保证两台服务器之间的通信安全?
答案1
我倾向于一种:确保只有来自服务器的连接才能建立。因此,您需要在 iptables 规则中添加源选项。然后,您仍然可以通过身份验证进行防御。问题是,如果服务器上运行着可以登录数据库的应用程序,那么如果恶意用户可以访问您的服务器,那么他可能会发现这一点。
我不明白的是,为什么要禁用 NIC 上的 iptables,并不是因为您在 NIC 上启用了 iptables,WAN 就会突然访问它。相反,您可以使用它来限制访问。
答案2
您应该结合这些方法并使用 iptables。
machineone 有 ip machineone machinetwo 有 ip machinetwo
在 machineone 上:
-A INPUT -s machinetwo -d machineone --dport allowedport2 -j ACCEPT
-A INPUT -s machinetwo -d machineone --dport allowedport2 -j ACCEPT
-A INPUT -j DENY
在 machinetwo 上:
-A INPUT -s machineone -d machinetwo --dport allowedport1 -j ACCEPT
-A INPUT -s machineone -d machinetwo --dport allowedport2 -j ACCEPT
-A INPUT -j DENY