OXL Firewall Testing Framework
Project description
Firewall Testing-Framework
A framework for testing and troubleshooting firewall rulesets.
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
- Netfilter (NFTables/IPTables)
- OPNsense (Information from Config-Backup-File and runtime-infos like routes from API)
Contribute
See: CONTRIBUTING
Credits
-
Thanks to the go-ftw (Web Application Firewall Testing Framework) project that inspired us to create this project
-
Thanks go to @MikPisula for some inspiration on how to simulate network-traffic over a firewall (MikPisula/packet-simulator)
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba9b689b984b8974a3be3867b84549f30e0937568df9b8a6ea76e58905059aa5
|
|
| MD5 |
9e92f2b5dc21182b97d26651809eea14
|
|
| BLAKE2b-256 |
b43b8ae57ea91ba30b93d22dcb4e0cf96a582b8bd7c6ddead955a9b7c4676e06
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f12eff32551081dc7d04be2e9f501d7ecb5280842aa7531f61c4e122e6f4660
|
|
| MD5 |
c0ae4a4c7d0f935a1e67ca9e92f30994
|
|
| BLAKE2b-256 |
500e6f7be38eced6d7e222c735877faf252360dd72f5414d23d89c4700e8626d
|