<div dir="ltr">Hi,<div><br></div><div>I am using suricata(2.1beta4) to develop an IDP/IPS solution based on insights derived from a user's browsing activity.</div><div><br></div><div>The key metrics I am looking for are:</div><div>1. top websites being visited</div><div>2. amount of time spend on each website**</div><div><br></div><div>The second part is the one thats actually causing me problems, "The amount of time spend on a website". </div><div>I want to derive this as accurately as possible from the "flow" & "http" events suricata logs into eve.json and by fine tuning suricata settings.</div><div> </div><div><div>[My Setup]<br></div><div>local network user (browsing)---> suricata ----> router -----> internet </div><div><div><br></div><div>An example scenario: If a user with source_ip 192.168.0.1 visits <a href="http://www.facebook.com">www.facebook.com</a> and spends 10 minutes browsing through facebook.</div><div>I want to quantitatively capture this information under a single unique "session".</div></div><div><br></div><div>Currently I parse eve.json and form a packet similar to the following (some additional fields are not shown for simplicity):</div><div><br></div><div>{"flow_id": '140664679399216', 'hostname': '<a href="http://www.facebook.com">www.facebook.com</a>', 'duration': '600', 'timestamp': 1441097587, 'state': 'established', 'tx_id': 0}</div><div><br></div><div>I depend on the "flow_id" field of eve.json logs to identity and bind "http" event_type to the correct "flow".</div></div><div><br></div><div>[Challenges]</div><div># Flow_ID - the flow_id field of eve.json is not unique enough to identity and correlate the above "session" to say "alerts" or "fileinfo".</div><div># Flow-Manager(flow_timeouts) - might force flow timeout, before the user actually terminates/closes the http session.</div><div>In other words, it is difficult to identify "flow timeouts" and actual user "termination" of http sessions.</div><div><br></div><div>[Questions]</div><div><br></div><div># Is it possible to make flow_id unique,  <br></div><div><div>The flow_id filed that I am getting is a long integer.</div><div>This will cause potential problems in the database because its likely that the same flow_id may repeat in future for a different flow event.</div></div><div><br></div><div># What is the role of suricata flow-manager in timing out TCP flows OR What is the best setting for flow-timeouts for my use case</div><div>I observed that there are three TCP states [new, established and closed]. </div><div>Hence my rudementary assumption is that to corrently derive "How much time a user spend on a website". </div><div>One might have to accumilate the time duration accross each 3 states?.</div><div><br></div><div># What is the best way to identify and correlate an "http" event to the correct "flow", when there is more than one flow per http event within a single flow_id</div><div>Currently I am simply using a combination of (flow_id + timestamp) to predict the correct "flow" for a given "http" event.</div><div>I believe there is a better way.</div><div><br></div><div># What is the purpose of the tx_id field</div><div>I have noticed the field "tx_id" with every "http" event_type. Is it something I can use as an additional identifier? </div><div><br></div><div># A similar discussion I found online:</div><div><a href="https://lists.openinfosecfoundation.org/pipermail/oisf-users/2015-March/004650.html">https://lists.openinfosecfoundation.org/pipermail/oisf-users/2015-March/004650.html</a><br></div><div><br></div><div><br></div><div>I am interested to know if anybody else is facing similar challenges, your thoughts and suggestions.</div><div><br></div><div>Thanks in advance.</div><div>- Vipul</div><div><a href="mailto:vipu.hari@gmail.com">vipu.hari@gmail.com</a></div></div>