Hi,
Based on the three logs you shared, I created a custom Sophos decoder and some basic rules to trigger alerts on the Wazuh Dashboard.
I used a sibling decoder approach so each decoder block extracts values from the log separately.
You can try the custom decoder below using the sample logs you shared:
<decoder name="sophos-firewall">
<prematch>device_name="\S*" timestamp="\S*" device_model="XGS2300"</prematch>
</decoder>
<decoder name="sophos-firewall">
<parent>sophos-firewall</parent>
<regex type="osregex">device_name="(\S*)" timestamp="(\S*)" device_model="(\S*)" device_serial_id="(\S*)" log_id="(\d*)" log_type="(\.*)" log_component="(\.*)" log_subtype="(\S*)" log_version=(\d*) severity="(\w*)"</regex>
<order>device_name, event_timestamp, device_model, device_serial_id, log_id, log_type, log_component, log_subtype, log_version, severity</order>
</decoder>
<decoder name="sophos-firewall">
<parent>sophos-firewall</parent>
<regex type="osregex">reported_id="(\S*)"</regex>
<order>reported_id</order>
</decoder>
<decoder name="sophos-firewall">
<parent>sophos-firewall</parent>
<regex type="osregex">ssid="(\S*)"</regex>
<order>ssid</order>
</decoder>
<decoder name="sophos-firewall">
<parent>sophos-firewall</parent>
<regex type="osregex">con_count=(\d*)</regex>
<order>con_count</order>
</decoder>
<decoder name="sophos-firewall">
<parent>sophos-firewall</parent>
<regex type="osregex">fw_rule_id="(\S*)"</regex>
<order>fw_rule_id</order>
</decoder>
<decoder name="sophos-firewall">
<parent>sophos-firewall</parent>
<regex type="osregex">fw_rule_name="(\S*)"</regex>
<order>fw_rule_name</order>
</decoder>
<decoder name="sophos-firewall">
<parent>sophos-firewall</parent>
<regex type="osregex">fw_rule_section="(\.*)"\s</regex>
<order>fw_rule_section</order>
</decoder>
<decoder name="sophos-firewall">
<parent>sophos-firewall</parent>
<regex type="osregex">nat_rule_id="(\d*)"</regex>
<order>nat_rule_id</order>
</decoder>
<decoder name="sophos-firewall">
<parent>sophos-firewall</parent>
<regex type="osregex">nat_rule_id="(\d*)"</regex>
<order>nat_rule_id</order>
</decoder>
<decoder name="sophos-firewall">
<parent>sophos-firewall</parent>
<regex type="osregex">nat_rule_name="(\.*)"</regex>
<order>nat_rule_name</order>
</decoder>
<decoder name="sophos-firewall">
<parent>sophos-firewall</parent>
<regex type="osregex">fw_rule_type="(\S*)"</regex>
<order>fw_rule_type</order>
</decoder>
<decoder name="sophos-firewall">
<parent>sophos-firewall</parent>
<regex type="osregex">fw_rule_type="(\S*)"</regex>
<order>fw_rule_type</order>
</decoder>
Also, you can try the basic rules below to trigger alerts:
<group name="sophos,wireless,">
<rule id="110001" level="0">
<decoded_as>sophos-firewall</decoded_as>
<description>Sophos Firewall events grouped</description>
</rule>
<rule id="110002" level="5">
<if_sid>110001</if_sid>
<field name="log_type">Wireless Protection</field>
<field name="ssid">EXECUTIVE</field>
<description>Sophos Wireless: Activity on SSID EXECUTIVE (reported_id=$(reported_id), con_count=$(con_count))</description>
<group>wireless,sophos,ssid_monitoring</group>
</rule>
<rule id="110003" level="8">
<if_sid>110001</if_sid>
<field name="log_type">Firewall</field>
<field name="log_subtype">Denied</field>
<field name="log_component">Invalid Traffic</field>
<description>Sophos Firewall: Denied invalid traffic</description>
<group>network,firewall,deny,sophos</group>
</rule>
<rule id="110004" level="3">
<if_sid>110001</if_sid>
<field name="log_type">Firewall</field>
<field name="log_subtype">Allowed</field>
<field name="log_component">Firewall Rule</field>
<description>Sophos Firewall: Allowed traffic by firewall rule $(fw_rule_name) (ID $(fw_rule_id))</description>
<group>network,firewall,allow,sophos</group>
</rule>
</group>
In the decoder above, I created a full decoder to extract values from the first log. For the second and third events you shared, it will decode only some fields. To decode the remaining fields, you can add additional sibling decoder blocks in the same way.
You can also create more custom rules based on your requirement.
You can refer to the following documentation: