如果需要,您可以安装防病毒软件。它不应该伤害您的机器,但不要期望对您的系统有太多保护,也不要认为自己完全安全。防病毒软件的功效是相对的,它们主要用于避免传播旧的恶意软件,特别是如果您的生态系统中有 Windows 机器。您应该预期性能会下降,尽管截至目前还没有 Linux 上的 AV 性能基准,因此无法量化。
为什么只使用防病毒软件就不安全?因为它们只是所需机制的一部分。目前,Linux 上缺少很多桌面安全工具。与桌面相关的不同安全机制有哪些?
- 图形堆栈安全性(防止键盘记录器、点击劫持、屏幕录制、剪贴板嗅探等)
- 具有安全检查的应用分发方案(应用商店和对应用进行静态分析的存储库)和快速安全更新
- 恶意软件检测:基于签名(以防止已识别的威胁)和基于启发式(或者他们说,我从未使用过任何基于启发式的 AV,我怀疑这主要是营销谈话说“我们会抛出大量当您使用新应用程序时,您的脸上会出现安全警告”)
- 沙盒(包括通过设计将应用程序彼此隔离)
- 通过指定/用户驱动的访问控制/电源盒/合同,使用具有安全性的设备和用户数据的上下文授权;需要沙盒
目前,Linux 上唯一体面的事情是通过存储库进行的应用程序安全更新。其余的都是不合格的。
图形堆栈安全
我们都依赖 X11 图形服务器。X.Org 已经存在了 30 年,最初的设计仍在服务器中使用。过去没有桌面安全问题,你不会惊讶地发现它根本不安全。你有开箱即用的 API 来实现键盘记录器,如果用户打开了任何根控制台,则进行远程代码利用,替换会话锁以窃取密码等。
很难评估 Windows 8 和 OS X 在这个主题上的表现,因为我找不到任何关于它们的图形堆栈实现的详细解释。他们的沙盒应用程序限制了对最明显的攻击媒介的访问,但目前还不清楚这一切的设计和实现有多好。在我看来,Win 8 强制商店应用程序全屏运行,并且一次一个地运行隐藏了设计全尺寸安全窗口管理器的问题。wrt有很多问题需要考虑。在实现具有安全性的窗口管理器时,窗口位置和大小、透明度和全屏的使用等。我不知道 OS X 是怎么做的。
Linux 将在未来几年转向Wayland,它的设计考虑了安全性。我们对应该存在哪些能力有一个清晰的模型,以及如何实施这些能力以及如何获得授权的总体思路。这项工作背后的主要人物是Martin Peres,尽管我碰巧参与了讨论这些功能背后的用户和开发人员体验。设计和开发正在进行中,所以不要指望很快会有任何事情发生。阅读这篇文章了解更多信息。当与应用沙盒结合使用时,Wayland 将无缝提供安全性。
应用分发
Linux 拥有一个具有不同信任级别的存储库系统,它训练我们的用户只依赖提供的应用程序并警惕专有代码。这在理论上非常好。
实际上,我不知道有哪个分销商会对其打包的应用程序执行最基本的安全检查。对奇怪的系统调用没有任何静态分析,对于任何社区来说,是否完全验证安装前和安装后脚本(以 root 身份运行)是否针对明显的坏事进行了验证。
对 GNOME Shell 的扩展进行的安全检查非常简单和手动,但至少存在。我不知道 KDE 的扩展或其他应用程序。
我们发光的一个领域是我们可以非常快速地提取安全更新,通常在几天内发现任何安全漏洞。直到最近,微软都比这慢得多,尽管他们赶上了。
恶意软件检测
我所知道的 Linux 上唯一的防病毒软件是 ClamAV。在我看来,它只能基于签名工作,但正如您所指出的,我们没有任何已识别的桌面恶意软件可以防御。
在 Advanced Persistent Threats 的世界中,可能有人编写 Linux 桌面恶意软件。有关示例,请参见掩码。由于 APT 恶意软件作者通常有足够的才能提出零日漏洞利用,因此标准 AV 不太可能对这些恶意软件采取任何措施。
现在,微软宣传对其所有软件进行数万小时的模糊测试,而不是在 Linux 生态系统中几乎没有安全编码实践。从模糊测试的个人实验来看,我绝对相信在一些流行的 Linux 软件中存在一些简单的零日漏洞。这将在我们为普通恶意软件作者拥有经济上可行的用户群的那一天打击我们,然后我们将看到 ClamAV 的效果如何,但我怀疑应用程序更新机制将对处理产生更大的影响发现漏洞。
不用说,在这个标准上,Windows 和 OS X 都比 Linux 做得好得多。
沙盒和上下文授权
OS X 和 Windows 8 都为其商店中托管的应用程序提供沙盒。我还没有研究完 OS X 的怪癖,但 Windows 8 应用商店应用程序在支持的语言和 API、可用功能和可以提供的一般用户体验方面有非常严重的限制。这意味着未沙盒的桌面应用程序将继续存在,而微软的沙盒将无法防御恶意软件,只能防御有缺陷的(商店应用程序)软件中的精心制作的文档。尽管任何非商店应用程序也没有被沙盒化,但 OS X 似乎做得更好。
Linux 目前没有足够无缝的 GUI 应用程序沙箱。我们拥有底层的限制技术(最好的候选者是基于 Linux 命名空间的容器,参见LXC和Docker,其次是需要开发以支持一定数量的动态性的 MAC 强制系统)。由于在kdbus和systemd上的出色工作,我们几乎拥有了部署和处理这些沙盒应用程序所需的 IPC 和进程管理机制。缺少一些内容,其中一些提案主要由 GNOME 基金会推动(请参阅GUADEC 13上的沙盒视频)。我还参与了讨论如何访问数据和授权,但少数感兴趣的人之间没有达成共识,设计和开发需要时间。可能还需要几年时间才能出现像样的原型,以及沙盒以任何相关规模部署到 Linux 上。
所有平台面临的一大问题是找出如何授权应用程序以适当的规模访问数据和设备功能。这意味着,如何让他们做他们需要做的事情,而不会用授权提示来纠缠用户,同时防止应用程序滥用权限。Windows 8 如何让 Store Apps 处理最近的文档和应用程序的futureAccessList存在严重漏洞。在这个阶段,在不增加开发人员和用户的安全成本的情况下进一步保护文档访问是一个悬而未决的问题,很多人恰好也在研究这个问题:)