Hello Juli,
There are multiple syntax errors in your rules.
<if_decoder_name>sophos-fw-xgs</if_decoder_name> is not a correct syntax, it should be decoded_as
<decoded_as>sophos-fw-xgs126</decoded_as>
If_sid is used for referring to a parent rule.
If_matched_sid is used for referring to a parent rule with frequency and timeframe.
Inside <rule> rule, you cannot use same_srcip
Inside description, you can use the following syntax: $(field_name) to add a field to the description.
Also, there are some other regex errors inside the rules. I will suggest not to use tools like LLM and AI for writing rules. You can use them for getting ideas, but review them using Wazuh documents.
Check this document to review and write your rules with correct syntax and regex
Rules Syntax
There are multiple regex errors in the decoders.
This is not a correct format of regex value="([^"]+)"
I have written some decoders following this log format.
device_name="SFW" timestamp="2025-10-06T09:12:09+0000" device_model="XGS126" device_serial_id="X123008X39D6G70" log_id="010102600002" log_type="Firewall" log_component="Firewall Rule" log_subtype="Denied" log_version=1 severity="Information" fw_rule_id="12" fw_rule_name="VLAN 1 TO WAN - Level 3b" fw_rule_section="Local rule" nat_rule_id="0" fw_rule_type="BUSINESS" web_policy_id=2 ips_policy_id=5 app_filter_policy_id=10 ether_type="IPv4 (0x0800)" in_interface="Port1" src_mac="3c:1e:04:00:0e:28" src_ip="192.168.2.19" src_country="R1" dst_ip="154.160.48.9" dst_country="GHA" protocol="TCP" src_port=55580 dst_port=443 hb_status="No Heartbeat" app_resolved_by="Signature" app_is_cloud="FALSE" qualifier="New" in_display_interface="Port1" log_occurrence="1"'
You can update your custom decoders using these decoders in the custom decoder file under /var/ossec/etc/decoders/
<decoder name="sophos-fw-xgs126">
<prematch>^device_name="\w*"\stimestamp="\d+-\d+-\d+T\d+:\d+:\d++\d+"\sdevice_model="XGS126"</prematch>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>timestamp="(\d+-\d+-\d+T\d+:\d+:\d++\d+)"</regex>
<order>timestampp</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>device_model="(\S+)"</regex>
<order>device_model</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>device_serial_id="(\S+)"</regex>
<order>device_serial_id</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>log_id="(\d+)"</regex>
<order>log_id</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>log_type="(\S+)"</regex>
<order>log_type</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>log_component="(\S+)"</regex>
<order>log_component</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>log_subtype="(\S+)"</regex>
<order>log_subtype</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>status="(\S+)"</regex>
<order>status</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>severity="(\S+)"</regex>
<order>severity</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>log_version=(\d+)</regex>
<order>log_version</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>user_name="(\S+)"</regex>
<order>user_name</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>src_ip="(\d+.\d+.\d+.\d+)"</regex>
<order>srcip</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>src_country="(\.+)"</regex>
<order>src_country</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>dst_ip="(\d+.\d+.\d+.\d+)"</regex>
<order>dstip</order>
</decoder>
src_country="R1" dst_ip="154.160.48.9" dst_country="GHA" protocol="TCP" src_port=55580 dst_port=443
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>dst_country="(\.+)"</regex>
<order>dst_country</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>protocol="(\S+)"</regex>
<order>protocol</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>src_port="(\d+)"</regex>
<order>srcport</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>dst_port="(\d+)"</regex>
<order>dstport</order>
</decoder>
<decoder name="sophos-fw-xgs126">
<parent>sophos-fw-xgs126</parent>
<regex>message="(\.*)"$</regex>
<order>message</order>
</decoder>
You can add further decoders or make changes to the existing decoders following this document.
Decoders Syntax
Regular Expression Syntax
Custom decoders