Skip to main content

OXL Firewall Testing Framework

Project description

Firewall Testing-Framework

A framework for testing and troubleshooting firewall Layer 3-4 rulesets.

WARNING: This project is still in the conception-phase.


Goal / Why?

When having to administer IT infrastructure and networks - we will often have multiple firewalls in place.

Maintaining these might be time-consuming. You might also face some challenges:

  • Troubleshooting & Analysis:

    Even for senior network engineers it can be a challenge to find the source of an unexpected block/accept in large rulesets that are distributed across multiple systems and firewall vendors.

    Infrastructure-as-Code does help to keep the rulesets in a consistent state - but it does not solve the issue of having to manually analyze/troubleshoot existing rulesets.

    This project wants to provide one interface for simulating traffic over multiple firewall systems.

  • Automated Regression-Tests:

    Why would you want to do ruleset-regression-tests?

    • If you utilize Infrastructure-as-Code and change-reviews for updating your ruleset you might want to
    • You may want/need to periodically verify that the currently active rulesets actually allow/deny the traffic you expect This can be a tedious task - you might overlook some edge-case.
    • Especially when a ruleset is administered by teams of engineers over a long time period - it can be a challenge to:
      • detect configuration errors/mistakes before they can be exploited
      • make sure the design-choices for the ruleset are adhered to

    How do regression-tests work?

    • You define test-cases that simulate traffic over one or multiple firewalls
    • You assert that the traffic was allowed/denied/rejected
    • You might even want to assert that the traffic took a specific outbound route or was NATed to a specific IP

    This way you can continuously extend these test-cases and easily verify that the currently active rulesets comply with them.


Idea

Take a look at this topology:

The flow is planned to be:

  1. Either:
  • manually pull the current config from the existing firewalls
  • or utilize existing pull-plugins to do so (p.e. via API)
  1. The vendor-specific configuration gets parsed by translation-plugins which output a standardized firewall config-schema.

  2. The user provides a high-level topology-config

  3. If automated tests should be run: The user needs to provide a test-traffic config

Else the user has the option to enter an interactive shell where traffic can be sent manually

  1. The firewall/network simulator
  • parses the provided config
  • generates the network-topology
  • finds where the packet originates from (or notifies the user if more information is required)
  • finds the route the packet should take
  • tests the traffic against the rulesets of firewalls that are hops of that route

Thanks already go to @MikPisula, the creator of the MikPisula/packet-simulator for creating a simulator for netfilter (IPTables/NFTables) firewalls.

Also thanks to the go-ftw (Web Application Firewall Testing Framework) project that inspired us to support regression-tests.


Principles

  • Strict separation of vendor-specific plugins from the core traffic-simulator.

    Plugins CAN be used to pull the current configuration (rulesets, interfaces, routes) from a firewall system, but admins should always be able to manually provide this information.

    Some might not want to trust some 'nice-to-have' tool with access to their firewalls.

  • The user should be able to choose the output verbosity.

    We want to provide full transparency (show every rule the traffic interacts with) but if not required (p.e in automated/CI-mode) it should be brief.


Contribute

Contributions are welcome (:

What would be helpful for now:

  • Feel free to discuss the ideas and roadmap for this project with us: GitHub discussions or contact us directly

  • Open issues if you think you have found a problem with the existing code (be aware that it might not yet be in a usable state)

  • Please do not post any generic AI-slop.. thanks.

  • Be friendly and respectful


Roadmap

2025

Core Simulator:

  • Generating Layer 3 Topology
  • Generating multiple Firewalls
  • Detect Firewall-chaining (one firewall routes to another one - p.e. over VPN)
  • Run modes:
    • Basic interactive shell
    • Automated/CI mode
  • Defining basic config-schema (Topology, Rulesets, Tests)
  • Run multiple Test-cases from config (CLI pytest-like?)
  • Option to Output results to JSON
  • Security Features to protect users:
    • Warn before executing non-verified (code review) plugin

Development:

  • Create Plugin Templates
  • Create Guide on how to develop Plugins

Firewall Support:

  • Netfilter (NFTables/IPTables)
  • OPNsense (Plugin that parses Config-Backup-File)

What will be out-of-scope for now

Why? Because we initially need to focus on building the core simulator!

  • Transparent firewalls (layer 2 interception)
  • Application-Level Protocols
  • Connection-Tracking helpers (rules that use these CT-states)
  • Non-static routing (dynamic routing, rule-based routing via fwmark and routing-table lookup)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

firewall_testing_framework-0.0.1.tar.gz (68.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

firewall_testing_framework-0.0.1-py3-none-any.whl (70.5 kB view details)

Uploaded Python 3

File details

Details for the file firewall_testing_framework-0.0.1.tar.gz.

File metadata

File hashes

Hashes for firewall_testing_framework-0.0.1.tar.gz
Algorithm Hash digest
SHA256 7a91abe01741b81240a11e469982f68190ab543d18e76e3fe2f1d3e368060b47
MD5 e5c5311aa50eb51e16a31a02cb571acb
BLAKE2b-256 4e85f07293bdf55fda9c13081206ba59e1700752cfc0d295eef9f610d5e8b493

See more details on using hashes here.

File details

Details for the file firewall_testing_framework-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for firewall_testing_framework-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 092d7342931544aa0697a02f29585e75a229ceb3dd06b185439099ff49c3d5ac
MD5 0239c0b4059e86a56c3176e001520609
BLAKE2b-256 78e9767da5c6712e400a7bdbc22c5952dbc6d4f9a9cdbd90747d8b81635db692

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page