/var/opinion - 不要忘记人们获取的内容

作者:Nicholas Petreley

让我们来谈谈如何保护您的网络免受人们获取的内容的侵害。我将绕一些弯路来解释,所以请耐心听我说。

我撰写了一份长篇报告,发表在 www.theregister.co.uk/security/security_report_windows_vs_linux,您可能想仔细阅读一下。请允许我做几点说明。这份报告很旧,日期是 2004 年 10 月。请不要因为文本中我从未回去修复的细微编辑错误而给我发邮件。它们不影响报告的主旨。

无论如何,我希望您阅读整篇报告,但我主要引用它是为了引出一个要点。《2004 年夏季 Evans Data Linux 开发者调查》显示,78% 的 Linux 开发者从未遇到过 Linux 机器被入侵的情况。Evans 调查没有探究极少数确实发生的 Linux 事件的性质。例如,有些人可能是 Apache 蠕虫的受害者。Apache 在 Linux 和 Windows 上都运行,因此这些事件并非 Linux 独有。更重要的是,多年前传播的同一个 Apache 蠕虫在 Windows 上造成的破坏可能比在 Linux 上更大。

这是有原因的。不需要火箭科学家也能明白,Windows 比 Linux 更容易受到严重的安全性漏洞攻击。Vista 不会改善情况。微软似乎更感兴趣的是阻止用户绕过 DRM 限制,而不是阻止黑客入侵 Windows。

您可能可以通过简单地将 Windows 和 Linux 用户置于启用 NAT 的路由器之后来保护他们免受外部攻击。基于 Linux 的路由器,甚至是廉价的 OTS 设备通常都可以做到。问题是,许多安全漏洞的发生并非由于传入的攻击,而是因为人们获取了被污染的网页、下载了受感染的软件或获取了无数其他文件类型,这些文件类型带有嵌入式代码,利用了 Windows 中的所有漏洞,允许人们提升权限并危害整个 Windows 机器。如果每个人都运行 Linux,这可能不会成为一个大问题。但并非每个人都运行 Linux。我的孩子们使用 Linux,但他们也使用 Windows。但这不仅仅是一个家庭问题。您可能负责一个员工运行 Windows 的网络。

以下是我为保护我的孩子所做的事情。首先,我费尽心思将他们的网页浏览限制在 Firefox,电子邮件通信限制在 Thunderbird。这避免了常见的 IE 和 Outlook 漏洞。其次,即使他们通过无线启用 NAT 的路由器访问互联网,该路由器也连接到一台 Linux 服务器,该服务器在将流量传递到互联网之前检查和过滤通过的内容。我使用 tinyproxy 和 DansGuardian 来阻止内容。我使用 MIME 过滤器来防止潜在危险的电子邮件附件进入。但是,最厉害的是我可以用 iptables 做的事情。

在继续之前,请允许我补充一点看法。我从不认为自己有能力成为一名 Linux 内核开发者,但我确实为内核贡献了几行代码,并且我修补了自己的内核以解决诸如顽固的 ASUS 主板拒绝关机之类的问题(该补丁太仓促和粗糙,不值得用于内核,但它对我有效)。我还以各种语言为 Xoops、Lphoto 等项目贡献了代码。我的意思是,我不仅仅是一名编辑;我是一名程序员,也是一个无可救药的极客。

然而,我是一个懒惰的极客。我宁愿使用 GUI 程序来生成防火墙规则,也不愿自己编写。但是 iptables 已经变得非常直观,即使是懒惰的极客也可以编写自己的规则。我所需要掌握的是 iptables 如何在预路由、转发和后路由方面处理流量。例如,以下规则是众多规则之一,这些规则预路由通过 DansGuardian 访问 Web 的各种尝试。我有很多这样的规则,而且它们更具体(它们指定了各种计算机的源 IP 地址),但我将列出一个简化的显而易见的版本

iptables -t nat -A PREROUTING -i eth1 -p tcp
 ↪--dport 80 -j REDIRECT --to-port 8080

除了少许语法知识外,这几乎就是一个英文表达。它的意思是将通过 eth1 从端口 80 进入的 NAT 流量重定向到端口 8080。如果您的孩子或员工足够聪明,试图通过外部代理访问 Web,只需也将这些端口重定向到端口 8080。您可以使用 DansGuardian 来阻止大多数其他试图绕过这种保护的尝试。

我们第 78 页上的文章“从零开始构建 Linux 防火墙”应该可以帮助您开始使用 iptables。Web 上有更多全面的 iptables 教程,其中一个是 iptables-tutorial.frozentux.net/iptables-tutorial.html。但是它们中的大多数都探讨了只有安全专家才需要的 iptables 的复杂性。如果您的需求像我一样简单,请不要害怕探索 iptables 并尝试编写自己的规则。您会发现 iptables 比您想象的要友好得多,而且它们是您安全框架中不可或缺的一部分。

Nicholas Petreley 是 Linux Journal 的主编,也是一位前程序员、教师、分析师和顾问,他从事 Linux 工作和撰写 Linux 相关文章已有十多年。

加载 Disqus 评论