我想讨论一下在与主防火墙相同的 pfSense 盒上运行 SquidProxy 服务器的利弊。
今天,我有一个 pfSense 负责所有防火墙工作,例如路由和过滤(我不使用 NAT),因此 pfSense 仅过滤公共 IPv4 地址。出于安全原因,本地 DNS 被禁用,DHCPd 在内部 LAN 内的另一台机器上运行。
因为我想安装 SquidProxy 并可能使用 SquidGuard 进行一些过滤,所以显而易见的想法是将所有内容放在主防火墙上,但我不确定这是否是一种好的做法。但我不知道是否有任何可行的选择。Squid 必须以透明模式运行,因此用户不知道他们位于代理后面。
答案1
最佳做法是将网络防火墙的作用与其他一切分开。一般来说。
其背后的原因是,与防火墙一起运行的软件越多,防火墙通过其他软件中的错误受到损害的风险就越大 - 并且如果有人破坏了您的防火墙,他们实际上就拥有了您的网络(或者至少是该防火墙“保护”的网络分区)。
但是,通常只需拒绝来自外部世界的访问即可轻松缓解这种情况,因为大多数攻击尝试通常都源自外部世界。由于“外部人员”无需使用您的代理(而且您也有足够的理由拒绝他们这样做),因此您可以轻松地将防火墙配置为丢弃/拒绝来自网络外部的此类连接。(就我而言,即使我使用 SSH 来管理基于 Linux 的防火墙并允许从外部通过 SSH 进入我的网络,外部 SSH 连接实际上也会通过端口转发到我网络内部的单独服务器,如果需要,我可以从该服务器跳转到防火墙,而不是直接在防火墙上接受它们。这仅仅是因为它减少了防火墙本身的攻击面。)
这仍然会使您的防火墙暴露在 Squid 漏洞之下,而网络内的恶意用户可能会利用该漏洞破坏防火墙。这种风险是否严重到值得在完全独立的机器上安装 Squid(即使是一台透明代理配置正如您所要求的,但确实增加了复杂性)是您必须自己考虑的权衡——如果这只是一个家庭网络,可能不值得麻烦,但如果这是一个大型学区或 ISP 的互联网网关,那么您必须非常认真地考虑来自内部的攻击风险。
与所有安全问题一样,这是一个权衡的问题。但是,如果有疑问,我的建议是遵循此处的最佳做法,并将代理放在单独的框中——安全总比后悔好,尤其是在谈论防火墙时!