<-
Apache HTTP 服务器 2.4 > Apache模块mod_privileges

Apache模块mod_privileges

描述:支持Solaris特权以及在不同用户ID下运行虚拟主机。
状态:实验性
模块标识符:privileges_module
源文件:mod_privileges.c
兼容性:在Solaris 10和OpenSolaris平台上的Apache 2.3及更高版本中可用

摘要

此模块使不同的虚拟主机能够以不同的Unix 用户 ID以及不同的 Solaris特权运行。特别是,它提供了一个解决方案,可以解决不同虚拟主机之间的特权分离问题,这首先是由废弃的perchild MPM提出的。它还提供了其他安全性增强功能。

与Perchild不同,mod_privileges 它本身不是MPM。它处理模型工作,可以运行的进程中为每个请求设置特权和用户/组。因此,它与线程化的MPM不兼容,并且将拒绝在一个MPM下运行。

mod_privileges提出了类似于suexec的安全问题。但是与suexec不同,它不仅适用于CGI程序,而且适用于整个请求处理周期,包括进程内应用程序和子进程。它非常适合在mod_php下运行PHP应用程序,该程序也与线程MPM不兼容。它也非常适合其他进程内脚本应用程序(例如mod_perlmod_pythonmod_ruby),以及以C语言作为apache模块实现的应用程序,其中特权分离是一个问题。

支持Apache!

主题

指令

错误修正清单

也可以看看

最佳

安全注意事项

mod_privileges在Web服务器进程中可能运行 不可信代码的情况下,引入了新的安全问题。这适用于不受信任的模块,以及在诸如mod_php或mod_perl之类的模块下运行的脚本。外部运行的脚本(例如,作为CGI或在mod_proxy或mod_jk之后的应用服务器中运行)不受影响。

mod_privileges的基本安全问题是:

PrivilegesMode指令允许您选择快速安全模式。您可以混合模式,对受信任的用户和经过完全审核的代码路径使用FAST模式,而在不受信任的用户可以引入代码的范围内使用SECURE模式。

在描述模式之前,我们还应该介绍目标用例:良性与恶意。在良性情况下,您希望为方便起见而将用户分开,并保护他们和服务器免受诚实错误所带来的风险,但您相信用户不会故意破坏系统安全性。在敌对情况下(例如,商业托管),您可能会让用户故意攻击系统或互相攻击。

快速模式
FAST模式下,请求将使用选定的uid / gid和特权在进程内运行,因此开销可以忽略不计。这适合于良性情况,但是对于攻击者使用进程内模块或脚本提升特权并不安全。
安全模式
处于SECURE模式下的请求将派生一个子流程,然后该子流程将放弃特权。这与使用suexec运行CGI非常相似,但是在整个请求周期中,都受益于对特权的细粒度控制。

您可以PrivilegesMode为每个虚拟主机甚至在虚拟主机内的目录上下文中选择不同的。 FAST模式适用于受信任的用户和/或没有特权加载进程内代码的情况。 SECURE模式适用于可能在进程中运行不受信任的代码的情况。但是,即使在SECURE模式下,也无法防止恶意用户在请求处理周期开始之前引入能够识别特权的代码

最佳

DTracePrivileges 指令

描述:确定是否启用dtrace所需的特权。
句法:DTracePrivileges On|Off
默认:DTracePrivileges Off
内容:服务器配置
状态:实验性
模块:mod_privileges
兼容性:在具有非线程MPM(prefork或自定义MPM)的Solaris 10和OpenSolaris上可用。

此服务器范围的指令确定Apache是​​否将以运行dtrace所需的特权运行 。请注意,DTracePrivileges On本身不会激活DTrace,但是DTracePrivileges Off将阻止它正常工作。

最佳

PrivilegesMode 指令

描述:在处理速度和效率与针对恶意特权意识代码的安全性之间进行权衡。
句法:PrivilegesMode FAST|SECURE|SELECTIVE
默认:PrivilegesMode FAST
内容:服务器配置,虚拟主机,目录
状态:实验性
模块:mod_privileges
兼容性:在具有非线程MPM(prefork或自定义MPM)的Solaris 10和OpenSolaris上可用。

该指令在性能与安全性之间权衡了恶意的,可识别特权的代码。在“ 安全”模式下,每个请求都在一个安全的子进程中运行,从而导致性能下降。在FAST模式下,如上所述,无法保护服务器免受特权升级。

此指令在<Directory> 上下文(包括等效项,例如Location / Files / If)和顶级或之间略有不同<VirtualHost>

在顶层,它设置了一个默认值,它将被虚拟主机继承。在虚拟主机中,FAST或SECURE模式对整个HTTP请求起作用,并且<Directory> 上下文中的任何设置都将被忽略。第三个伪模式SELECTIVE将FAST vs SECURE的选择推迟到<Directory>上下文中的指令中 。

<Directory>上下文中,它仅适用于为VirtualHost设置了SELECTIVE模式的情况。在这种情况下,只能设置FAST或SECURE(SELECTIVE将毫无意义)。

警告

其中被选择用于虚拟主机SELECTIVE模式,权限的激活必须推迟到以后请求处理的映射阶段已经确定什么 <Directory>应用到该请求上下文。这可能使攻击者有机会在放弃特权和设置用户标识/用户名之前,通过RewriteMap 在顶层或<VirtualHost>上下文中 运行来引入代码。
最佳

VHostCGIMode 指令

