[转载]为什么桌面系统装 Linux 可以做到更好的安全性(相比 Windows & macOS 而言)

又有一段时间没写技术博文了。在前几篇博文的评论中,有若干读者催写 Linux 方面的教程。俺准备开始动手,写一点傻瓜教程(面向技术菜鸟)。
  很多人切换到 Linux 是出于安全方面的考虑。所以在写具体的 Linux 教程之前,咱们先来聊一下 Linux 安全性方面的话题。
  今天这个话题是前些年想聊但是一直拖着没写的(请原谅俺比较懒),如今算是补上了。program-think

★事先声明

◇声明1

操作系统间的对比很容易引发口水战。
  如果你不同意俺的观点,最好能指出俺哪里说得不对,而不要仅仅停留在“口水战”层面的争吵。

◇声明2

俺在本文标题中已经明确限定了讨论范围是【桌面系统】。
  “服务器系统”或者是“移动设备的系统”【不】在本文讨论范围之内。

★预备知识

◇啥是“发行版”?

通俗地说:Linux 只是一个操作系统内核(Linux kernel),并不是一个操作系统。
  所谓的“发行版”,就是在 Linux kernel 的基础上,再加装相应的辅助性软件,使之成为一个【可用的】操作系统。
  (关于“发行版”的更多介绍,可以参见俺的另一篇《扫盲 Linux:如何选择发行版?》)

◇啥是“攻击面”?

通俗地说,系统中凡是【有可能】被攻击者利用的地方,都【有可能】存在安全漏洞。这些“地方”的总和,称之为“攻击面”。

◇啥是“攻击面”的【大小】?

这个概念相对比较好理解。
  通俗地理解:软件越多,则攻击面越大;软件所提供的“数据输入途径”越多,则攻击面越大。
  (注:上面的说法只是一直【通俗化】表达,其实并不严密;喜欢抬杠的同学,别较真哦)
  (在其它条件类似的情况下)攻击面越大,则系统被入侵的风险越大。

◇啥是“攻击面”的【确定性】?

这个概念的理解,相对费点口舌。
  所谓的“确定性”就是指攻击者对你系统中安装的软件,了解的详细程度。
  攻击者对你系统中的软件情况了解地越多越详细,那就表示“确定性”越高。
  (在其它条件类似的情况下)“确定性”越高,攻击者在实施入侵的过程中就越容易得手。

★Linux 的发行版的数量极多——可以用来降低【攻击面】的“确定性”

咱们拿 Windows 7 来作为对比。
  Windows 7虽然提供了几个不同的版本(比如:家庭版、专业版、旗舰版),但是这些版本其实差别不大。
  为啥说“差别不大”捏,因为这几个不同版本的 Win7,都包含了完全相同的核心组件。【由于 Windows 的可定制性很低】,这些核心组件你是【无法】移除滴!而只要有某个核心组件出现安全漏洞,不管你用的是家庭版还是旗舰版,都会中招。
  (macOS 的情况与 Windows 类似)
  再来说 Linux。
  Linux 区别于其它操作系统(Windows、mac OS、BSD)的一大特色是:非常多的发行版。
  不同的发行版,差别非常大。这种差别不光体现在“预装的应用软件不同”,还体现在“内核的版本不同”,还体现在“内核的编译参数不同”。
  当俺对读者说:“俺用的是 Linux”,这句话【几乎没啥】信息量。通过这句话,你无法知道俺的系统中会有哪些软件,也无法知道俺的系统运行的是哪个版本的内核(kernel),更加无法知道俺系统的内核具有哪些编译参数。

★Linux 具备高度可定制性——可以用来降低【攻击面】的“大小”和“确定性”

◇降低攻击面的【大小】

Linux 相比 Windows 和 macOS 的最显著特点,是其高度的可定制性。
  找几个栗子来 show 一下:

第1个栗子:
  Linux 的某些发行版可以比较方便地重编译内核。通过编译内核,可以把很多不需要的内核模块去掉(禁掉)。这当然有助于降低攻击面。
  对于这点,Windows 是完全做不到滴(因为微软没有把 Windows 的内核开源出来);
  苹果的 macOS,虽然其内核(darwin)是开源的,也可以重编译,但是比 Linux 要麻烦。

