Apache cannot access mod_security log

I have an Apache2 server that cannot access the mod-security log:

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

I am a bit puzzled, because everyone (owner, group, others) have rights to open the log file.

edit:

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

This gets stranger...

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
2
задан 22 October 2017 в 21:53
1 ответ

Вы не могли прикоснуться к 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: обработайте ваши файлы журналов (это действительно плохая идея, но она указана здесь как способ продемонстрировать, что это основная проблема с правами доступа к файлам).
1
ответ дан 3 December 2019 в 12:34

Теги

Похожие вопросы