描述:确定虚拟主机是否可以运行子流程,以及可用于子流程的特权。
句法:VHostCGIMode On|Off|Secure
默认:VHostCGIMode On
内容:虚拟主机
状态:实验性
模块:mod_privileges
兼容性:在具有非线程MPM(prefork或自定义MPM)的Solaris 10和OpenSolaris上可用。

确定是否允许虚拟主机运行fork和exec,以及运行子进程所需的特权。如果将其设置为“ 关闭”,则虚拟主机将被拒绝特权,并且将无法在传统的mod_cgi或类似的外部程序(例如由progmod_ext_filterRewriteMap prog创建的程序)下运行传统的CGI程序或脚本 。请注意,这不会阻止CGI程序在替代进程和安全模型(例如mod_fcgid)下运行,这是Solaris中的推荐解决方案。

如果设置为OnSecure,则允许虚拟主机运行上述外部程序和脚本。设置VHostCGIMode 安全具有拒绝子进程特权的作用,如所述VHostSecure

最佳

VHostCGIPrivs 指令

描述:为虚拟主机创建的子进程分配任意特权。
句法:VHostCGIPrivs [+-]?privilege-name [[+-]?privilege-name] ...
默认:None
内容:虚拟主机
状态:实验性
模块:mod_privileges
兼容性:在具有非线程MPM(prefork或自定义MPM)的Solaris 10和OpenSolaris上可用,并且在mod_privileges使用 BIG_SECURITY_HOLE编译时选项进行编译时可用

VHostCGIPrivs可以用来为虚拟主机创建的子进程分配任意特权,如下所述VHostCGIMode。每个特权名称 都是Solaris特权的名称,例如file_setidsys_nfs

特权名称可以任选地通过+前缀或- ,这将分别允许或拒绝一个特权。如果既不使用+也不使用--,则所有其他分配给虚拟主机的特权都将被拒绝。您可以使用它来覆盖任何默认设置并构造您自己的特权集。

安全

该指令可以在apache子进程中打开巨大的安全漏洞,包括并以root级权限运行它们。除非您完全了解自己在做什么,否则请不要使用它!

最佳

VHostGroup 指令

描述:设置用于运行虚拟主机的组ID。
句法:VHostGroup unix-groupid
默认:Inherits the group id specified in Group
内容:虚拟主机
状态:实验性
模块:mod_privileges
兼容性:在具有非线程MPM(prefork或自定义MPM)的Solaris 10和OpenSolaris上可用。

VHostGroup指令设置Unix组,服务器将在该Unix组下处理对虚拟主机的请求。在处理请求之前设置组,然后使用Solaris Privileges重新设置组。由于该设置适用于 流程,因此它与线程MPM不兼容。

Unix组是以下之一:

组名
通过名称引用给定的组。
# 然后是组号。
用编号指组。

安全

该指令不能以root身份运行apache!但是,它带来了类似于suexec 文档中讨论的潜在安全问题。

也可以看看

最佳

VHostPrivs 指令

描述:为虚拟主机分配任意特权。
句法:VHostPrivs [+-]?privilege-name [[+-]?privilege-name] ...
默认:None
内容:虚拟主机
状态:实验性
模块:mod_privileges
兼容性:在具有非线程MPM(prefork或自定义MPM)的Solaris 10和OpenSolaris上可用,并且在mod_privileges使用 BIG_SECURITY_HOLE编译时选项进行编译时可用

VHostPrivs可用于为虚拟主机分配任意特权。每个特权名称 都是Solaris特权的名称,例如file_setidsys_nfs

特权名称可以任选地通过+前缀或- ,这将分别允许或拒绝一个特权。如果既不使用+也不使用--,则所有其他分配给虚拟主机的特权都将被拒绝。您可以使用它来覆盖任何默认设置并构造您自己的特权集。

安全

该指令可以在apache中打开巨大的安全漏洞,包括并具有root级权限运行请求。除非您完全了解自己在做什么,否则请不要使用它!

最佳

VHostSecure 指令

描述:确定服务器是否以增强的虚拟主机安全性运行。
句法:VHostSecure On|Off
默认:VHostSecure On
内容:虚拟主机
状态:实验性
模块:mod_privileges
兼容性:在具有非线程MPM(prefork或自定义MPM)的Solaris 10和OpenSolaris上可用。

确定虚拟主机是否通过删除特权来增强请求的安全性,这些特权在Web服务器中很少需要,但是默认情况下,普通Unix用户可以使用这些特权,因此模块和应用程序可能需要这些特权。建议您保留默认设置(开),除非它阻止应用程序运行。由于该设置适用于流程,因此它与线程MPM不兼容。

注意

如果VHostSecure阻止应用程序运行,则可能是一个警告标志,应检查该应用程序的安全性。

最佳

VHostUser 指令

描述:设置运行虚拟主机的用户ID。
句法:VHostUser unix-userid
默认:Inherits the userid specified in User
内容:虚拟主机
状态:实验性
模块:mod_privileges
兼容性:在具有非线程MPM(prefork或自定义MPM)的Solaris 10和OpenSolaris上可用。

VHostUser指令设置Unix用户ID,服务器将在该用户ID下处理对虚拟主机的请求。在处理请求之前设置用户ID,然后使用Solaris Privileges重置用户ID 。由于该设置适用于 流程,因此它与线程MPM不兼容。

Unix用户标识是以下之一:

用户名
通过名称引用给定的用户。
# 然后是用户号码。
通过编号指代用户。

安全

该指令不能以root身份运行apache!但是,它带来了类似于suexec 文档中讨论的潜在安全问题。

也可以看看

可用语言: zh  |  fr 

最佳

注释

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。