确保安全使用LAMP开源开发工具的四步曲

运维 系统运维
用过LAMP的人们都知道,LAMP是由 Linux+Apache+Mysql+Perl/PHP/Python 一起组成的,那你们是怎么确保安全使用LAMP的,那下面我给大家仔细讲下安全的使用方法!

 

LAMP 

图-LAMP

确保安全使用LAMP开源开发工具的四步曲

  任何暴露在互联网上的服务器需要对安全问题特别注意,对于动态Web服务器来说,由于其复杂性这一点显得更加突出。间接破坏的风险是非常高的。今天很多有组织的计算机犯罪一般利用计算机系统的漏洞,恶意软件正是欺骗、欺诈和盗窃等破坏行为的入口之一。它们一般不会攻入你的系统来伤害它们,而是悄悄的盗窃数据并把它们发送到全球范围内的僵尸网络中。

  一、PHP安全问题严重

  PHP超文本标记语言是导致LAMP不安全的主犯。相对很多主流编程语言,它还比较年轻,它诞生于1997年,依然在向前发展中。PHP所存在的问题主要是三方面:与生俱来的设计缺陷、缺乏经验的程序员和从不打补丁或升级PHP的缺乏维护网站。

  当你了解了PHP底层的东西后,你会发现它不是一个非常严谨的语言,其中充满了混乱和矛盾。命名约定、语法和大小写敏感全不一致。它的内置功能中有许多是多余的,实现着非常相似但不完全相同的任务,而且它在文档化方面又做的相当差,因此很多人不确定哪一个功能是实现什么操作。如果不了解其令人痛苦的详细信息,很容易导致程序员在编程中犯错。

  PHP看似非常容易学习。从一方面来讲它的确如此;你可以在几个小时以内就学会如何搭建起一个动态网站。但是要真正理解它的不安全因素潜伏的地方以及如何处理它们,可能要花费你数年的时间。其中最常见的安全漏洞之一就是未经验证的输入问题——所有的用户输入应该是不被信任的,但是PHP在这方面没有多少工具来帮助实现这个操作,因此你不得不编写自己的验证程序。

  当你通过使用Apache的mod_php来将PHP作为一个模块运行的时候,PHP会继承Apache进程的所有信任。因此,所有可以被Apache读写的事情同样也可以被PHP读写,这意味着一个成功的PHP漏洞会直接被引入到Apache和所有相关的程序中。在一个只有少数用户的简单站点上使用mod_php是没有问题的,但是在一个具有多个用户的共享系统中,它就是带来破坏的导火索,因为所有的脚本运行在相同的Apache用户下。一个可行的选择是在suEXEC或CGIWrap下运行PHP。这些情况同样适用于诸如Perl、Python和Ruby等脚本语言。

  现在还有众多网站依然运行在PHP3和PHP4之上,而且有更多的从来没有应用一个补丁修复或安全更新。PHP5在2004年发布,而PHP3则要回溯到1998年。是的,这是一种非常愚蠢和危险的事情,但是,更新到新PHP版本几乎意味着要进行大量的代码重写工作。更有趣的是Apache、PHP和MySQL的版本兼容问题,你必须选择同时选择正确的可以互相兼容的版本,否则它们没法一起配合使用。有一些方法可以实现轻松的全新安装,诸如XAMMP和Ubuntu的LAMP安装包。但是有趣的是,当你尝试更新你的系统的时候,它们不能保持同步。

  在我个人观点看来,你最好使用Perl、Python或Ruby语言,虽然在前端编程所花费的时间似乎要多一些,但是却会省去了很多安全和维护之忧。

