Всем привет.
Появилась необходимость настроить HIDS, остановился на OSSEC. Слышал много хороших отзывов.
Так вот, задача такова - нужно мониторить логи php-приложения, которое пишет их приблизительно так:
2013-07-22T08:21:07+00:00 DEBUG (7): Exception message: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))
По этому мануалу: http://www.ossec.net/doc/manual/rules-decoders/create-custom.html создаю local_decoder.xml:
<decoder name="php-app">
<prematch>^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d\p\d\d:\d\d \w+ \(\d+\): Exception message:\.*</prematch>
</decoder>
И проверяю через ossec-logtest:
# /usr/local/ossec/bin/ossec-logtest
2013/07/23 13:19:51 ossec-testrule: INFO: Reading local decoder file.
2013/07/23 13:19:51 ossec-testrule: INFO: Started (pid: 24277).
ossec-testrule: Type one log per line.
2013-07-22T08:21:07+00:00 DEBUG (7): Exception message:
**Phase 1: Completed pre-decoding.
full event: '2013-07-22T08:21:07+00:00 DEBUG (7): Exception message:'
hostname: 'DEBUG'
program_name: '(7)'
log: 'Exception message:'
**Phase 2: Completed decoding.
No decoder matched.
В то же время с этим же регекспом ossec-regex реагирует нормально:
# /usr/local/ossec/bin/ossec-regex '^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d\p\d\d:\d\d \w+ \(\d+\): Exception message:\.*'
2013-07-22T08:21:07+00:00 DEBUG (7): Exception message: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))
+OSRegex_Execute: 2013-07-22T08:21:07+00:00 DEBUG (7): Exception message: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))
+OS_Regex : 2013-07-22T08:21:07+00:00 DEBUG (7): Exception message: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))
что я пропускаю? почему мой кастомный декодер не ловит сообщение, которое подходит под регексп? просветите, товарищи. самому мне не найти ответ в этих дебрях регекспов и xml-ей.
Да, local_decoder точно читается т.к если сделать в нем ошибку, ossec-logtest не работает.