如何使 Apache 管道日志记录脚本不以 root 身份运行?

如何使 Apache 管道日志记录脚本不以 root 身份运行?

我工作的组织非常注重安全。负责操作系统的系统管理员组(显然,他们拥有root权限)和维护在这些操作系统上运行的服务的系统管理员组(我就是其中之一,我们是其中之一)之间存在着分离。除非通过 sudo 限制,否则无法访问 root)。

我目前正在重新设计维护 Apache 配置的方式。新设置将在 RHEL 上运行,而旧设置将在 Solaris 上运行。

不知何故,在 Solaris 下,当使用管道日志记录时,通过管道传输日志的脚本以与 Apache 相同的用户身份运行,即 webservd。然而,在 RHEL 下,它们最终以 root 身份运行,我更希望它们以 apache 服务帐户运行(即 apache,与实际 Apahce 所在的帐户相同)服务产生)。

在管道调用中使用 sudo 的解决方案还不够;在我被允许转移过去的质量检查之前,我需要想出一种方法来让你不能通过将某些东西放入 Apache 配置文件中,使其以 root 身份运行。我怀疑解决方案涉及授予 apache 用户一些特殊权限(以便它可以绑定到端口 80/443),然后使用该权限而不是 root 来启动服务。

任何帮助将不胜感激。

附录:有人请求我展示如何调用管道日志。

这是配置文件中的相关行:

CustomLog "||/httpd/scripts/syslog.py" qradar

最终发生的情况是 /httpd/scripts/syslog.py 中的脚本最终以 root 身份运行。我们需要让这种情况不仅不会发生,而且不可能发生。

答案1

如果我理解正确的话,您只是不想以 root 身份运行 HTTP。要么不让 Apache 侦听端口 80 并使用 IPtables 将这些数据包重定向到更高的端口号;或者告诉 Linux 端口 < 1024 不安全。请参阅以下优秀答案https://unix.stackexchange.com/a/10791/105631。也在这里:https://stackoverflow.com/a/414258/3849157

定制内核并不是一个坏主意。许多人注意到 1024 限制已经过时,而且从安全角度来看,已经过时了。对类似问题提供了答案,其中对内核进行了修补,以便 PORT_SOCK 从 1024 更改为 24。https://stackoverflow.com/a/27989419/3849157

相关内容