Hi all,

I seem to have run into trouble using command log format handling. There's a log file that contains XML which spans multiple lines, so I wrote a Python script to flatten it so the agent process can pick up each entry and send it to the server. That didn't work, so I tried copying the log file to the server directly, but that didn't trigger an alert either.

To debug this, I've greatly simplified the configuration so its easy to try and reproduce. I can't even get it to "cat" a trivial file and kick off a sample alert.

I've set it up like so. To the ossec.conf file, I added the following block:

<localfile>
<location>/tmp/test.log</location>
<log_format>command</log_format>
<command>/bin/cat /tmp/test.log && date > /tmp/time.stamp</command>
</localfile>


Note that the /tmp/time.stamp file will have a timestamp, proving that the command was successfully executed. In the local_decoder.xml file, I added:

<decoder name="test">
<prematch>Test</prematch>
</decoder>

<decoder name="test-alert">
<parent>test</parent>
<regex>This(\.*)Test</regex>
<order>action</order>
</decoder>


  In local_rules.xml, I added:

<group name="test">
<rule id="100800" level="0">
<decoded_as>test</decoded_as>
<description>Test</description>
</rule>
<rule id="100801" level="7">
<if_sid>100800</if_sid>
<description>Test alert</description>
</rule>
</group>


  I created the log file (note that it is world-readable):

   # ls -al /tmp/test.log
   -rw-r--r-- 1 root root 92 2011-11-07 23:01 /tmp/test.log
   # cat /tmp/test.log
   This is a test.
   This is a Test.
   This is another Test.
   This is a test with a lowercase 't'.
   #


  I restarted OSSEC, and found that the command ran successfully:

   # cat /tmp/time.stamp
   Mon Nov  7 23:01:29 EST 2011
   #

... but no alert was generated. I checked to make sure that the decoder & rule was written correctly:

# /usr/local/bin/ossec-logtest
2011/11/07 23:08:34 ossec-testrule: INFO: Reading local decoder file.
2011/11/07 23:08:34 ossec-testrule: INFO: Started (pid: 25104).
ossec-testrule: Type one log per line.

This is a Test.


**Phase 1: Completed pre-decoding.
       full event: 'This is a Test.'
       hostname: 'ossec_server'
       program_name: '(null)'
       log: 'This is a Test.'

**Phase 2: Completed decoding.
       decoder: 'test'
       action: ' is a '

**Phase 3: Completed filtering (rules).
       Rule id: '100801'
       Level: '7'
       Description: 'Test alert'
**Alert to be generated.


Thus, the decoder & rule appear to be functional, the command is successfully executed by OSSEC, but yet no alert appears. It would seem that this is a bug. FYI, this is against OSSEC v2.5.1 (the changelog for v2.6 doesn't mention this issue).

Might anyone have any suggestions on how to fix this, or should I just patiently wait for the next revision?

   Thanks,
   - Joe

Reply via email to