#p#

  二、加固MySQL安全

  MySQL是当前最为流行的开源数据库之一,我们可以通过一些基本步骤来加固MySQL数据库的安全性。

  1、MySQL数据库只允许被同主机上的PHP使用;

  2、禁止对数据库的匿名访问;

  3、MySQL数据库应该在被改变了默认根目录下的环境运行,在一个虚根(chroot)环境下的特殊组和用户下运行MySQL;

  4、创建一个强壮的系统管理员密码,不会被别人轻易猜到,并定期修改密码;

  5、删除你不需要的所有服务,诸如示例数据库和表,以及任何测试的数据库和表。

  以上只是简单的几条安全建议,著名的安全公司Security Focus具有一个非常优秀的MySQL数据库安全指南(http://www.securityfocus.com/infocus/1726)。该篇文章是一个系列文章中的一部分,同样还包括加强Apache和PHP安全性的链接。另外,MySQL参考手册(http://dev.mysql.com/doc/index.html)中也有关于安全的很好的章节。另外,安全公司Security Focus强烈推荐使用chroot安全环境。

#p#

  三、加固Apache服务器

  客观来说,Apache Web服务器已经是一个非常安全的产品,但是即使一个好的工具也只有会合理的用它,才能发挥它的最大作用。以下是一些可以参考的建议。

  1、隐藏Apache的版本号和其他敏感信息;

  2、确保Apache以其自身的用户账号和组运行;

  3、关闭目录浏览;

  4、禁止Apache遵循符号链接;

  5、关闭任何不必要的模块;

  6、所有敏感的会话,诸如用户登录或任何用户输入等,都需要通过OpenSSL来进行保护。

  关于加固Apache安全性的最好文章之一是:http://httpd.apache.org/docs/2.0/misc/security_tips.html。

#p#

  四、通过SELinux或AppArmor来加固整体安全

  SELinux全称是Security Enhanced Linux,由美国国家安全部领导开发的GPL项目,它拥有一个灵活而强制性的访问控制结构,旨在提高Linux系统的安全性,提供强健的安全保证,可防御未知攻击。

  在Fedora Linux中有一个非常好的预置SELinux策略,其中包括一个Apache策略,还有一个图形化的管理工具system-config-selinux。我不是说它使用起来非常简单,但是通过使用它比你完全手动设置要容易的多。

  在Novell的企业版SUSE Linux中包含一个叫AppArmor的工具,也很值得关注。使用它,你可以为通用操作系统和应用软件预定义的策略,包括Apache Web服务器、Postfix邮件服务器、Sendmail邮件服务器、OpenSSH、squid、ntpd、nscd等,据说它比使用SELinux更加简单,关于两者谁更好一直存在争论。

#p#

  总结

  尽管你运行的是一个具有很好安全性的Linux或Unix操作系统,你也不能对安全问题大意。无论在哪儿总会有潜在的威胁,尤其是现在有组织的计算机犯罪已经发现了互联网的力量。基本安全常识应该坚持应用,另外你还需要相应的技巧和经验。搭建一个简单的测试实验室是非常容易且无需多少投资的,而且有很多触手可及的文档或帮助来辅助你实现这一点。Linux安全的未来在于像SELinux和AppArmor之类的工具,而不是我们已经熟悉的针对已经发现的威胁再作响应的方法(亡羊补牢式的防护),像SELinux和AppArmor之类的工具可以帮助你防护未知的安全威胁。

通过文章的分析,我们能从四点中找出LAMP的安全问题并解决它,希望本文对你们有用!

【编辑推荐】

 

责任编辑:赵鹏 来源: 网络转载
相关推荐

2011-07-07 13:09:04

编程

2021-10-09 08:00:00

SSH安全服务器

2022-12-28 08:00:00

安全容器

2020-09-22 11:34:29

物联网

2021-09-14 10:25:12

云计算云计算环境云安全

2021-09-03 20:58:45

零信任

2011-03-31 14:25:33

2014-08-18 10:09:53

2021-01-13 09:41:00

物联网身份验证授权

2009-06-22 09:16:00

无线网络加密网络安全

2018-01-23 07:00:09

2021-09-03 20:25:57

零信任网络安全网络攻击

2020-07-23 10:39:33

云计算云原生安全

2023-05-15 17:53:54

2020-09-27 10:59:28

信息安全新冠疫情削减预算

2020-11-01 16:58:13

浏览器缓存

2009-07-18 12:19:47

windowsU盘安全启动

2014-03-06 18:24:27

安全制度技术防御信息安全

2021-06-02 15:30:44

智能安防物联网智能建筑
点赞
收藏

51CTO技术栈公众号