前言
如果我使用了错误的术语或没有很好地表达问题,请多多包涵,因为我不是系统管理/服务器维护方面的专家。如果我有错误,请告诉我/纠正我,这样我就可以学习并澄清我的观点。
问题
我有一台 Linux 设备,即服务器,它在不同的端口上运行不同的服务(目前是 HTTP、SSH 和 FTP 服务器,但将来可能会有其他服务器用于其他协议)。我和我的朋友还有其他设备,即客户端,它们运行 Linux(包括 Android)或 Windows,我们希望使用这些设备来访问服务器的服务,只要客户端和服务器都在互联网上在线,无论它们是否在同一个本地网络上。
另一个警告是,我们希望安全地执行此操作,以便服务器可以确保只有我或我的朋友在访问它,我们可以确保我们连接的服务器确实是正确的服务器(而不是某些 MITM 欺骗其服务器身份),并且第三方无法通过嗅探交换的数据包来获取(太多)有意义的信息。
我还想限制我的朋友只能访问特定的服务(比如,一个朋友只能访问 HTTP 和 FTP,另一个朋友只能访问 SSH 等)。
可能相关的信息
我有服务器管理员权限(我可以安装软件包并以不受限制的访问权限对其进行配置)和本地网络路由器。服务器正在运行 nftables。
考虑采取的行动
我曾考虑在服务器上配置 nftables,以仅允许来自特定 IP 地址或具有特定 MAC 地址的设备的入站数据包,但我认为这并不合适/充分。首先,因为我们希望能够从本地网络外部进行连接,因此客户端设备的 IP 地址可以更改。其次,因为我知道 MAC 地址很容易被伪造,所以我无法使用它们来确保客户端设备确实是允许的。第三,因为这些并没有解决第三方不能通过窥探数据包来获取有意义信息的限制(因此理想情况下,解决方案应该采用某种加密协议来解决这个问题)。
其他想法
我认为解决方案将涉及建立某种基于账户的系统,其中我和我的朋友各自拥有自己的账户,并且服务器只允许来自特定账户的特定协议数据包。
我还想,也许可以通过在服务器上使用 WireGuard 或 OpenVPN 等协议设置 VPN 服务器来解决这个问题,该协议只允许白名单中经过身份验证的客户端连接,然后通过 VPN 隧道路由所有其他流量(如 SSH 和 HTTP),使它们只有通过该隧道连接时才可访问。这样可行吗?但我不知道如何配置它以限制我的朋友只能访问特定服务。这些 VPN 协议是否具有某些功能来限制每个客户端允许的流量类型?
无论如何,我真的不知道这个问题的最佳解决方案是什么以及如何设置它,所以我真的很感激任何有用的建议、建议和信息来解决这个问题。
答案1
使用 VPN。为人们分配证书 (OpenVPN) 或密钥 (WireGuard),并向人们提供特定的 IP 地址。然后使用防火墙仅允许从指定 IP 地址访问服务。我今天可能会使用 Wireguard 来实现这一点。