Linux本身并不是一个安全的操作系统。这是因为Linux是在UNIX的结构设计基础之上进行开发的,而UNIX的开发者对于安全问题并没有十分关心——毕竟那是在1969年。 “首先要面对的是事实是,UNIX的开发者并没有考虑安全问题。单单这一点就会引发大量的漏洞,”Dennis Ritchie在1979年他《关于UNIX的安全》的论文中写道。 上周二在波士顿的LinuxCon上,红帽公司Linux内核开发者的James Morris谈论了Linux在过去十年里是如何演变来克服自身安全模型的不足。 Morris指出,问题是在UNIX诞生的60年代末,每个人都以为我们现在能拥有会飞的汽车,但事实是我们有了Facebook。我们今天用计算机在做的事情可能是40多年前人们的梦想,尽管我们仍旧依赖于数十年前设计的操作系统。 这就是Linux开发人员所面临的挑战。Morris说,为了确保Linux的安全,软件工程师必须在Linux内核周围插入安全组件。Linux最早的安全机制是UNIX DAC,后来陆续出现了POSIX、访问控制列表、私有和PID命名空间、加密、Linux安全模块、SELinux、Smack、TOMOYO、 AppArmor,类似的名单仍在继续。 但是拥有这么多选择,用户们反而会觉得茫然。这有点像进入了一个“酷圣石”冰激凌店,然后你会被一长串配方和冰激凌口味弄得无所适从。不如老老实实地按照自己预定的食谱来选,或者更简单,直接从附近的杂货店挑一品脱樱桃加西亚。 眼花缭乱的Linux安全选项 Linux无数的安全选项不仅阻碍了安全技术的发展,同时也为建立安全的Linux服务器和工作站制造了困难。例如,一个用户或者系统管理员不得不去决定是否要开启Smack、TOMOYO、SELinux还是AppArmor。做这样的决定并不像想象的那么简单,因为这些技术中的很多都解决类似的问题,只是它们的处理方式略有不同。比如说,Novell为它的SUSE Linux企业服务器开发了AppArmor,它是SELinux的竞争对手。Novell在其AppArmor网站上发布了两种技术的比较。结果是,AppArmor拥有更简单的配置文件格式(注:很多用户一直觉得SELinux的安全级别设置十分麻烦,甚至也有报道说SELinux会导致安全问题,因此有很多教程都是教人如何关闭SELinux的)。 我们还没有讨论关于网络安全、存储安全和恶意软件预防。这涉及到为数据包过滤设置防火墙。至于阻止恶意软件,目前有几个处于不同发展阶段的项目,比如fsnotify、TALPA 和DazukoFS。 Morris还说,最大的问题是“让人们认识到安全措施是必要的。” “这不像系安全带。”Morris说,“我们不能让法律来制约人们设置安全的Linux服务器和工作站。我们必须说服人们,这样做对他们有利。” Linux安全机制的透明化 因此,我们需要让安全选项尽可能的透明化,而不是让绝大多数Linux用户苦苦挣扎于无数的安全选项中,Morris说。 透明化是AppArmor的既定目标之一。SUSE的Tony Jones说,“AppArmor的目的是对于应用软件实现高度透明:如果你在一个工作系统中添加AppArmor,你需要开发AppArmor配置文件,但是不用改变你的应用程序。如果将AppArmor从一个正在运行的系统中移除,系统仍将完全像之前一样继续运行,只是没有AppArmor安全保护而已。” 虽然SELinux的配置文件比AppArmor的更麻烦,但是透明化也是它的目标之一。红帽称,“SELinux插入Linux安全模块(LSM)能够为多个普通网络面应用程序处理网络核心层访问请求。对于这些应用程序,基于SELinux的安全体系不需要进行额外的管理。此外,对用户和应用程序而言,它是完全透明的。” 提高透明度的好处是它可以减少人为的安全威胁。人们就像水一样,喜欢寻找没有阻碍的道路。如果系统管理员需要通过编写繁琐的配置文件和页面来设置一个安全的系统,那么他们中的很多人可能很轻易地就气馁了。 “安全问题归根结底是人的问题,”安全专家Bruce Schneier说。 |