关注Apache每个虚拟机日志logging设置

我是我公司的高级开发人员和系统pipe理员,所以我正在努力处理这两个活动的需求。

我已经build立了我们的apache框,它处理30-50个域atm(并希望会变大),并承载生产和开发的网站,这个目录结构:

domains/ domains/domain.ext/ #FTPS chroot for user domain.ext domains/domain.ext/public #the DocumentRoot of http://domain.ext domains/domain.ext/logs domains/domain.ext/subdomains/sub.domain.ext domains/domain.ext/subdomains/sub.domain.ext/public #DocumentRoot of http://sub.domain.ext 

每个domain.ext Vhost通过mpm-itk运行,他的专用用户和组,umask是027,日志通过pipe道sudo命令存储,如下所示:

 ErrorLog "| /usr/bin/sudo -u nobody -g domain.ext tee -a domains/domain.ext/logs/sub.domain.ext_error.log" CustomLog "| /usr/bin/sudo -u nobody -g domain.ext tee -a domains/domain.ext/logs/sub.domain.ext_access.log" combined 

现在,我已经读了很多关于不让日志从一个非常有限的目录中出来,但是开发人员经常需要快速查看一个特定的子域错误日志,而且我不想让他们具有pipe理员权限看看/ var / logs。 把它们提供到ftp帐户在开发阶段是非常方便的。

你认为这个设置是否可行和安全? 对我来说显然看起来不错,但我关心的3个安全问题:

– sudopipe道是否足以处理符号链接漏洞? 我失踪的任何捕获?

-log dos:logs位于所有域的同一个分区中。 有数百个演出,但是如果有磁盘空间的话,一切都会中断。 任何解决方法? 短时间的logrotate是否足够?

文件描述符限制:AFAIK Ubuntu服务器上的Apache默认限制是8192,这应该足够处理每个子域的2个日志文件。 是吗? 我错过了什么?

我希望看到这个问题的一些想法!

对此的潜在解决scheme是在/ var / log / vhostlogs上创build一个单独的文件夹,为每个vhost文件夹创build文件夹,并将其命名为root和其他文件夹,并且无法访问并在文件夹上使用setacl,以便在内部创build的文件具有读取权限到每次创build时都与该虚拟主机关联的用户。 然后你可以确保每个当前的日志文件被硬链接到domains / domain.ext / logs / current.log。

这种方式无论chroot是打开还是closures,用户不应该读取彼此的日志文件,以及在chroot里面,他们应该能够读取当前日志并且不能滥用它,因为apache正在以root身份写入权限到/ var / log safetely (没有写入权限,除了root用户)。