Preocupações sobre a configuração do log do Apache per-Vhost

3

Sou desenvolvedor sênior e administrador de sistemas na minha empresa, então estou tentando lidar com as necessidades de ambas as atividades.

Eu configurei nossa caixa apache, que lida com 30-50 domínios atm (e esperançosamente crescerá mais) e hospeda sites de produção e desenvolvimento, com essa estrutura de diretórios:

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

Cada domain.ext Vhost é executado com seu usuário e grupo dedicados via mpm-itk, sendo umask 027, e os logs são armazenados através de um comando sudo, como este:

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

Agora, eu li muito sobre não deixar os logs saírem de um diretório muito restrito, mas os desenvolvedores frequentemente precisam dar uma olhada rápida em um registro de erro de subdomínio específico, e eu realmente não quero dar a eles direitos de administrador para procurar em / var / logs. Disponibilizá-los na conta ftp é muito útil durante os estágios de desenvolvimento.

Você acha que essa configuração é viável e segura o suficiente? Para mim, aparentemente ela está boa, mas estou preocupado com 3 problemas de segurança:

-é o sudo pipe suficiente para lidar com exploits do symlink? Alguma captação que eu estou perdendo?

-log dos: os logs estão na mesma partição de todos os domínios. Tem centenas de shows, mas, ainda assim, se um deles tiver espaço em disco, tudo vai acabar. Qualquer solução alternativa? Um logrotate curto e temporário será suficiente?

- limites de descritores de arquivo: AFAIK o limite padrão para o Apache no Ubuntu Server é atualmente 8192, que deve ser suficiente para lidar com 2 arquivos de log por subdomínio. É isso? Estou faltando alguma coisa?

Espero ler alguns pensamentos sobre o assunto!

    
por Stefano Torresi 15.06.2012 / 21:47

1 resposta

0

A resolução potencial para isso é criar uma pasta separada em / var / log / vhostlogs, criar uma pasta para cada pasta vhost e chown-to-root e outros e grupos sem acesso e usar setacl na pasta para que os arquivos criados dentro dela ter permissão de leitura para o usuário associado a esse vhost toda vez que forem criados. Em seguida, você pode ter certeza de que cada arquivo de log atual é vinculado a domínios / domain.ext / logs / current.log.

Desta forma, independentemente de o chroot estar ativado ou desativado, os usuários não devem ler os arquivos de log, e dentro do chroot eles devem poder ler o log atual e não abusar dele, porque o apache está escrevendo em permissões de root / log com segurança (sem acesso de gravação a ninguém, exceto root).

    
por 16.06.2012 / 14:32