我遇到一个问题,我们有多个非 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 连接,这使其更难工作。而且协议中缺乏完整性检查,这意味着它不太安全。我建议使用sftp
HTTP(类似于 ftp,但通过 ssh 运行),如果您需要匿名访问,则建议使用 HTTP。
答案2
有几种工具可以处理不同级别的威胁管理(大多数都是被动的,因为作为加密协议,除非写入日志,否则很难看到任何东西)。如果配置正确,SSH 通常是一种安全协议。我通常主张除非绝对必要,否则不要让 SSH 向互联网开放。即使在这种情况下,拥有一个安全 URL 之类的东西,您可以在其中登录并暂时将当前 IP 列入白名单,这也是一个不错的选择。如今,有太多机器人扫描易受攻击的 SSH 机器,您永远不知道任何应用程序中何时会出现新的漏洞。
至于 FTP、IMNSHO,不要使用它!!! 最好使用基于 SSH 的替代方案 SFTP。FTP 是一种协议,其中密码通常连同所有数据一起以明文形式发送。我已经很久没有考虑过将 FTP 作为几乎所有事物的替代方案了。