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

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

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

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

此外,如果我变得格外偏执,我该采取什么措施呢?这些措施通常可能没有必要?

这是针对基本的单站点使用但必须是安全的。

答案1

这些建议都是我临时想到的,并不旨在面面俱到。

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

不要通过纯文本协议发送身份验证数据。例如,禁用 FTP。如果通过 Apache 发送身份验证数据,请使用 SSL。

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

审核任何设置了 SUID 位的文件并将其删除。(这将严重限制非 root 权限。了解每个单独更改的含义。)

审核公共可写目录并删除可写位。(保留 /tmp。)

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

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

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

强制执行密码标准。例如:最少 10 个字符,非字母数字字符,使用字母和数字。这是为了让暴力破解变得更加困难,以防密码文件被泄露。通过系统强制执行。

5 次身份验证失败后锁定用户,锁定时间至少为 10 分钟。保留密码历史记录,以便用户无法使用过去 5 次的密码。

如果您的环境较大,则绝对需要使用具有多个子网的网络隔离来隔离风险。如果环境较小,建议在本地系统上运行防火墙以限制暴露。例如,仅允许 SSH 访问您的 IP。tcpwrappers 也可用于额外的一层。(/etc/hosts.allow、/etc/hosts.deny)

当然,还要保持所有软件都是最新的。特别是面向公众的守护进程。

使用 SSH:

  • 禁用 SSH 协议 1
  • 仅允许根身份验证without-password(仅密钥对)

使用 Apache:

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

使用 MySQL:

  • 禁用默认用户。
  • 不要使用通配符主机。
  • 确保为每个用户设置唯一的主机。
  • 除非必要,否则不要监听 tcp。(通常无法避免。)
  • 尽可能限制应用程序用户权限。(SELECT、INSERT、UPDATE、DELETE 适合写入,SELECT 适合读取)

我建议专门研究 php.ini 的安全性调整。默认情况下,它是风险较高的软件。

巴士底狱

答案2

这是一篇很好的文章,您可以将其用作设置的基础,并根据您的发行版进行相应的更改:http://it.toolbox.com/blogs/rayheffer/how-to-build-a-secure-lamp-web-server-with-centos-5-36786

答案3

国防信息安全局有一组安全检查表这些都是很好的起点。更好的方法是了解每个条目的原理,但这不是一个快速的答案。我建议您查看 Enclave、网络、Unix 和 Web 服务器粘胶纤维秒。

相关内容