用于生产用途的安全 LAMP 服务器

Wal*_*J89 10 mysql linux php lamp apache-2.2

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

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

另外我可以采取哪些步骤,如果我会变得更加偏执,那通常可能没有必要?

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

War*_*ner 13

这些建议不在我的脑海中,并不打算全面。

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

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

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

审核设置了 SUID 位的所有文件并删除。(这将严重限制非根能力。了解每个变化的影响。)

审计公共可写目录并删除可写位。(别管 /tmp。)

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

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

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

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

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

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

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

使用 SSH:

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

使用阿帕奇:

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

使用 MySQL:

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

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

巴士底狱