Meraki Security Appliance (MX)
Overview
The Meraki MX is a cloud-managed security appliance combining routing, stateful firewall, SD-WAN, and Auto VPN. This skill covers the two curated MX capabilities: reviewing and updating the Layer 3 outbound firewall ruleset, and checking site-to-site VPN status. Firewall changes are high-impact -- the update tool replaces the entire ruleset, so read before you write.
Anti-triggers
- A firewall that is not a Meraki MX — these rules are MX L3
outbound only. A Fortinet, SonicWall, or Palo Alto ruleset is not
reachable from this plugin at all;
auvik-devicescan tell you what the firewall is, not change it. - Inbound port forwarding, content filtering, or L7 rules — the
curated tools cover the L3 outbound list alone; everything else on
the MX goes through
meraki_raw_request, documented inmeraki-api-patterns. - Client VPN or a remote-access VPN user —
meraki_appliance_vpn_status_getreports site-to-site Auto VPN peers only. - A tunnel that is down because the appliance is — check the MX and
its uplinks before diagnosing VPN config; use
meraki-troubleshooting.
L3 Outbound Firewall
Rule Model
MX L3 outbound rules are an ordered list evaluated top-to-bottom; the first match wins. Each rule has:
| Field | Values | Notes |
|---|---|---|
policy |
allow / deny |
Action on match |
protocol |
tcp / udp / icmp / icmp6 / any |
Layer 4 protocol |
srcCidr |
CIDR / any / VLAN object |
Source network |
srcPort |
port / range / any |
Source port(s) |
destCidr |
CIDR / any / FQDN |
Destination network |
destPort |
port / range / any |
Destination port(s) |
comment |
free text | Human label -- always populate |
syslogEnabled |
bool | Log matches to syslog |
There is always an implicit default allow rule at the bottom of the outbound list. Rules you configure sit above it.
Get Current Rules
meraki_appliance_firewall_l3_get
Parameters:
network_id-- The MX network (required)
Example response:
{
"rules": [
{
"comment": "Block outbound SMB to internet",
"policy": "deny",
"protocol": "tcp",
"srcCidr": "any",
"srcPort": "any",
"destCidr": "any",
"destPort": "445",
"syslogEnabled": true
},
{
"comment": "Default rule",
"policy": "allow",
"protocol": "any",
"srcCidr": "any",
"srcPort": "any",
"destCidr": "any",
"destPort": "any"
}
]
}
Update Rules (High-Impact)
meraki_appliance_firewall_l3_update
Parameters:
network_id-- The MX network (required)rules-- The complete ordered ruleset (required)
CRITICAL: The update replaces the entire ruleset. It is not additive. Any existing rule you omit is deleted. Always:
meraki_appliance_firewall_l3_getto fetch the current rules- Modify the list in place (add/remove/reorder)
- Send the full modified list back
- Do not include the implicit default rule unless the Dashboard shows it as editable
A mistake here can cut off a site's internet or open it up. Present a clear before/after diff and require explicit user confirmation before writing.
Reviewing for Overly-Permissive Rules
Flag rules that weaken the security posture:
- Any/any allow above the default --
policy: allow,protocol: any,srcCidr: any,destCidr: any,destPort: any. This is effectively "allow everything" and usually redundant or dangerous. - Broad inbound-equivalent exposure -- allow rules to sensitive destination ports (
3389RDP,22SSH,445SMB,23Telnet) fromanysource. - Missing comments -- unlabeled rules are unauditable; flag them for documentation.
- Disabled logging on deny rules --
syslogEnabled: falseon security-relevant denies reduces visibility. - Shadowed rules -- a broad allow above a more specific deny means the deny never matches.
Site-to-Site VPN Status
Auto VPN Model
Meraki Auto VPN builds IPsec tunnels between MX appliances in the same org automatically. An MX participates as a hub or spoke (or is disabled). The status endpoint reports peer connectivity and export/import of subnets.
Get VPN Status
meraki_appliance_vpn_status_get
Parameters:
network_id-- The MX network (required)
Example response:
{
"networkId": "L_123456789012345678",
"networkName": "HQ",
"deviceStatus": "online",
"vpnMode": "hub",
"exportedSubnets": [
{ "subnet": "192.168.1.0/24", "name": "HQ LAN" }
],
"merakiVpnPeers": [
{ "networkId": "L_222", "networkName": "Branch-A", "reachability": "reachable" },
{ "networkId": "L_333", "networkName": "Branch-B", "reachability": "unreachable" }
],
"thirdPartyVpnPeers": []
}
Interpreting VPN Status
reachability: unreachableon a peer means the tunnel is down -- the two sites cannot route the exported subnets between them.- A
spokethat cannot reach itshubis isolated from the VPN mesh. - Check
deviceStatusfirst -- if the local MX isoffline, every tunnel will read down and the real problem is the appliance/uplink, not VPN config.
Common Workflows
Firewall Rule Audit
- Call
meraki_appliance_firewall_l3_getfor the network - Walk the ordered list; flag any/any allows, sensitive-port exposure, unlabeled and shadowed rules
- Summarize findings with the rule index, the issue, and the risk
- Recommend specific changes -- do not write unless asked and confirmed
Safe Firewall Change
meraki_appliance_firewall_l3_getand show the current rules- Propose the exact new ordered list with a before/after diff
- Get explicit user confirmation
meraki_appliance_firewall_l3_updatewith the full modified ruleset- Re-
getto verify the change landed as intended
VPN Health Check
- Call
meraki_appliance_vpn_status_getper MX network (or sweep across networks) - Confirm
deviceStatusisonlinebefore trusting peer reachability - Flag any peer with
reachability: unreachable - For hubs, confirm all expected spokes are reachable; for spokes, confirm the hub is reachable
Error Handling
400 on Firewall Update
Cause: Malformed rule (bad CIDR, invalid port range, unknown protocol) or missing required field
Solution: Validate each rule against the schema; re-get to compare against a known-good shape
Empty / 404 Firewall or VPN Response
Cause: The network has no MX appliance, or the network ID is wrong
Solution: Confirm the network's product types include appliance; verify the network ID
VPN Shows All Peers Down
Cause: The local MX is offline or its uplink failed -- not necessarily a VPN misconfiguration Solution: Check device and uplink status (see the troubleshooting skill) before diagnosing VPN config
Best Practices
- Always
getthe current firewall ruleset before anyupdate-- the update replaces everything - Present a before/after diff and require explicit confirmation for firewall changes
- Keep every rule commented so the ruleset stays auditable
- Flag any/any allows and sensitive-port exposure during reviews
- Enable syslog on security-relevant deny rules for visibility
- Verify MX
deviceStatusis online before interpreting VPN peer reachability - Treat firewall and VPN changes as change-controlled, high-impact operations
Related Skills
- api-patterns - Auth, read-only model, rate limiting
- devices - MX device status and uplinks
- troubleshooting - Uplink and connectivity live tools