1

我有一个 Apache 模块,它充当允许请求通过或不通过的安全过滤器。这是一个定制的模块,我不想使用任何现有的模块。

我实际上有两个问题:

  1. 该模块有自己的日志文件。我认为最好的位置应该在/var/log/apache2/但由于 Apache 进程在 www-data 用户上运行,它无法在该路径上创建文件。我想为日志文件找到一个解决方案,这种解决方案对典型的 Web 服务器来说没有太大的侵入性(就安全性而言)。哪里是最好的地方,应该设置什么样的安全属性?

  2. 该模块使用管道与另一个进程通信。我只想在需要时从 Apache 模块生成这个进程。我应该在哪里找到这个二进制文件,我应该如何将权限设置得尽可能少?

谢谢,塞尚。

4

1 回答 1

1

Apache 首先在超级用户下启动并执行模块初始化(调用module_struct::register_hooks函数)。在那里,您可以创建日志文件并将chown它们www-data或保持文件描述符打开,以便以后在forked 和setuided 工作进程中使用它。

(如果您需要替代方案,我认为也可以登录syslog并配置它以将您的日志消息路由到您的日志文件)。

在工作进程下,您已经以www-data用户身份运行,因此您无法进一步保护执行。例如,AFAIK,您不能setuid对另一个用户或chroot保护文件系统。

提高安全性的方法是使用系统防火墙。例如,在 AppArmor 下,您可以告诉操作系统您的 Apache 模块可以执行哪些二进制文件,阻止它执行任何不需要的二进制文件。您可以限制该二进制文件的文件系统访问,防止它访问www-data不属于它的文件。

于 2014-08-07T07:48:02.077 回答