Back to Checks
linode

Linode Cloud Firewall inbound rules are configured

networking_firewall_inbound_rules_configured
Service: networkingSeverity: low
OfficialBuilt-inVerified
Categories:internet-exposed
Resource Type:NotDefined

Linode Cloud Firewalls are checked to determine whether explicit inbound rules are configured. Defined ingress rules express the intended allow-list of sources, ports, and protocols instead of relying solely on the firewall's default policy.

Risk

Without explicit inbound rules, ingress filtering depends entirely on the default policy and no intentional allow-list is documented. This makes the firewall's behavior ambiguous and harder to audit, raising the chance of overly permissive access or gaps in the protection operators expect.

Run this check with Prowler

Run in Prowler Cloud
Run
prowler linode --checks networking_firewall_inbound_rules_configured

Recommendation

Configure explicit inbound rules to define allowed ingress sources, ports, and protocols and enforce expected security boundaries.

Remediation

Other

1Log in to the Linode Cloud Manager
2Navigate to Firewalls
3Select the associated firewall
4Click Add an Inbound Rule in the Rules tab

Check Code

from prowler.lib.check.models import Check, CheckReportLinode
from prowler.providers.linode.services.networking.networking_client import (
    networking_client,
)


class networking_firewall_inbound_rules_configured(Check):
    """Check if Linode Cloud Firewall has inbound rules configured."""

    def execute(self) -> list[CheckReportLinode]:
        """Execute the networking_firewall_inbound_rules_configured check.

        Iterates over all Cloud Firewalls and checks whether at least one
        explicit inbound rule is configured.

        Returns:
            list[CheckReportLinode]: A list of findings for each firewall.
        """
        findings = []

        for fw in networking_client.firewalls:
            report = CheckReportLinode(
                metadata=self.metadata(),
                resource=fw,
                resource_name=fw.label,
                resource_id=str(fw.id),
                region="global",
            )
            report.resource_tags = fw.tags

            if len(fw.inbound_rules) == 0:
                report.status = "FAIL"
                report.status_extended = (
                    f"Firewall '{fw.label}' has no inbound rules configured."
                )
            else:
                report.status = "PASS"
                report.status_extended = f"Firewall '{fw.label}' has {len(fw.inbound_rules)} inbound rule(s) configured."

            findings.append(report)

        return findings