“首先要面对的是事实是,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服务器和工作站。我们必须说服人们,这样做对他们有利。”