第2个栗子:
  Linux 可以裁剪到【极致】。比如说:某个名叫 BasicLinux 的发行版可以把整个系统裁剪到只有 2.8MB,然后运行在只有 3MB 内存的 386 机器上。
  而近期的几个 Windows 版本(Win7、Win8、Win10)再怎么裁剪也还是有几百兆。
  至于苹果系统,貌似也无法像 Linux 这样裁剪(精简到只有几兆)
  把系统大幅裁剪,对关注安全的人而言并【不是】为了省硬盘(现在硬盘已经很便宜),而是为了【降低攻击面】。

◇降低攻击面的【确定性】

关于“确定性”的话题,刚才聊“发行版”的时候,已经聊过了——如果攻击不知道你用的是哪个发行版,你系统的攻击面非常不确定(确定性很低)。
  其次,就算是攻击者知道了你用的是哪个发行版,你的攻击面依然“确定性很低”——因为 Linux 的发行版很容易进行定制。
  拿 Windows & macOS 来作为对比。
  Windows 的图形界面系统是绑定在系统内核的,你无法定制它,更无法剥离它。
  对于苹果的系统,你要想把 macOS 的 GUI 系统彻底换掉,貌似有难度。
  但 Linux 就完全不同了——对 Linux 的图形化系统,从上层的“桌面环境”(desktop environment)到中间的“窗口管理器”(window manager)再到底下的“显示服务器”(display server),都是【可选的】(都有不止一个的候选项)。Linux 甚至还可以配置成【完全没有图形界面】。

★Linux 支持多样化的硬件(CPU/主板/等)——可以规避硬件的“单点风险”

◇预备知识:何为“单点风险”?

此处所说的“单点风险”是指“单点故障的风险”。
  关于“单点故障”(Single Point of Failure)这个概念,俺曾经写过一篇博文《聊聊“单点故障”——关于“德国空难”和“李光耀”的随想》。
  (为了节省篇幅,此处就不再解释了。不懂的同学请自己去看那篇)

◇预备知识:啥是硬件漏洞?

前面提到过“软件的安全漏洞”。其实除了软件,硬件也可能出现安全漏洞。
  就拿前几个月的新闻来说——高通的芯片存在一个 QuadRooter 漏洞,可以被攻击者用于“提升权限”。据说影响全球几亿部手机(相关报道在“这里”)

◇MacOS 的劣势

前几章的很多反面案例都是拿 Windows 来嘲讽;本章节,俺要拿苹果公司的 macOS 来作为反例了。
  苹果公司的商业模式有一大特色就是【软硬通吃】——Apple 的产品,软硬件都是它自己提供的。
  这么做当然有很多好处——比如说更好的用户体验。
  但是在安全方面,缺点也很明显:

  1. 攻击面的确定性非常高
  2. 软件的单点故障
  3. 硬件的单点故障

软件的话题以及“攻击面的确定性”,前面已经聊过了。这里聊一下硬件的问题。
  假设你是一个果粉,并且你家中所有的 PC 都是苹果的笔记本。
  由于苹果的笔记本,硬件都是苹果提供的,所以你没有选择的余地。这就导致你的 N 台 PC 的硬件是相似的(甚至是完全一样的)
  如果出现了一个硬件方面的安全漏洞,很有可能会导致你【所有的】苹果笔记本都中招。

◇Linux 的优势

相比 Windows 和 mac OS,Linux 支持的 CPU 类型非常非常多(有可能你听说过的 CPU,它都支持)。
  除了 CPU,Linux 对其它的硬件的支持也很全——你可以把 Linux 运行在各种各样的硬件机型中,比如说:
智能手机和平板
家用的网络路由器
电视机顶盒
树莓派(Raspberry Pi)
轿车的车载系统
大型机、中型机、小型机
......
  所以,如果某个 Linux 粉丝家中有 N 台 PC,他为了降低“硬件的单点风险”,完全可以在购买 PC 的时候,选择硬件完全不同的设备(比如一台是 Intel 的 x86 芯片,另一台是 ARM 芯片)。

★Linux 的用户群更加小众——避免了【树大招风】

三大桌面操作系统的用户数,基本上是:Windows > macOS > Linux(Linux 的用户群是三个里面最小的)
  因此,不管是民间的草根骇客还是国家级的御用骇客,如果他们要研发渗透工具去入侵【桌面系统】,他们会把最多的资源(人力/物力)用来开发针对 Windows 的渗透工具;其次才是针对 mac OS 的渗透工具;而针对 Linux 【桌面】的渗透工具是最少的。

