Willem,
I may have figured this out. Let's take a look at the following log, and the processes it goes through:
Code: Select all
<155>Mar 28 13:23:21 slot1/cpf_f5_1_vir_pr err dcc[9206]: 01310033:3: [SECEV] Request blocked, violations: Attack signature detected. HTTP protocol compliance sub violations: N/A. Evasion techniques sub violations: N/A. Web services security sub violations: N/A. Virus name: N/A. Support id: 8375986001652311748, source ip: 40.70.0.8, xff ip: 40.70.0.8, source port: 49949, destination ip: 40.70.1.138, destination port: 80, route_domain: 0, HTTP classifier: /Common/F5_External_1_RAMP_Policy, scheme HTTP, geographic location: , request: www.digipolis.be\r\nUser-Agent: libwww-perl/6.04\r\n>, username: , session_id:
Once grokked by your first filter, it turns into the following:
Code: Select all
{
"loglevel": [
[
"err"
]
],
"SYSLOGPROG": [
[
"dcc[9206]"
]
],
"program": [
[
"dcc"
]
],
"pid": [
[
"9206"
]
],
"info": [
[
"01310033:3: [SECEV] Request blocked, violations: Attack signature detected. HTTP protocol compliance sub violations: N/A. Evasion techniques sub violations: N/A. Web services security sub violations: N/A. Virus name: N/A. Support id: 8375986001652311748, source ip: 40.70.0.8, xff ip: 40.70.0.8, source port: 49949, destination ip: 40.70.1.138, destination port: 80, route_domain: 0, HTTP classifier: /Common/F5_External_1_RAMP_Policy, scheme HTTP, geographic location: , request: www.digipolis.be\\r\\nUser-Agent: libwww-perl/6.04\\r\\n>, username: , session_id:"
]
]
}
After this, we are running the 'info' field through your second filter, which is defined as follows:
Code: Select all
%{GREEDYDATA:info}, source ip: %{IP:sourceip}, xff ip: %{IP:xffip}, source port: %{NUMBER:sourceport}, destination ip: %{IP:destinationip}, destination port: %{NUMBER:destinationport}, route_domain: %{NUMBER:routedomain}, HTTP classifier: %{GREEDYDATA:httpclassifier}, geographic location: , request: %{GREEDYDATA:request}, username: %{GREEDYDATA:username}, session_id: %{GREEDYDATA:sessionid}
Let's compare the very end of your log with the end of your filter.
Log:
Filter:
Code: Select all
%{GREEDYDATA:username}, session_id: %{GREEDYDATA:sessionid}
Do you see what I'm seeing?
It looks like there is an extra space after session ID in your filter. This means a literal 'space' must be observed or the filter will not match - there is no such space in your log. Removing the space, your filter looks like this:
Code: Select all
%{GREEDYDATA:info}, source ip: %{IP:sourceip}, xff ip: %{IP:xffip}, source port: %{NUMBER:sourceport}, destination ip: %{IP:destinationip}, destination port: %{NUMBER:destinationport}, route_domain: %{NUMBER:routedomain}, HTTP classifier: %{GREEDYDATA:httpclassifier}, geographic location: , request: %{GREEDYDATA:request}, username: %{GREEDYDATA:username}, session_id:%{GREEDYDATA:sessionid}
Give that a try please - let me know if it works for you. Thanks!