快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门威斯尼斯人娱乐平台:用Apache Proxy的指令改进LAMP安全性



在本文中,Nick Maynard 描述了一种应用 Apache 的 mod_proxy 模块改进 LAMP 设置的安然性的措施。本文专门针对 Linux;然则,也可以将一些道理利用于其他操作系统。

Apache Software Foundation 的 HTTP 办事器项目(平日称为 Apache)是当今互联网上盘踞上风的 Web 办事器,它盘踞了 60% 澳门威斯尼斯人娱乐平台以上的市场份额。Apache 办事器这天渐盛行的 LAMP 软件设置设置设备摆设摆设的一部分。LAMP 是一套免费软件法度榜样,是在 Linux®、Apache、MySQL 和 PHP 等开放源码技巧之上构建的 Web 平台。在本文中,您将进修一种应用 mod_proxy 模块和多个后端办事器来改进 LAMP 安然性的措施。我将评论争论这种措施的优点和毛病,并供给一个设置设置设备摆设摆设示例。

PHP 和 Apache:安然性难题

LAMP 治理员面对的一个寻衅是,供给完备 PHP 系统的所有特点澳门威斯尼斯人娱乐平台,同时确保为系统的所有用户供给一个安然的情况。应用 PHP 的安然模式是实现这一目标的一种技巧,然则它也过度地限定了用户,而且启用了这个举措措施之后,一些 PHP 利用法度榜样就不能发挥感化。

PHP 安然问题的根源在于大年夜多半 Apache 办事器的设置设置设备摆设摆设要领。由于大年夜多半 Apache 设置设置设备摆设摆设运行在特殊的 www-data 用户 ID 下,对 Web 站点进行主机托管的所有用户在默认环境下必须确保这个用户可以读取他们的文件。是以,系统上的所有其他用户都可能造访一个用户的所有 Web 可造访文件;以是系统上蓝本与您无关的安然破绽会成为进击您的 Web 站点的冲破口。假如文件或目录必须设置为 www-data 用户可写的,那么这种环境会加倍严重。

经由过程应用 CGI 法度榜样,比如用 Perl 和 Python 等盛行说话编写的法度榜样,可以在应用 suEXEC 机制时打消这个问题的部分影响。简单地说,suEXEC 应用一个特殊的中心法度榜样以法度榜样所有者的用户 ID 履行 CGI 法度榜样。(更多细节请拜见 参考资料 中文章的链接。)这是一种异常有效的机制,已经应用了许多年了。

然则,在应用 mod_php 模块主机托管时,PHP 页面作为 Apache 主进程的一部分履行。是以,它们承袭 Apache 进程的所有凭据,而且它们在文件系统上履行的任何事情必须作为 www-data 用户履行。

在多个用户 ID 下运行 Apache

对付上面描述的问题,显着的办理规划是要求对一个用户域的所有哀求都来自一个只拥有此用户的凭据的 Apache 实例。可以将 Apache 设置设置设备摆设摆设为在启动时获取任何用户的凭据。对付给每个用户分配一个零丁的互联网可见 IP 地址/端口组合的简单设置,这种措施可以办理问题。

对付更繁杂的设置(在此中 IP 地址很宝贵),这种措施是无效的。当单一 Apache 实例可以节制一个特定的 IP 地址/端口组应时,只能应用虚拟主机,这是 Apache 系统中广泛应用的一种技巧。这就扫除了让属于多个用户的多个域应用同一个 IP 地址/端口组合的可能性。

Apache 2.0 引入了多处置惩罚模块(multiprocessing module,MPM) 的观点。在基础 Apache 2.0 包供给的 MPM 中有一个实验性的模块 perchild,它可以将一个散播器线程分配给 IP 地址/端口组合,并将哀求通报给在零丁用户的凭据下运行的子线程,从而实现多个用户 ID 下的虚拟主机。遗憾的是,perchild 仍旧是实验性的,它不必然能够发挥感化,而且在 Apache 2.2 宣布时从正式澳门威斯尼斯人娱乐平台 Apache 发行包中删除了。在此之前,因为熟识到仍旧必要一个稳定的能够发挥感化的与 perchild 相似的 MPM,Apache 社区开始研发许多 MPM 来增补这一欠缺。MetuxMPM 以及面向历程的 p澳门威斯尼斯人娱乐平台eruser 正在朝着这个偏向努力。(关于 MetuxMPM 和 peruser MPM 的更多信息,拜见 参考资料)。

一个办理规划:mod_proxy

只管还没有正式的 Apache MPM 能够直接供给多个用户 ID 下的虚拟主机,然则仍旧可以经由过程某些设置设置设备摆设摆设和治理在 Apache 系统中实现这种行径。这种措施的核心观点是应用 mod_proxy 模块,这个模块(加上其他功能)使 Apache 能够将页面哀求转发给其他办事器,并将相应通报回原本发出哀求的客户机。

清单 1. 基础哀求转发的反向代理设置设置设备摆设摆设示例:

ProxyRequests Off

ProxyPass /foo http://foo.stcore.com/bar

ProxyPassReverse /foo http://foo.stcore.com/bar

清单 1 中的代码是一个简单的示例,它将对一个主机的 /foo 层次布局下任何页面的哀求转发到 http://foo.example.com/bar 的对应页面。例如,对 /foo/index.htm 页面的哀求会转发到 http://foo.example.com/bar/index.htm。可以应用这一道理办理问题。

示例场景

我们来斟酌一个场景:Apache 治理员必须为两个零丁的客户建立两个域。一个客户是在线创业企业,很关注在线安然性。另一个是小我客户,他在站点安然性方面对照宽松,可能将不安然的代码上载到这个站点。是以,Apache 治理员必须采取步伐将这两个站点隔脱离。

是以,治理员有两个域:www.startup.tld,它属于在线创业企业(用户 ID startup);以及 www.reckless.tld,它属于小我(用户 ID nimrod)。为了办理这个问题,治理员抉择应用 mod_proxy 办理规划。治理员给每个用户一个零丁的 Apache 实例,这个实例运行在用户自己的用户 ID 下,应用私有的 IP 地址/端口组合,并应用 mo澳门威斯尼斯人娱乐平台d_proxy 办理规划经由过程一个 facade 办事器供给对这两个用户的域的造访,这个办事器作为 www-data 运行,应用一个公共的 IP 地址/端口组合。图 1 阐清楚明了全部场景。

图 1. 场景示例

保举的 Apache 版本

对付示例利用法度榜样设置设置设备摆设摆设中的每个元素,Apache 治理员应该应用 表 1 中列出的 Apache 版本。

您可能还会对下面的文章感兴趣: