本帖最后由 Dizziness2929 于 2024-4-29 16:10 编辑
开头先问一个问题:如果现在把你瞬移到丹麦,你会继续用在中国的生活经验吗?
答案显而易见:不会。
而这就是第一个原因:
Linux世界和Windows世界差异太大,两者的安全理念也完全不一样(注解:世界上不可能也不存在一样的事物,甚至可以说也不存在任何的“类似”,如果你觉得两者“类似”那说明你对两者都不了解)。
Linux的安全理念建立在“内核强制执行的访问控制”(SELinux、AppArmor……)、“修复存在的问题而非试图检测谁在利用这个漏洞+任何人都可以参与其中的流程”(开放自由的源代码)、“生态环境的多样性”(各种各样的发行版)……因此传统的恶意软件很难在这种世界生存。
基本上,一个成功的(被人记住名字的)Linux恶意软件都是APT(高级持续性威胁)或者类APT产物(例如XZ后门或者其他供应链污染)。
Windows的安全理念则是反过来,我习惯叫“WinDOS”,Windows的安全理念并不是从根源上解决存在的漏洞,而是“寻找利用这个漏洞的人事物”,这是MS-DOS时代延续下来的做法(也是微软执着的东西)。
这导致Windows的安全体系需要反恶意软件,而对于Linux则变成了可有可无的东西。
并不是大家所认为的“Linux因为用的人少而没有恶意软件”,这句话只能说是“现象”但不是“根本原因”——根本原因在于这两样东西是两回事不能一概而论(就好像你愤怒之极可以一拳打穿十米厚的钢板而我只能气死自己,干员之间亦有差异.png)。
第二个原因,这也是有些人查英文资料时发现的:Linux发行版社区对反病毒软件有一种歧视(于是不会建议你安装并直言那都是垃圾)。
嗯,这其实是一场真实发生过的事情:
2007年11月,甲级战犯Sophos给Linux内核计划组提交了一份喝了两瓶福尔马林后写出来的垃圾内核补丁(Kernel Patch),当场激怒了所有内核开发者。
这个垃圾内核补丁的目的是这样的:
On November 28, a message from an engineer at Sophos turned up on the kernel mailing list. It seems that Sophos has a security module (called "Talpa") which performs virus scanning; they would like for the LSM interface to remain so that this module can continue to be loaded. Of course, only free software modules are considered relevant for this discussion, but there is no problem with that: Talpa is available on SourceForge and has been since, well, November 23. Talpa was described this way:
11 月 28 日,Sophos 的一位工程师发来的一条消息出现在内核邮件列表上。Sophos 似乎有一个执行病毒扫描的安全模块(称为“Talpa”);他们希望保留 LSM 接口,以便可以继续加载此模块。当然,只有自由软件模块被认为与本次讨论相关,但这没有问题:Talpa 可以在 SourceForge 上使用,并且自 11 月 23 日以来一直可用。塔尔帕是这样描述的:
In essence, what our module does is it intercepts file accesses and allows userspace daemons to vet them. One of the means we implemented that is through LSM and although it is not a perfect match for such use we prefer to use an official interface. Unfortunately, with time it became impossible to use LSM on some distributions (SELinux) so we had to implement other intercept methods which are significantly less nice, and which may also become unworkable over time.
从本质上讲,我们的模块所做的是拦截文件访问并允许用户空间守护进程审查它们。我们实现的方法之一是通过LSM,虽然它不适合这种用途,但我们更喜欢使用官方界面。不幸的是,随着时间的流逝,在某些发行版(SELinux)上使用LSM变得不可能,因此我们不得不实现其他拦截方法,这些方法明显不那么好,并且随着时间的推移也可能变得不可行。
So Talpa creates a hook whereby a (presumably proprietary) user-space process can scan file contents for bad stuff and, when it is found, block access to that stuff.
因此,Talpa 创建了一个钩子,通过该钩子,(可能是专有的)用户空间进程可以扫描文件内容以查找不良内容,并在发现时阻止对该内容的访问。
这显然就是扯犊子,为了让你的产品能继续加载而强迫其他人必须为你保留某种旧版本接口(还是安全相关的接口,也就是LSM/Linux安全模块)?这合理吗?
而且最搞笑的,这份提交是发在自由与开源内核补丁邮件列表的,这个邮件列表只会考虑自由软件。
愤怒的内核开发者直接口吐芬芳对着Sophos开发者来了这么两段话:
So you are going to try to force us to take something into the Linux kernel due to the security inadequacies of a totally different operating system? You might want to rethink that argument.
因此,由于完全不同的操作系统的安全不足,您将试图迫使我们将某些东西带入 Linux 内核?你可能要重新考虑这个论点。
Various people had been asking for _years_ to define what the hell are you trying to prevent. Not only there'd been no coherent answer (and no, this list of requirements is _not_ that - it's "what kind of hooks do we want"), you guys seem to be unable to decide whether you expect the malware in question to be passive or to be actively evading detection with infected processes running on the host that does scanning.
多年来,各种各样的人一直在要求定义你到底想阻止什么。不仅没有连贯的答案(不,这个要求列表_不是_那个 - 而是“我们想要什么样的钩子”),你们似乎无法决定你是否希望有问题的恶意软件是被动的,还是主动逃避检测在执行扫描的主机上运行的受感染进程。
不幸的是,几个星期后,这个脑残补丁由被提交了——Sophos找来了大腿Red Hat,Red Hat要求这个接口无论如何都得被加入到Linux内核中。
被激怒的Linux内核开发组成员忍不了了,将其一顿魔改后变成了一个新的内核接口:fanotify。
然而,在那之前就有一个专门的内核接口,可以让反病毒软件实现不需要挂钩Linux内核就可以实现监视整个文件系统:Introduce credentials API。
这件事让Linux开发者直接认为反病毒软件厂商除了扒特征码其实啥都不会,只会在那用着陈旧过时的思路和技术去做他们的“好东西”(而后来这些人和反病毒软件厂商实际接触后更是加深了这一观点)。
这就是Linux社区对反病毒软件普遍没有好感的历史故事。
那么结论是?
我认为如果你真心觉得Linux必须要安全软件(指反病毒软件之类的),你可能需要回到Windows,你在那里的经验是可以继续用的。
否则我认为你需要学习一下SELinux/AppArmor怎么用、如何在Linux下自动更新系统、验证软件的PGP签名和尽量使用开放源代码的软件等等。
这是入乡随俗的一部分(确信)。
参考资料:
https://lwn.net/Articles/292986/
https://lwn.net/Articles/293835/
https://lwn.net/Articles/292872/
https://lwn.net/Articles/339399/
https://lwn.net/Articles/260918/
https://lwn.net/Articles/306804/
|