★Linux 是开源的——有助于代码审查

开源的好处有很多。包括本文前面提到的其中几点,也是跟“开源”密不可分的。
  考虑到篇幅有限,在本章节,俺只聊开源带来的其中一个好处——代码审查(Code Review)。
  在开源社区有一个很有名的 Linus 定律:“只要有足够多的眼睛,就可让所有问题浮现(given enough eyeballs, all bugs are shallow.)”。这个定律指出了——开源对代码审查的关键作用。
  (注:其实这个定律最早的提出者不是 Linus,而是埃里克·雷蒙德——《大教堂与市集》的作者)

为了加深大伙儿的印象,俺拿 Windows 来作为反例——因为 Windows 基本上完全是【闭源】的。
  假设某个微软的程序员想要作恶——在 Windows 的某个核心模块中留下一个后门。由于 Windows 的核心模块都是【闭源】的,外界人士要想在闭源的模块中发现这个后门,难度非常大。虽然微软内部也有代码审查,但是微软内部搞代码审查的人,其人数是很有限滴,这些人的精力和工作热情也是很有限滴。所以,这类后门是很难被发现滴!
  反之,很多 Linux 发行版是完全开源的(从内核到应用软件,全部都提供源代码)。如此一来,全世界的程序员或者安全研究人员(只要愿意)都可以去看这些源代码。看代码的人多了之后,发现安全隐患的概率就会大大提升。

★有些 Linux 发行版由【社区维护】——有助于摆脱商业公司,降低隐私风险

(三大桌面系统中)只有 Linux 才存在【社区维护】这种概念。另外两大桌面系统(Windows 和 mac OS)都是由【商业公司】来维护的。
  商业公司与开源社区,有一个非常本质的区别——【商业公司要考虑盈利,而开源社区没有赚钱的压力】。
  俺博客的老读者应该知道——俺对商业公司(尤其是商业大公司)抱有某种不信任的态度,原因包括如下:

1. 商业公司会为了利润,而主动收集用户隐私
  Google 是这方面典型的【反面】教材——Google 90% 以上的利润来自“在线广告业务”。为了实现广告的【精准投放】,Google 不得不收集用户隐私,以增加对【每一个网民】的了解(Google 对你了解得越多,它投放给你的广告就越精准)

2. 商业公司会为了利润,而迫于政府压力实施监控
  永远不要忘记斯诺登曝光的棱镜门丑闻

★Linux 有更完善的软件包管理机制(此优点主要针对 Windows)——有助于避免中招

◇缺乏“软件包管理机制”的风险

长期以来,Windows 一直缺乏成熟完善的软件包管理机制。很多菜鸟想要装软件,不外乎如下步骤:
1、先到百度上搜一下
2、找到某个下载站点
3、把软件下载下来
4、安装
5、使用
  上述这种操作步骤,【至少】存在两个安全缺陷:

缺陷1:软件下载站点提供的安装包,【未必】是纯洁的(可能已经被人做了手脚)
  解释:
  有的软件下载站点(或网盘),本身就是黑店——它们提供的软件包本身是植入后门的;
  还有的软件下载站点(或网盘),因为管理员的疏忽——在收集软件包的时候没有仔细检查,混入了病毒/木马。
  举例:XcodeGhost 事件
  此事的根源在于:因为苹果公司官方的 Mac App Store 被 GFW 封锁,很多国内的程序员无法从 Mac 官网下载 Xcode(这是苹果系统的开发工具),有的程序员为了省事儿,直接通过墙内的网盘下载 Xcode。其中有些人下载到的 Xcode 是带有病毒/木马的。然后这些粗心的程序员又用这个带毒的 Xcode 去开发 iOS 应用,结果导致开发出来的 iOS 应用也是带毒的。
  受波及的 app 【至少】包括:微信、网易云音乐、滴滴打车、高德地图、12306、中信银行、同花顺......(大公司倒下一片)

缺陷2:软件下载过程中,【可能】被篡改
  解释:
  如果下载过程中的传输是基于【明文的】HTTP 或 FTP,那么就存在【下载过程中被篡改】的风险。
  举例:黑暗幽灵木马(DCM)

