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

Apache не может получить доступ к журналу mod_security

У меня есть сервер Apache2, который не может получить доступ к журналу безопасности мода:

prim@x.x.x.x:~$ apachectl -V
AH00526: Syntax error on line 196 of /etc/modsecurity/modsecurity.conf:
ModSecurity: Failed to open the audit log file: /var/log/apache2/modsec_audit.log
Action '-V' failed.
The Apache error log may have more information.
prim@x.x.x.x:~$ sudo ls -la /var/log/apache2/modsec_audit.log
-rw-rwxrwx 1 root www-data 101792 Oct 22 16:37 /var/log/apache2/modsec_audit.log

Я немного озадачен, потому что все (владелец, группа, другие) имеют право открывать файл журнала.

редактировать:

prim@x.x.x.:/var/log/unattended-upgrades$ sudo -u www-data touch /var/log/apache2/modsec_audit.log
touch: cannot touch '/var/log/apache2/modsec_audit.log': Permission denied

Это становится еще более странным ...

edit2:

prim@x.x.x.x:/var/log/unattended-upgrades$ sudo ls -la /var/log/apache2/
total 1015752
drw-r--r--  2 root adm          12288 Oct 22 15:55 .

edit3:

ls -la /var/log|grep apache
drw-r--r--  2 root     adm       12288 Oct 22 15:55 apache2

Вы не могли прикоснуться к modsec_audit.log, т.е.

sudo -u www-data touch /var/log/apache2/modsec_audit.log

потому что каталог журнала принадлежит root: adm. www-data не является корневым и, скорее всего, принадлежит группе adm. Группа и другие могут читать только в вашем каталоге журналов. Только root: adm действительно может писать.

Я столкнулся с той же проблемой в CentOS 7, где основной процесс httpd запускается как root, а затем порождает ряд дочерних процессов, которые работают как apache: apache. В Debian / Ubuntu он должен быть таким же, за исключением разницы между apache и www-данными.

Здесь, в CentOS 7, я могу запускать apachectl, httpd и т. Д. Только как root. В противном случае возникает та же «синтаксическая ошибка». Также это происходит, только если установлен mod_security.

В основном это apachectl / httpd / etc. вызов mod_security как непривилегированного пользователя для проверки его конфигурации на наличие синтаксических ошибок, но он, mod_security, по-видимому, серьезно относится к безопасности :) и не может открыть файлы журнала от имени вызывающего пользователя, у которого нет разрешения на это.

Так что просто беги

sudo apachectl -V

В качестве альтернативы вы можете

  • добавить первичного пользователя в группу adm (при условии, что файлы журнала принадлежат root: adm, а группе разрешено читать и / или писать)
  • chown root: обработайте ваши файлы журналов (это действительно плохая идея, но она указана здесь как способ продемонстрировать, что это основная проблема с правами доступа к файлам).