我对设置防火墙感兴趣。这将包括您常用的 NAT,以及用于传入连接的端口转发。
但是我希望传出连接使用主机名白名单。我还希望同一设备充当我的 PC 使用的 DNS 服务器,这样当 PC 尝试连接白名单上的任何主机名时,它始终知道该主机名的最新 IP。
这可以是 Cisco IOS(推荐的替代方案),也可以是真正的 Illumos 或 Linux 服务器。我认为使用服务器会给我带来更大的灵活性,但我愿意听取建议。
以下是我想要发生的事情:(来自我网络上的用户的传出连接)
用户的个人电脑对给定的站点执行 DNS 查找(即 serverfault.com)
防火墙服务器将其与主机名白名单进行比较,如果允许,则将生成的 IP 地址传回 PC。
如果允许 DNS 查找,则 IP 访问列表将立即使用 DNS 的最新结果进行更新。(具有合理的有效期)
- 如果 PC 发起与任意 IP 地址的连接,而该 IP 地址未列在任何获批准的 DNS 响应中,那么任意数据包都会被拒绝。
(可选,但最好)嗅探 TCP 连接以验证 HTTP 或 HTTPS 连接的主机名。通过这种方式,我们可以防止访问可能存在于共享白名单 IP 上的非白名单网站。
我认为我可以使用 完成第 1-3 项ipfilter
,结合自定义编写的 DNS 服务器来处理白名单,并触发对 的添加ipfilter
。这听起来合理吗,还是不可避免地会出现ipfilter
无法立即识别更改的问题?我非常确定ipfilter
可以与 Linux/Illumos NAT 配合使用。
是否有适用于 Linux 或 Illumos 的应用程序已经可以进行 DNS 触发的 IP 白名单?(让我不用重新发明轮子)
我没听说过 IOS 运行 DNS 服务器。Cisco IOS 中是否有解决方案可以处理此问题?是否有我应该知道的明显解决方案,或者这只是一个不寻常的防火墙设置?
答案1
根据我们在评论中的讨论,听起来您可能混淆了防火墙和透明代理的作用。
防火墙不依赖 DNS 解析来实施访问策略。原因如下:我之前已经介绍过。最重要的原因是:
- 依赖容易被欺骗的协议
- 增加了软件复杂性和给定输入集的不确定性功能(今天通过过滤器的内容不一定是明天通过过滤器的内容)
- 有效地将防火墙策略的管理委托给不同的设备和协议。
透明代理通常会拦截 HTTP+DNS 流量,并根据所请求的主机名应用访问控制。IP 地址不是此层的考虑因素。如果请求的实体与允许的名称不匹配,则透明代理本身会直接返回错误页面,而不会将请求路由到目标资源。
主要的区别在于这些设备所处的层级。由于透明代理只需要关心名称,而不需要关心这些名称解析后的 IP 地址,因此您不会遇到防火墙所遇到的逻辑问题。