缺陷3:没有及时升级新版本
  大部分软件本身是不提供“自动升级”功能的,对这类软件,你就需要自己手动去更新到新版本。
  自己手动更新,麻烦且不说,而且每一次更新,就又重复上述这两个风险。

◇“软件包管理机制”的好处何在?

刚才介绍了——传统方式下安装软件的风险。那么“软件包管理机制”如何规避这些风险捏?
  好处1:更可信的来源
  对于一个 Linux 发行版而言,它的口碑越好,通常也说明:它提供的软件包越可靠。
  发行版的管理员是如何确保可靠性的捏?他们通常会从某个软件的官方网站直接获取“第一手材料”(减少了中间环节)。

好处2:自动的文件校验机制
  完善的软件包管理器肯定会自带“文件校验”的方式(有的是基于“散列值校验”,有的是基于“数字签名”,有的是这两种相结合)。
  有了文件校验的机制,如果软件包在下载过程中被篡改了,在【安装之前】就会被发现。

好处3:自动的软件升级机制
  几乎所有的软件包管理机制,都会帮你实现“自动升级”。总是保持自动更新,可以大大降低安全漏洞的风险。
  (关于“安全漏洞”的扫盲,可以参见《如何防止黑客》系列的其中一篇——是专介绍漏洞概念的)
  注:包管理器的的自动升级,是【独立于】软件本身的自动升级。换句话说,不管某个软件本身是否支持自动升级,包管理器都可以帮这个软件完成自动升级。

★Linux 有更严格的“文件权限”(此优点主要针对 Windows)——有助于降低病毒的流行

曾经有一个流传很广的【谬误】——因为 Windows 的用户数量大,所以才导致 Windows 下的病毒泛滥。
  要反驳这种谬误很简单——如今“Android 装机总量”已经大大超越“所有版本 Windows 的装机总量”。但是 Android 并没有出现像 Windows 那么泛滥的病毒传播。
  那么,是什么导致 Windows 的病毒泛滥捏?一个很重要的原因是——文件权限不合理:

◇FAT 文件系统,完全不支持“文件权限”

早期的 DOS 操作系统以及早期的 Win9x(Win95、Win98),只支持 FAT 格式的文件系统。而这种文件系统【不支持】文件权限。
  没有文件权限就意味着——任何一个进程都可以修改 FAT 分区中的任何一个文件。这样的系统环境,简直就是病毒的天堂。
  所以在 DOS 时代以及 Win9x 时代,病毒的流行程度很广;到了 NT 时代(Win2000 之后),开始普及 NTFS 文件系统(支持文件权限),病毒的流行程度就一下子少了很多。

◇Windows 缺乏“可执行权限”的概念

在 Windows 下,一个文件是否“可执行”是根据扩展名(exe、com、bat ...),而【不是】根据文件权限。
  相比之下,所有 POSIX 风格的操作系统(早期的 Unix、如今的 Linux、各种 BSD)都是根据专有的“可执行权限”来决定一个文件是否可以运行。
  Windows 的反例:
  很多年以前,Windows 上就流行一个低劣的骗术——把一个 exe 的可执行文件内置一个 jpg 的图标,然后再通过适当地修改文件名,伪装成一个吸引人的图片文件(此时该文件的扩展名依然是 exe,但是菜鸟通过资源管理器看这个文件,会以为是个图片)。
  那些上当的网民会直接双击该文件(想要打开图片),但其实是运行了一个恶意的可执行文件(比如病毒或木马)。
  这样的骗术之所以能成功,技术上的关键点在于——Windows 是根据文件扩展名来判断一个文件是否可执行。对于 POSIX 系统(UNIX、Linux、BSD)这样的骗术是【无法】得逞滴。

★结尾

希望看完这篇博文,可以促使某些读者把桌面系统切换到 Linux 上。
  接下来的技术博文,俺会开始写 Linux 的一些傻瓜教程。由于 Linux 的发行版差异很大,俺目前初步考虑:基于 debian 发行版来介绍这些傻瓜教程,
  如果你想要推荐其它发行版(作为傻瓜教程的基础),可以在本文留言。

原文链接:https://program-think.blogspot.com/2017/03/Why-Linux-Is-More-Secure-Than-Windows-and-macOS.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容