多个非 http 服务,1 个静态 IP

多个非 http 服务,1 个静态 IP

我遇到一个问题,我们有多个非 http(s) 服务,我们想通过 WAN 访问它们。SSH 是我们使用的主要协议,FTP 也是。

以下是布局方式。我们有一个公共 IP 地址。该地址位于我们的 ASA(5505 基本许可证)上,该地址已与 DMZ 中的服务器进行网络地址转换。这是一台 Windows Server 2012 计算机,目前正在运行 IIS 服务以对我们的 HTTP 和 HTTPS 服务执行反向代理。

安全地允许外部访问 SSH/FTP 等服务的最佳方法是什么?是否有与 ISA 服务器/威胁管理网关 2010 等效的 Linux(最好是免费的)(我都没有可用的选项)

我知道我可以使用 ASA 的 NAT 功能将端口直接转发到机器,但这似乎不太安全。理想情况下,我希望能够创建指向静态 IP 的 DNS A 记录(如 ftp.domain.com),路由到 DMZ(目前就是这样),然后让它识别请求的类型并将其转发到正确的主机?这是否可以使用 Linux 中的 IPTables 来实现?

谢谢你的帮助!

答案1

识别请求类型并据此转发请求无法在 TCP 级别完成。当您的网关需要决定将其 NAT 到哪个主机时,请求尚未发送。

在应用层,您拥有更多可能性。这将依赖于协议,并且只对某些协议可行。HTTP 代理就是这样做的一个例子。

这种方法完全不可能应用于 SSH。这是因为 SSH 客户端通常不会发送任何数据,直到它们收到来自服务器的消息。这意味着即使在应用程序层,当您需要选择后端时,您也无法看到所需的信息。SSH 通信是加密和经过身份验证的事实只会让这一切变得更加困难。

我知道可以实现这个目的的选项有:

  • 对不同的 SSH 服务器使用不同的端口号
  • 使用 IPv6,以便每个主机都拥有足够的 IP 地址
  • 将 SSH 流量封装在另一个协议中。这可以是使用堡垒主机的 SSH 内部 SSH。

至于 FTP,我的建议是不要使用该协议。FTP 使用两个单独的 TCP 连接,这使其更难工作。而且协议中缺乏完整性检查,这意味着它不太安全。我建议使用sftpHTTP(类似于 ftp,但通过 ssh 运行),如果您需要匿名访问,则建议使用 HTTP。

答案2

有几种工具可以处理不同级别的威胁管理(大多数都是被动的,因为作为加密协议,除非写入日志,否则很难看到任何东西)。如果配置正确,SSH 通常是一种安全协议。我通常主张除非绝对必要,否则不要让 SSH 向互联网开放。即使在这种情况下,拥有一个安全 URL 之类的东西,您可以在其中登录并暂时将当前 IP 列入白名单,这也是一个不错的选择。如今,有太多机器人扫描易受攻击的 SSH 机器,您永远不知道任何应用程序中何时会出现新的漏洞。

至于 FTP、IMNSHO,不要使用它!!! 最好使用基于 SSH 的替代方案 SFTP。FTP 是一种协议,其中密码通常连同所有数据一起以明文形式发送。我已经很久没有考虑过将 FTP 作为几乎所有事物的替代方案了。

相关内容