pes*_*taa 31 security linux web-server
设置 Linux Web 服务器时,您的清单/例程是什么?
您建议如何实现最大安全性?
有没有首选的方法来执行重复维护?
jns*_*jns 27
首先,请注意 Apache 中的任何脚本功能(php、cgi、ruby 等)都可能相当于具有运行脚本用户权限的 shell 帐户。
如果服务器与多个用户共享,您可能需要考虑使用 suexec(或ITK MPM - David Schmitt建议),这样并非每个脚本都以相同的 apache 用户身份运行。
虚拟化或 chroot apache,以便任何妥协至少在某种程度上包含在额外的安全层中。请注意,当您 chroot apache 时,维护可能会变得更加困难,因为您最终会将库移动到监狱等。如果您在 FreeBSD 上,您可以使用监狱来代替,这更容易维护,因为您只需安装 apache从端口,并在其中运行 portaudit,而不必担心任何库依赖项和手动移动文件,这总是变得一团糟。使用 BSD jails,您可以简单地继续使用包管理系统(端口)。(在 GNU/Linux 上,您还可以使用VServer进行虚拟化。- David Schmitt建议)
(显然)跟上更新和补丁,不仅适用于 Apache,还适用于 PHP、ruby、perl 等……不要只相信您的操作系统会为您提供所有更新。一些发行版的补丁非常慢。尽可能限制 0 天漏洞的暴露时间。将milw0rm提要粘贴到您的 RSS 阅读器中,订阅insecure.org邮件列表等...它不仅可以帮助您在操作系统发布补丁之前了解漏洞,还可以了解某些 php 中的漏洞例如,cms 应用程序甚至可能根本不受您的操作系统管理或修补。
使用诸如 tripwire/aide、audit 或 mtree(在 BSD 上)之类的东西来跟踪文件系统上的更改。这个真的很重要。定期将任何更改邮寄给您,每天手动检查它们。如果任何不应更改的文件更改,请调查原因。如果某些恶意 javascript 以某种方式通过任何方法插入到您的页面中,您将通过这种方式捕获它。这不仅可以保护您的服务器,还可以保护您的用户,因为您自己的网页可能会被滥用来感染您的访问者。(这是一种非常非常常见的策略,攻击者通常甚至不关心您的服务器,他们只想在被发现之前感染尽可能多的访问者。这些攻击者通常也懒得隐藏他们的踪迹。尽快达成这样的妥协非常重要。)
使用suhosin 之类的东西来保护 php 会有所帮助。但也要学会理解它,根据应用程序的预期参数调整它的配置。
使用诸如PaX 之类的内核补丁可能有助于保护您免受许多缓冲区溢出漏洞的影响。即使您的软件易受攻击。(这不会让你无懈可击,它只是另一个次要的层。)
使用某些安全工具时不要过于自信。了解您使用的工具,并使用常识。尽可能多地阅读、学习、跟上。
考虑使用强制访问控制(例如:SELinux)。它允许您非常详细地为每个应用程序指定允许执行的操作。允许访问哪些文件。允许内核调用什么等等。这是一个非常复杂的过程,需要很多理解。一些发行版为其软件包提供了预制的 SELinux 策略(例如:Gentoo)。这个建议与下面的建议有点矛盾,但仍然有效。
保持简单。复杂的安全策略可能对您不利。
在 Apache 中,设置一个非常严格的默认规则(选项无、拒绝全部等...)并根据特定 VirtualHosts 的需要进行覆盖。
拒绝访问所有点文件(也立即涵盖 .htaccess 文件)
在有任何类型的密码身份验证的任何地方始终使用 https。
防火墙应该是默认拒绝策略。在防火墙中建立一些特定的规则来记录特定的流量。
设置日志解析脚本以扫描日志中的异常。(prelude IDS套件可以做到这一点,但老实说,我建议您随着时间的推移构建自己的脚本,因为它会帮助您更好地理解自己的工具和规则。)
让服务器邮件您每天报告上次登录的用户、活动连接、使用的带宽等...
对 suid 二进制文件、世界可写文件和类似内容进行 cron 扫描,然后将它们邮寄给您。
对于您设置并邮寄给您的任何内容,您应该随着时间的推移建立一个例外列表。(忽略文件系统更改的文件夹,允许 777 个文件,允许 suid 二进制文件)。重要的是,您只收到不应该发生的事情的通知。如果您每天都收到一封带有琐碎内容的邮件,您将开始忽略它们,并且它们将变得毫无意义。
拥有良好的分层冗余备份策略。并且不要仅仅假设制作所有内容的图像或副本都有效。例如,如果在备份期间 MySQL 正在写入表,则在恢复备份时您的 MySQL 二进制文件可能会损坏。因此,您将需要一个 cron,它 mysqldump 将您的数据库放在常规图像或夜间 tarball 或版本控制或您设置的任何其他内容之上。考虑您的备份策略。我的意思是,真的考虑一下。
不要依赖这样的列表来保证安全:) 说真的!你会在互联网上找到很多这些,去阅读它们,研究每一个建议,并使用常识和经验来下定决心。最后,经验和常识是唯一能拯救你的东西。不是列表,也不是工具。一定要阅读,但不要在没有理解的情况下复制。