<div dir="ltr">Hello Everyone,<div><br></div><div>I am new to suricata, so may be missing something basic in understanding how to write rules.</div><div>I am trying to enforce function code 4 (read input registers)  only between Scada and RTU while all others I want to block. The result is that I am able to either block or allow all modbus communication. </div><div><br></div><div>If I add below pass rules:</div><div><br></div><div>pass modbus 10.10.10.1 any -> 10.10.10.2 502 (msg:"Modbus";flow:established; modbus:function 4; sid:1004; rev:1;)</div><div>pass modbus 10.10.10.2 502 -> 10.10.10.1 any (msg:"Modbus";flow:established; modbus:function 4; sid:1005; rev:1;)</div><div><br></div><div>For some unclear reason, function code 3 is also allowed.</div><div>Removing these rules will block all function codes.</div><div>Attached are drop and pass rules files as well as log files and config.</div><div><br></div><div>Q1: <br></div><div><div>- What am I doing wrong ?</div><div><br class="gmail-Apple-interchange-newline"></div></div><div>Q2</div><div>- The release is still defined "dev". Is that right direction for me to use it if I want to test DNP3 and modbus ?</div><div><br></div><div>Thanks,<br>Alex </div><div><br></div></div>