Вопрос или проблема
Я нашел где-то в интернете, что вы можете настроить ротацию логов для audit_log
на httpserver, поэтому в моем modsecurity.conf
я изменил конфигурацию логгирования с:
SecAuditLog logs/audit_log
на
SecAuditLog "|/usr/IBM/HTTPServer/bin/rotatelogs -l /usr/IBM/HTTPServer/logs/audit_log.%Y-%m-%d-%H_%M_%S 86400
когда эта конфигурация применяется, файл не создается, и логгирование не происходит в файл, который я хочу, и он даже не записывает ничего.
Когда я закомментирую новую конфигурацию и верну обратно стандартную с logs/audit_log
, он снова пишет в этот файл. Я пытаюсь найти способ ротации этого лога, так как он может вырасти до 4 ГБ за пару месяцев, что слишком много. Кто-нибудь нашел способ сделать это?
Версия сервера: IBM_HTTP_Server/8.5.5.22 (Unix)
Ответ или решение
Чтобы организовать ротацию файлов журнала audit_log
для Apache HTTP Server с использованием модуля ModSecurity, необходимо учитывать несколько ключевых аспектов при настройке. Давайте разберем, как правильно реализовать эту настройку, учитывая вашу текущую конфигурацию и проблемы, с которыми вы столкнулись.
1. Изменение конфигурации журнала
Вы уже изменили конфигурацию modsecurity.conf
, указав новый путь для логирования:
SecAuditLog "|/usr/IBM/HTTPServer/bin/rotatelogs -l /usr/IBM/HTTPServer/logs/audit_log.%Y-%m-%d-%H_%M_%S 86400"
2. Проверка наличия программы rotatelogs
Первое, что необходимо сделать, это убедиться, что программа rotatelogs
действительно доступна по указанному пути:
ls -l /usr/IBM/HTTPServer/bin/rotatelogs
Если файла нет, это может быть причиной, по которой журнал не создается.
3. Параметры rotatelogs
Параметр 86400
в вашем вызове указывает на период ротации в секундах (24 часа). Убедитесь, что указанный путь к файлам и формат правильно настроены. Попробуйте использовать более простой формат для отладки на первом этапе:
SecAuditLog "|/usr/IBM/HTTPServer/bin/rotatelogs -l /usr/IBM/HTTPServer/logs/audit_log.%Y-%m-%d.log 86400"
Этот формат может помочь избежать возможных ошибок с символами и преобразованием времени.
4. Проверка прав доступа
Также важно убедиться, что сервер Apache имеет права на запись в папку /usr/IBM/HTTPServer/logs/
:
ls -ld /usr/IBM/HTTPServer/logs
Проверьте владельца и права доступа. Если необходимо, измените их:
sudo chown -R <ваш_пользователь>:<ваша_группа> /usr/IBM/HTTPServer/logs
sudo chmod -R 755 /usr/IBM/HTTPServer/logs
5. Логи сервера
С учетом того что вы не видите записей в журнале, проверьте логи самого сервера (обычно находятся в папке logs вашего сервера) на наличие ошибок, связанных с конфигурацией:
cat /usr/IBM/HTTPServer/logs/error_log
6. Перезапуск сервера
После внесения всех изменений, не забудьте перезапустить сервер, чтобы они вступили в силу:
sudo systemctl restart ibm-http-server
7. Дополнительные проверки
- Убедитесь, что ваш сервер может выполнять внешние команды через пайп. Это важно для корректной работы с
rotatelogs
. - Проверьте, нет ли синтаксических ошибок в конфигурационных файлах. Используйте команду для проверки:
/usr/IBM/HTTPServer/bin/apachectl -t
Заключение
После выполнения всех вышеперечисленных шагов, вы должны увидеть, что новая конфигурация работает корректно, а файлы журналов ротации создаются согласно установленному расписанию. В случае, если проблема не решится, возможно, стоит рассмотреть альтернативные методы ротации логов, такие как использование утилит, таких как logrotate, независимо от встроенных возможностей rotatelogs
.
Эти шаги помогут вам оптимизировать хранение логов и избежать проблем с переполнением дискового пространства.