AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 698441
Accepted
sa289
sa289
Asked: 2015-06-12 15:07:25 +0800 CST2015-06-12 15:07:25 +0800 CST 2015-06-12 15:07:25 +0800 CST

多站点托管安全 - 确保没有脚本可以作为 Apache 用户运行,但只能作为每个网站的用户运行

  • 772

在设置一个包含多个应该相互隔离的站点的托管环境时,我做了一个明显的步骤,即配置 PHP,使其以与每个网站相关联的用户而不是 Apache 用户身份运行,但有什么方法吗确保一个站点无法以 Apache 用户的身份运行以其他语言(例如 Python)编写的脚本?我见过像符号链接攻击这样聪明的攻击,它使用 .htaccess 规则和符号链接来欺骗 Apache 以明文形式提供来自其他网站的 PHP 文件(这与问题无关,只是一个例子),因为我不是很熟悉 PHP 以外的服务器端语言的设置,我不知道要检查和/或禁止什么,例如通过 Apache conf 文件以确保用其他语言编写的脚本可以'

例如,即使 PHP 设置为以网站用户身份运行,如果网站被黑客入侵,黑客是否可以创建一个 .htaccess 文件,该文件将 .abc 文件设置为作为 Perl 脚本运行,并且服务器上的配置不正确,那么那些以 Apache 用户身份运行?

解决这个问题的最佳方法是什么?

apache-2.2
  • 2 2 个回答
  • 398 Views

2 个回答

  • Voted
  1. Marki555
    2015-06-16T04:07:37+08:002015-06-16T04:07:37+08:00

    因此,您主要担心的是,一个帐户遭到入侵不会对其他帐户造成任何不利影响。

    PHP 和文件权限

    如果 PHP 被配置为每个域的不同用户运行,那么您的目录应该设置为它没有对自己域之外的任何内容的写访问权。然后使用 PHP(或通过 PHP 调用的任何其他命令)它不会对服务器的其余部分造成任何损害。

    最佳实践是让脚本归 user1 所有,但 PHP 在 user2 下运行。对于客户访问,应为 user1 配置 FTP。用户 2 应仅在真正需要的地方(缓存目录、生成缩略图、通过 PHP 上传文件)被授予对特定目录的写入权限。

    但是很多人开始安装 Wordpress 和其他 CMS,不知道该做什么并授予对所有内容的写访问权(然后编写糟糕的 CMS 插件可能会危及该域的所有 php 脚本)。即使没有 PHP 进程的写入权限,Wordpress 和其他 CMS 现在也支持安装/升级(他们只是要求 FTP 登录并自动使用它)。

    另一个最佳实践是阻止对 user2 具有写入权限的目录的直接 Web 访问。文件上传应该由您的脚本检查,并且只有在有效的情况下,才移动到可从外部访问的目录(否则有人可以上传 PHP 脚本而不是 JPG 图像,并可能欺骗您的网络服务器执行它)。

    阿帕奇

    使用 Apache 的AllowOverride None指令禁用该.htaccess文件的使用,这样攻击者就无法配置其他 CGI 脚本的运行。Apache 应该只有对所服务文件的读取权限(包含密码的 PHP 配置文件不需要 Apache 的读取权限)。禁用后,.htaccess用户无法更改 Apache 配置。

    使用Options -FollowSymLinks(或-SymLinksIfOwnerMatch)防止符号链接“攻击”。

    安装mod_security以监视可疑活动并阻止 SQL 注入等黑客攻击。

    编辑:如果.htaccess需要,您需要决定您的主机将支持哪些选项并仅启用这些选项。常用的安全选项示例包括(在 中列出AllowOverride):

    • AuthConfig - 启用基本 HTTP 身份验证
    • ErrorDocument - 定义自己的 URL 而不是默认的 404 响应(因为您只定义 URL,只能使用已经可访问的内容,所以没有风险)
    • 索引- 如果您想启用普通目录列表
    • 限制- 通过 IP 地址限制访问(通常由Deny from all指令用于拒绝对部分目录的访问)
    • RewriteEngine、RewriteOptions、RewriteBase、RewriteCond、RewriteRule - 用于 mod_rewrite
    • SymLinksIfOwnerMatch - mod_rewrite 需要(它的文档说明它需要FollowSymLinks,但它似乎也适用于这个);除了使用 mod_rewrite 之外,如果目标文件/目录与符号链接本身是同一用户的所有者,Apache 只会遵循符号链接。
    • 3
  2. Best Answer
    sa289
    2015-07-12T13:10:36+08:002015-07-12T13:10:36+08:00

    从阅读http://httpd.apache.org/docs/2.4/misc/security_tips.html看来,如果正确使用 suexec,那么作为 Apache 用户执行的 CGI 脚本不应该是一个问题,因为它们会被执行在由 suexec 指令定义的用户下。

    • 0

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve