Назад | Перейти на главную страницу

Опасения по поводу настройки ведения журнала Apache для каждого виртуального хоста

Я одновременно старший разработчик и системный администратор в своей компании, поэтому я пытаюсь удовлетворить потребности обоих видов деятельности.

Я установил наш сервер 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 запускается со своим выделенным пользователем и группой через mpm-itk, umask имеет значение 027, а журналы хранятся с помощью команды 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

Теперь я много читал о том, чтобы не выпускать журналы из очень ограниченного каталога, но разработчикам часто нужно быстро просмотреть журнал ошибок конкретного поддомена, и я действительно не хочу давать им права администратора на загляните в / var / logs. Наличие их в учетной записи ftp ДЕЙСТВИТЕЛЬНО удобно на этапах разработки.

Как вы думаете, эта установка жизнеспособна и достаточно безопасна? На мой взгляд, это выглядит хорошо, но меня беспокоят 3 проблемы безопасности:

-достаточно ли канала sudo для работы с эксплойтами символических ссылок? Какие уловы мне не хватает?

-log dos: журналы находятся в одном разделе всех доменов. есть сотни гигов, но все же, если у кого-то будет свободное место на диске, все сломается. Есть обходной путь? Достаточно ли короткого времени logrotate?

-file descriptors limits: AFAIK ограничение по умолчанию для Apache на Ubuntu Server в настоящее время составляет 8192, что должно быть достаточно, чтобы обрабатывать 2 файла журнала на поддомен. Это? Я что-то упускаю?

Надеюсь прочитать некоторые мысли по этому поводу!

Возможное решение этой проблемы - создать отдельную папку в / var / log / vhostlogs, создать папку для каждой папки vhost и связать ее с root и другими и группами, не имеющими доступа, и использовать setacl в папке, чтобы файлы, созданные внутри, имели разрешение на чтение пользователю, связанному с этим виртуальным хостом, каждый раз, когда они создаются. Затем вы можете убедиться, что каждый текущий файл журнала жестко привязан к доменам / domain.ext / logs / current.log.

Таким образом, независимо от того, включен или выключен chroot, пользователи не должны читать файлы журналов друг друга, а внутри chroot они должны иметь возможность читать текущий журнал и не иметь возможности злоупотреблять им, потому что apache безопасно записывает права root в / var / log (нет доступа на запись никому, кроме root).