Skip to main content

OXL Firewall Testing Framework

Project description

Firewall Testing-Framework

Lint Test Test Entrypoints

A framework for testing and troubleshooting firewall rulesets.

Module on pypi.org

Intro GIF

Documentation

You can find the documentation at: ftf.oxl.app


CLI Example

For more see: ftf.oxl.app - Usage - Run

ftf-cli --firewall-system 'linux_netfilter' \
        --file-interfaces 'testdata/plugin_translate_linux_interfaces.json' \
        --file-routes 'testdata/plugin_translate_linux_routes.json' \
        --file-route-rules 'testdata/plugin_translate_linux_route-rules.json' \
        --file-ruleset 'testdata/plugin_translate_netfilter_ruleset.json' \
        --src-ip 172.17.11.5 \
        --dst-ip 2.2.2.2

> 🛈 SYSTEM: Processing packet: [172.17.11.5]:50000 =tcp=> [2.2.2.2]:443
> 🛈 ROUTER: Packet inbound-interface: docker0
> 🛈 ROUTER: Packet inbound-route: 172.17.0.0/16, scope link
> 🛈 FIREWALL: Processing Chain: Table "nat" ip4 | Chain "PREROUTING" ip4 nat (1 rules)
> 🛈 FIREWALL: > Chain PREROUTING | Rule 0 | Match => jump
> 🛈 FIREWALL: > Chain PREROUTING | Sub-Chain: DOCKER (2 rules)
> 🛈 FIREWALL: > Chain DOCKER | Rule 0 | Match => return
> 🛈 ROUTER: Packet outbound-interface: wan
> 🛈 ROUTER: Packet outbound-route: 0.0.0.0/0, gw 10.255.255.254, metric 600, scope global
> 🛈 FIREWALL: Processing Chain: Table "filter" ip4 | Chain "FORWARD" ip4 filter (5 rules)
> 🛈 FIREWALL: > Chain FORWARD | Rule 0 | Match => jump
> 🛈 FIREWALL: > Chain FORWARD | Sub-Chain: DOCKER-USER (1 rules)
> 🛈 FIREWALL: > Chain DOCKER-USER | Rule 0 | Match => return
> 🛈 FIREWALL: > Chain FORWARD | Rule 1 | Match => drop
>  FIREWALL: Packet blocked by rule: Seq 1, Action: drop, Rule: #101 "TEST IP4-DADDR DROP"
>              > Matches: {'proto_l3': {'==': 'ip4'}, 'ip_daddr': {'==': ['2.2.2.2/32']}}

Roadmap

2025

Core Simulator:

  • Fundamental Features
    • Routing
    • Network Interfaces
    • Firewall Tables
    • Firewall Chains
      • Sub-Chains (Jump, Goto)
    • Firewall Rules
    • System-Specific Translate-Plugins
    • System-Specific Rule-Matching
    • Destination-NAT
    • Source-NAT
  • Run modes:
    • One-Shot CLI
    • Basic interactive shell
    • Automated/CI mode
      • Run multiple Test-cases from config
  • Defining basic config-schema (Topology, Rulesets, Tests)
  • Option to Output results to JSON
  • Supporting multiple Firewalls
    • Generating Layer 3 Topology
    • Detect Firewall-chaining (one firewall routes to another one - p.e. over VPN)

Development:

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

Firewall Support:

  • Netfilter (NFTables/IPTables)
  • OPNsense (Information from Config-Backup-File and runtime-infos like routes from API)

Contribute

See: CONTRIBUTING


Credits

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_test-0.0.6.tar.gz (46.1 kB view details)

Uploaded Source

Built Distribution

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

firewall_test-0.0.6-py3-none-any.whl (61.5 kB view details)

Uploaded Python 3

File details

Details for the file firewall_test-0.0.6.tar.gz.

File metadata

  • Download URL: firewall_test-0.0.6.tar.gz
  • Upload date:
  • Size: 46.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for firewall_test-0.0.6.tar.gz
Algorithm Hash digest
SHA256 ba9b689b984b8974a3be3867b84549f30e0937568df9b8a6ea76e58905059aa5
MD5 9e92f2b5dc21182b97d26651809eea14
BLAKE2b-256 b43b8ae57ea91ba30b93d22dcb4e0cf96a582b8bd7c6ddead955a9b7c4676e06

See more details on using hashes here.

File details

Details for the file firewall_test-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: firewall_test-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 61.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for firewall_test-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 4f12eff32551081dc7d04be2e9f501d7ecb5280842aa7531f61c4e122e6f4660
MD5 c0ae4a4c7d0f935a1e67ca9e92f30994
BLAKE2b-256 500e6f7be38eced6d7e222c735877faf252360dd72f5414d23d89c4700e8626d

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