让 Apache 将请求的副本发送给脚本

让 Apache 将请求的副本发送给脚本

假设我们有一个庞大的客户端列表(约 30 个),所有客户端都在不同的用户(和其他安全设置)下在同一台服务器上运行。

我需要编写一个“间谍/日志记录”脚本,它能够处理所有 HTTP 流量而无需实际修改它或阻碍其执行。

通常,我们的设置如下:

Web Browser <--> Apache <--> PHP/FCGI

我需要如下设置:

Web Browser ---> Apache ---> PHP/FCGI
                      '----> PHP/CLI (or any other script, module...)

我需要进行这样的设置,这样我就不必更改每个客户端的代码(并且也不必维护它),所以我只需要自己管理一个脚本。

实现此目的的一种方法是,以某种方式让 pcap 守护进程在每次收到 HTTP 请求时触发我的脚本,但我想一定有人有更好的方法来做到这一点?

答案1

我可以提供以下变体:

  • 切换到纯 CGI 而不是 FCGI,并编写脚本,该脚本将分叉您的脚本,然后将控制权交给 php-cgi。要使 php 文件可执行而不添加 shebang,请使用binfmt_misc这将显著降低性能,但可以用于测试。
  • 使用一些反向代理(如nginx) 在 Apache 前面有一些棘手的设置。
  • 稍微修补一下 php-fcgi,这样它就会在每次请求时分叉你的脚本。

答案2

Apache LogForensic 似乎可以实现我的愿望。我还没有尝试过,但目前看起来还不错……

http://httpd.apache.org/docs/2.0/mod/mod_log_forensic.html

下一步是想办法让 LogForensic 忽略我的请求,以避免无限循环。为此,我可以通过 CLI 运行我的 IDS 系统(基于 PHP)。

答案3

处理所有 HTTP 流量

有什么原因导致您无法使用 Web 服务器内置的现有日志记录?您是否查看过mod_security

您必须在 Web 服务器上而不是反向代理上执行此操作的原因是什么?

不会妨碍其执行

那么嗅探流量是唯一的方法。

通常我们的设置如下

因此,您只提供通过 PHP 生成的内容。没有静态 CSS、HTML、javascript、图像……或者您的意思是您只想监控 PHP 生成的流量?在这种情况下,您可以在 Apache 中轻松添加 auto_prepend 脚本,并且可以通过将其设置为进行异步调用来减轻处理负担。但仍会对性能产生一些影响。

相关内容