苹果电脑Mac OS X对病毒的防御机制

分类:苹果杂谈
2008-1-25 21:41

评论(0)
阅读(8982)

Tags: , , ,
有人说Mac OS X下没有病毒,至少目前是这样。之前有几个恶意软件利用系统漏洞,但是这些漏洞在被利用之前已经发布了相关补丁,因此这些恶意软件的破坏力十分有限(这一 点来说确实比windows安全一些,当然vista的安全机制已经改进很多,后面会讲)。其实任何软件都会有漏洞,但这个不是这篇文章的主题。
vista中有一个微软大肆宣扬的功能,就是UAC(User Account Control,用户账户控制)。Ballmer说其他操作系统应该和微软学习这一先进机制,但实际上这只是微软醒悟后堵上了Windows有史以来最大 的一个缺陷(是缺陷而不是漏洞)。

反过来看,对于各种类Unix操作系统(包括Linux),在其诞生伊始基本上就具备了完善的用户权限管理系统。一般来说,不论是Linux还是 Unix都不会给用户提供管理员权限的root帐号使用,也不能随意创建管理员帐号(注意此处的管理员并非Mac OS X中的管理员,而是指root帐号,在Mac OS X默认设置下root帐号是禁用的),即使在使用root账户时,系统也会提醒用户注意使用root帐号可能会对系统造成损害。对于普通账户,用户仅仅拥 有对自身账户目录(即~目录下,其物理路径一般位于/User/xxx下,xxx为用户名)的读写权限,而无法修改硬盘上其它任何文件。下面我们举例来说 明这种模式的安全性。

有人说Mac OS X下没有病毒,至少目前是这样。之前有几个恶意软件利用系统漏洞,但是这些漏洞在被利用之前已经发布了相关补丁,因此这些恶意软件的破坏力十分有限(这一 点来说确实比windows安全一些,当然vista的安全机制已经改进很多,后面会讲)。其实任何软件都会有漏洞,但这个不是这篇文章的主题。
vista中有一个微软大肆宣扬的功能,就是UAC(User Account Control,用户账户控制)。Ballmer说其他操作系统应该和微软学习这一先进机制,但实际上这只是微软醒悟后堵上了Windows有史以来最大 的一个缺陷(是缺陷而不是漏洞)。

反过来看,对于各种类Unix操作系统(包括Linux),在其诞生伊始基本上就具备了完善的用户权限管理系统。一般来说,不论是Linux还是 Unix都不会给用户提供管理员权限的root帐号使用,也不能随意创建管理员帐号(注意此处的管理员并非Mac OS X中的管理员,而是指root帐号,在Mac OS X默认设置下root帐号是禁用的),即使在使用root账户时,系统也会提醒用户注意使用root帐号可能会对系统造成损害。对于普通账户,用户仅仅拥 有对自身账户目录(即~目录下,其物理路径一般位于/User/xxx下,xxx为用户名)的读写权限,而无法修改硬盘上其它任何文件。下面我们举例来说 明这种模式的安全性。

第一个例子:Ubuntu。Ubuntu是基于Debian修改后十分流行的Linux发行版,它所使用的root账户通常情况下用户无法直接登录,但如 果需要执行root权限的程序时,用户可以通过在命令前加上"sudo"来实现root权限,比如$sudo shutdown,这时系统会要求输入密码来确认权限。而root账户其密码是由系统动态修改的,因此理论上几乎不可能取得root密码明文。在使用 sudo命令的时候,系统会自动启用root权限。如此可以直接避免用户接触root账户,也就最大限度地确保恶意程序不会威胁到用户目录以外的文件;

第二个例子:Mac OS X。其实OS X对用户权限的管理与Ubuntu有很多相似之处(比如使用sudo命令来获得管理员权限),这里只说说如何启用root账户。在“实用工具”目录下有一 个“目录实用工具”,运行,点击解锁(此处会要求用户输入管理员账户密码),点击“编辑/启用root账户”就可以完成这一设置。root账户几乎可以修 改硬盘上所有的文件,因此存在这很多不安全之处,在默认情况下,他是禁用的。

接下来谈谈计算机病毒和恶意软件。计算机病毒的传播需要几个要素,一是自我复制,二是潜伏,三是传播。当然前面说过,用户对自身文件夹中的文件仍然拥有读 写权限,病毒同样有,因此用户目录下的数据依然是不安全的。 这个问题并不是不能解决,而是存在易用性的问题(没有人希望读写文件的时候总是不断重复输入密码吧?)。但实际上, 操作系统的运行并不依赖用户文件夹下的文件,因此这样的“病毒”对系统本身是不具备任何破坏性的。(事实上我们可以很容易编写这样一个“病毒”:在 shell中运行rm -rf ~/,运行之后用户目录将被清空。)但是如果想要实现像Windows下那样“智能化”的病毒就不是那么容易了,例如熊猫烧香。首先,需要在注册表或服务 中写入自启动项,需要root权限;其次,感染可执行文件,只要不在用户目录下放置可执行文件,这一条同样需要root权限;第三,改写.gho备份文 件,如果你真的认为他很重要,为什么要给这个文件读写权限呢(这从侧面反映了一个显而易见道理:用户的安全素养决定系统安全性)?由此可以看出,Unix 系统下病毒少并不是像某些人所说“因为用户少”,而是由于Unix本身良好健全的账户管理体系。

反过来看看Windows Vista之前的用户管理权限:比如XP,安装完成之后,系统默认为用户创建的账户具有几乎和Administrator相同的权限,可以读写硬盘上几乎 所有的文件。不用说,所有的病毒和恶意软件都是在管理员权限下运行的,他们可以修改硬盘上几乎所有的文件而不需要任何验证,只要用户双击一下就行。这是 Windows下各种恶意软件泛滥的根本原因。其实Windows下也可以设置小权限的Power User账户,在需要管理员权限时,按住Shift再右击选择以其他用户身份运行。但是有几个人注意到这点了呢?

再来看看最新的Vista加入的UAC功能,我相信十个用户中至少有七个都把UAC关了(这依然体现出用户安全素养的问题)。这不是微软的问题,但又是微 软的问题。原因很简单:Vista以前的各种软件都默认用户使用管理员账户这个事实,因此都不加确认地修改非用户目录下的文件,比如注册表,DLL文件。 转到Vista平台后,这些软件依然需要这么做,但是这个时候UAC提示窗口就会不断地弹出来,不胜其烦。举个极端的例子:老版本的KMPlayer(新 版本我没有测试过,不清楚是否已经改进)将播放列表放在Program Files目录下,但是在Vista中它没有对这个目录的写权限,因此会发生写入错误。其实微软在XP中已经意识到这个问题,不允许程序修改系统目录下的 文件,但是似乎没有多大收效。

当然也不能完全保证Unix系统是绝对安全的,比如账户控制体系存在Bug导致root权限被非法获得,或者某个以root权限运行的进程存在漏洞,都有 可能导致安全性受到威胁。但无论如何,这样的漏洞并非缺陷,是很容易被克服的;而且Unix系统的这种账户控制体系经过这么多年的完善,其可靠性是不言而 喻的。

综上所述,可以看出系统安全与否很大程度上取决于账户管理体制的可靠性。

  
  
发表评论
  
       昵称   [注册]    密码   游客无需密码   
         
    打开HTML     打开UBB     打开表情     隐藏           记住我