安全的LAMP服务器供生产使用

什么是安全的Linux,Apache,MySQL,PHP服务器(甚至是Perl)的生产使用程序?

除了设置Linux的MySQL密码和root密码外,还应该采取哪些其他步骤(可能不那么明显)?

如果我要变得更偏执,那么我可以采取哪些措施?

这是一个基本的单一网站使用,但必须是安全的。

这些build议不在我的头顶,并不是全面的。

查看Bastille,这是一系列在Linux中实现最佳实践的脚本。

不要通过明文协议发送authentication数据。 例如,禁用FTP。 如果您通过Apache发送authentication数据,请使用SSL。

禁用和删除任何不必要的软件,包括GUI界面。

审核任何SUID设置和删除的文件。 (这将严重限制非根本能力,理解每个单独变化的含义。)

审计公共可写目录并删除可写位。 (单独离开/ tmp)

避免以root身份运行任何守护进程。

研究所有多用户软件,详细监听套接字以获取安全最佳实践。

避免将用户添加到系统是最好的方法之一。 多用户系统需要更多关注细节。

强制密码标准。 例如:最less10个字符,非字母数字字符,使用字母和数字。 这是为了让暴力破解在密码文件泄露的情况下更加困难。 通过系统强制执行此操作。

在5次失败的authentication尝试之后locking用户,至less10分钟的locking。 保持密码历史logging,以便用户不能使用过去的5个密码。

如果你有一个更大的环境,使用networking隔离与多个子网隔离风险是一个绝对的要求。 如果环境较小,build议在本地系统上运行防火墙来限制暴露。 例如,只允许SSH到你的IP。 tcpwrappers也可以用于额外的层。 (/etc/hosts.allow,/etc/hosts.deny)

当然,保持所有的软件是最新的。 尤其是面向守护进程的公众。

使用SSH:

  • 禁用SSH协议1
  • 只允许without-password根authentication(只有密钥对)

使用Apache:

  • 禁用任何不需要的模块
  • 禁用.htaccess和公共目录
  • 禁用FollowSymlink和任何不必要的选项
  • 如果你不需要,不要安装PHP。

使用MySQL:

  • 禁用默认用户。
  • 不要使用通配符主机。
  • 确保为每个用户设置唯一的主机。
  • 除非必要,否则不要在tcp上监听。 (通常不可避免的)
  • 尽可能限制应用程序的用户权限。 (select,插入,更新,删除理想的写和select读)

我build议研究php.ini安全专门调整。 这是默认的风险较高的软件。

这里有一篇很好的文章,你可以使用它作为你的设置的基础,并相应地改变你的分歧: http ://it.toolbox.com/blogs/rayheffer/how-to-build-a-secure-lamp-web- 服务器与-的CentOS-5-36786

国防信息安全局有一套安全检查清单 ,这些清单是开始的好地方。 更好的是理解每个条目的基本原理,但这不是一个快速的答案。 我build议你看Enclave,Network,Unix和Web Server STIG 。