![通过公共 IP 地址上的特定端口保护访问](https://linux22.com/image/506053/%E9%80%9A%E8%BF%87%E5%85%AC%E5%85%B1%20IP%20%E5%9C%B0%E5%9D%80%E4%B8%8A%E7%9A%84%E7%89%B9%E5%AE%9A%E7%AB%AF%E5%8F%A3%E4%BF%9D%E6%8A%A4%E8%AE%BF%E9%97%AE.png)
我们在 FreeBSD 路由器上托管了公共 IP 地址。我们的 LAN 网络内还运行着许多服务,我们的一些服务需要通过公共 IP 地址在我们的家庭网络之外访问。到目前为止,我已将特定端口转发到特定的本地 IP 地址。示例(对于终端服务器,我将端口 2305 转发到端口 3389 上的本地 IP 服务器,当有人在“MYpublicIPadres:2305”上调用远程桌面连接以访问我的终端服务器时,它运行正常。
我想要做的是:
如何通过特定客户端(机器或网络)保护对该服务的访问。有没有办法只允许特定用户(通过 MAC 地址或其他方式)访问我的服务。我已经做的是建立 VPN 服务器-客户端连接,但这种方法对我没什么用。我也可以通过特定的 IP 地址限制访问,但我的大多数客户端没有静态公共 IP 地址,它们每次都来自具有不同 IP 地址的 DSL 连接。
如果无法使用 FreeBSD 实现这一点,我是否有其他选择,例如 IPCOP 或类似于 FreeBSD 的程序。
编辑:VPN 问题
正如您已经提到的,我应该使用 VPN 解决方案,以下是我遇到的问题
- 我正在使用在 Windows 操作系统内构建的示例 VPN 客户端,并允许该客户端从任何计算机机器设置 VPN(幕后故事:我的部门在我们网络之外,我想确保只有从部门才能访问特定服务。)
- 当客户端呼叫 VPN 连接时,它会与其他世界失去连接,并且很多客户端想要访问我的服务和其他互联网资源。
答案1
如果您无法保护服务本身,VPN 或 SSH 隧道确实是您的最佳选择。
由于您的客户端没有静态公共 IP,因此您无法通过 IP 进行限制,并且如果客户端通过互联网接入,您将无法确定他们的 MAC 地址(在第一跳时丢失)。
您可以考虑使用类似端口敲击之类的方法来控制对服务的访问(谷歌“端口敲击” - 前几个链接对于解释和示例非常有用)。
类似的东西也可以用网络服务器脚本和辅助程序来装配,你可以在其中“授权”某个 IP 在一定时间内进行访问,可能比端口敲击更复杂,但这些实现的安全性仅与底层代码一样安全)
答案2
我在这里只看到两个现实的选择:
使用 FreeBSD 路由器设置防火墙,仅允许访问从特定 IP 转发的端口。这将阻止大多数来自未知 IP 的“黑客攻击”尝试,即使您将其锁定到特定 ISP 或 C 类范围。您无法将其设置为基于 MAC 地址允许,因为 MAC 地址不会通过互联网广播到您的机器,只会广播 IP 地址。
运行 VPN 以安全地在您的网络内提供访问权限。如果 VPN 客户端设置正确,它不应该将您的客户端从互联网上删除。根据 VPN,您可以将其配置为仅通过 VPN 路由某些流量,其余流量通过互联网路由。想到的一个简单的方法是 Hamachi。
实现此目的的“正确”方法是使用 VPN。您可以使用防火墙/端口敲击解决方案来实现此目的,但最安全的方法(在我看来)是通过 VPN。