未雨绸缪:打造安全的LAMP平台四处方

 

在一个简单站点上以单一用户运行mod_php没有什么问题,不过在一个共享的系统上以多用户运行它这简直就是一场噩梦,因为所有的脚本都运行在同样的Apache用户之下。一个可选方案是在suEXEC 或CGIWrap下运行PHP。现在有数不清的站点仍在运行PHP3和PHP4,还有更多的站点从来没有打过安全补丁或进行程序的缺陷修正。
LAMP是一个基于Linux、Apache、MySQL、PHP的开源Web开发平台,有时也将它作为Perl或Python替代性编程语言。Apache HTTP服务器拥有极大的安全性,至少在它运行在Linux或任何Unix类的操作系统上的时候是这样。不过简单的静态只读Web站点面临着各种危险;如今人们更多地开发动态的Web站点,这是否代表着一种进步呢?

  对于笔者而言,更喜欢过去那种简单的静态的HTML,因为即使浏览器的支持和站点质量像现在一样存在着问题,至少它们并没有因为运行那些臃肿的、低效的、错误百出的脚本而使系统陷于停顿甚至锁死整个系统。随着Linux的普及,我们再也不能对其安全自鸣得意了。

  由于Linux发行版本,如XAMMP和Ubuntu等,也由于PHP脚本语言的极大流行,现在安装一个LAMP并在一个晚上就建立一个动态的Web站点已经相当容易了。不过这种简易性并不一定是一件好事。任何一个Web管理人员都需要花点时间和能源来彻底地学习其LAMP。任何一个暴露在互联网下的服务器都需要对安全的额外关注,而动态的Web服务器尤甚,因为其更为复杂,其附带的损害更严重。

  近期有组织的犯罪对计算机的漏洞利用呈上升趋势,而恶意软件也仅是作为一个欺诈和窃取的途径而已。现在,它们进入你的系统一般并不是为了破坏,而是悄悄地窃取数据并将你的系统与世界范围内的僵尸网络联系起来。

  你可以采取的最重要一步是不要使用PHP。在你扔掉这个“烂苹果” 之前,请继续读下去。

  一、PHP=烦恼

  PHP(超文本预处理程序)是LAMP不安全链条中的罪魁祸首。它相对年轻,诞生于1997年,且仍在发展。PHP的问题分为三个方面:固有的缺陷、不健全的编码器、站点不打补丁或升级PHP。

  如果我们揭开PHP的盖头,发现的将不会是一个美人。它充满了混乱和不谐调的因素。其命名约定、语法、大小写敏感性都有矛盾。其内置函数基本上多余,相关文档资料少得可怜,因此你并不能确定哪一个函数的具体作用是什么。

  PHP看起来易于学习。在某种程度上,你可以在几小时内学会建立一个动态的Web站点。不过,要明确它的不安全因素并学会如何避免之可能要花费几年的时间。最常见的安全漏洞之一是非确认的输入—即所有的用户输入必须是不可信任的,不过PHP在这方面并没有什么得力的工具,因此你不得不编写自己的验证例程。

  在运用Apache的mod_php并以一个Apache模块的形式运行时,PHP继承了Apache进程的所有证书。因此,Apache可读写的全部内容也就是PHP可读写的内容,这也就意味着一次成功的PHP漏洞利用会直接导入到Apache中以及它所涉及到的所有内容。在一个简单站点上以单一用户运行mod_php没有什么问题,不过在一个共享的系统上以多用户运行它这简直就是一场噩梦,因为所有的脚本都运行在同样的Apache用户之下。一个可选方案是在suEXEC 或CGIWrap下运行PHP。这二者在一些健全的脚本语言下也可很好地运行,如Perl,Pythlon,Ruby。

  现在有数不清的站点仍在运行PHP3和PHP4,还有更多的站点从来没有打过安全补丁或进行程序的缺陷修正。PHP5早在2004年就已发布,而PHP3在1998年发布。是的,这有点儿愚蠢甚至不安全,不过更新到更新的PHP版本几乎总是需要重大的代码重写。更可笑的是Apache、PHP、MySQL总是冲突;你不得不同时使用恰当的、兼容的版本,否则它们就不能一起运行。对于简易的全新的安装,我们有很多选择,如XAMMP 和Ubuntu的 LAMP程序包都是不错的产品。不过,在你设法升级你的系统而它们不能保持同步时,真正可笑的事情也会接踵而至。

  依照笔者的粗浅的观点,你最好不要采用Perl, Python 或 Ruby。因其需要依赖于过时的、不安全的LAMP安装,所以主机服务也就臭名昭著。因此,请检查如下站点链接:http://www.webhostingtalk.com/,它可以帮助你找到一个合适的Web主机服务。

  二、MySQL

  强化MySQL依赖于几个基本的步骤:没有网络访问;在一次根目录的改变中,在一个唯一的组和用户下运行MySQL;创建一个强健的管理员口令;没有匿名访问;清除你不需要的所有方面,如示例数据库和表,以及所有的测试数据库和表。在这个站点http://www.securityfocus.com/infocus/1726链接上有一篇很不错的操作指南,这是一系列操作指南的一部分,还有保障Apache和PHP安全的链接。MySQL参考手册还有一些安全方面的好章节。请记住, chroot并非安全手段,不过Security Focus还是推荐它。

  三、锁定Apache的安全

  关于这方面的文章有很多,关于外文资料。大家可参考:howtos on securing Apache

  所有的敏感会话,如用户登录或任何用户输入,都需要用OpenSSL保护。

  四、由SELinux 或 AppArmor搞定

  Fedora Linux拥有一个很出色的SELinux策略,它包括Apache策略和一个图形化的管理实用程序system-config-selinux。笔者并不是说它多么容易,不过总比从头开始要容易。AppArmor也值得你投资。有人认为与Swlinux相比,它易于管理,有人认为AppArmor更好。

  小结

  如果你正在运行一个Linux服务器,那么这篇短文可能正适合你,因为你和笔者一样都觉得Linux和类Unix操作系统是有口皆碑的。不过,我们不可满足于此。安全原则是放之四海而皆准的,你需要的是技巧和经验。而且总有一双罪恶的黑手埋伏在暗处,特别是在有组织的犯罪已经发现了互联网的强大威力的今天。建立一个简单的测试环境是简易可行的,而且有大量的文档资料供你选择使用。Linux安全的未来在于一些稳健的工具,如SELinux 和 AppArmor等。虽然亡羊补牢尤未晚,但是我们还是希望采用可以保护自己免受未知威胁的工具,所以说未雨绸缪才是关键呵。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值