Linuxfabrik FirewallFabrik Release v1.0.0

datacenter firewallfabrik linux tools

Firewall Builder (fwbuilder) has no nftables support and has not been actively developed for years. FirewallFabrik is its modern successor: a complete rewrite in Python and Qt6 with native nftables support, seamless migration of existing .fwb files, and a GUI that feels just like the original.

FirewallFabrik: The Successor to Firewall Builder - Now with nftables

Anyone who manages firewalls centrally is probably familiar with Firewall Builder (fwbuilder). For over 20 years, this open-source tool has provided a convenient graphical interface for creating and managing firewall rules. It supports multiple target platforms such as iptables, pf, and Cisco PIX. Originally developed by NetCitadel, fwbuilder has made daily work easier for many administrators over the years.

At the same time, things have moved on. The existing codebase in C++ and Qt5 has aged, and with RHEL 10 a paradigm shift is underway that pushes fwbuilder to its limits: iptables is deprecated and no longer being developed.

Against this backdrop, we at Linuxfabrik created FirewallFabrik, the modern successor to Firewall Builder. The goal was to preserve the best of fwbuilder while being ready for the future, especially with regard to nftables.

iptables: Deprecated and Without a Future

In RHEL 9, Red Hat marked iptables and the related packages iptables-nft and ipset as deprecated. In RHEL 10, the packages are still available in the AppStream, but Red Hat has moved the associated kernel modules to the kernel-modules-extra package - they are no longer installed by default. Furthermore, iptables is classified as unmaintained and will be removed entirely in a future RHEL release. Anyone running RHEL 10 or distributions based on it, such as AlmaLinux or Rocky Linux, should migrate to nftables or firewalld with the nftables backend sooner rather than later.

This does not just affect individual rules on individual servers. It is particularly relevant for environments where dozens or hundreds of firewalls are managed centrally. Firewall Builder has been widely used in such environments - and this is exactly where FirewallFabrik comes in.

Firewall Builder itself has no nftables support. Porting nftables into the existing C++ codebase would have been laborious and offered little long-term viability. For this reason, we decided to rebuild the project from scratch.

What is FirewallFabrik?

FirewallFabrik is a complete rewrite of Firewall Builder, implemented in Python and Qt6. The goal was clearly defined: the same proven GUI concept, combined with a modern technology stack and native nftables support.

It was particularly important to us that FirewallFabrik feels just like Firewall Builder. The window layout, the object tree, the dialogs, and the drag-and-drop behaviour follow the familiar concept. Anyone who knows fwbuilder will find their way around FirewallFabrik immediately, without retraining and without additional learning effort. Under the hood everything is new; the interface remains familiar.

In practice, this means: you model hosts, networks, services, and interfaces as named objects, organize them in libraries, and drag them into policy, NAT, and routing rules. FirewallFabrik then compiles these rules into ready-to-use shell scripts, for iptables or nftables. The generated scripts can be deployed to target firewalls via the built-in SSH installer, manually, or through your own automation (Ansible, Terraform, CI/CD).

Installation is straightforward, quickest with uv:

uvx --from 'firewallfabrik[gui]' fwf

Alternatively, install permanently via uv tool install, pipx install, or pip install --user, each with the [gui] extra for the graphical interface. If you only need the CLI compilers (fwf-ipt, fwf-nft), you can install without [gui]. On Linux systems, you can optionally use the distribution's native PySide6 package (e.g. python3-pyside6 on Fedora). A .desktop file and MIME type definitions for application menu and file manager integration are also included.

What is Better Than fwbuilder?

nftables Support

The central argument for FirewallFabrik is nftables support as a target platform. The nftables compiler (fwf-nft) can translate policies directly into nftables rules. nftables has been available since RHEL 8 and is the standard on all current Linux distributions - FirewallFabrik covers both current and future environments without workarounds or additional compatibility layers.

nftables offers several technical advantages over iptables:

  • Unified syntax for IPv4, IPv6, ARP, and bridging
  • Native sets and maps, eliminating the need for separate ipset packages
  • Atomic rule changes, without brief gaps when reloading
  • Better performance through optimized kernel processing

YAML Instead of XML

fwbuilder stored everything in a single XML file (.fwb). FirewallFabrik uses YAML (.fwf) instead: human-readable, diff-friendly, and ideal for Git. Diffs clearly show what has changed, and any text editor or script can work with the format.

Parallel Compilation

FirewallFabrik uses all available CPU cores and compiles multiple firewalls simultaneously. The CLI compilers (fwf-ipt and fwf-nft) accept multiple firewall names at once and offer an --all flag to compile all firewalls of the respective platform in a single run. The database is loaded only once - regardless of the number of firewalls.

Modern Technology Stack

Under the hood, everything has changed. The codebase is Python 3.14 instead of C++, the GUI uses Qt6 (PySide6) instead of Qt5. Internally, FirewallFabrik works with an SQLite database and SQLAlchemy as ORM - this means fast queries instead of XML traversal, referential integrity through database constraints, and full undo/redo with history snapshots. The built-in RCS integration from fwbuilder has been replaced by what is standard today: YAML files in Git.

Extended Standard Library

The included service library has been expanded with practical entries, including Collabora Online, Icinga, Nextcloud notify_push, WinRM, and FreeIPA. Additional service definitions can be created at any time.

Seamless Migration: From .fwb to .fwf

Anyone already working with Firewall Builder does not have to start from scratch. FirewallFabrik can read all existing .fwb files in XML format and convert them directly into the new .fwf format. All objects, policies, interfaces, and references are correctly transferred.

There is no migration process as such: the .fwb file is opened, and from that point on everything is saved exclusively in the new .fwf format. No manual migration steps are required. You can get started right away.

But Do You Still Need Such a Tool Today?

Ansible, Terraform, and CI/CD pipelines are the standard for distributing configurations today. Anyone managing their infrastructure as code rightly asks: why a GUI tool when I can roll out firewall rules as an Ansible role or Terraform module?

The answer: because automation tools solve a different problem than FirewallFabrik. Ansible reliably delivers configurations to target systems - it answers the question "How does the rule get onto the firewall?". FirewallFabrik answers the question that comes before: "Which rules do I need, and are they correct?"

Anyone running more than five to ten (host) firewalls faces a challenge that no Ansible playbook alone can solve: maintaining the overview. Which rules apply where? Which servers are allowed to communicate with which services? Is a particular firewall rule shadowed by a preceding one? Does any rule still reference the server that was decommissioned last week?

FirewallFabrik makes exactly this visible:

  • Visual overview of all firewalls in a single application - compare policies side by side, trace communication flows between sites, spot gaps and inconsistencies
  • Audit and traceability - every rule references named objects instead of raw IP addresses and port numbers. Anyone looking for a specific object can instantly find all rules across all firewalls that use it
  • Change one object, stay consistent everywhere - a server moves, an IP changes: you update the one object, and FirewallFabrik automatically identifies which firewalls need to be recompiled. No manual searching, no forgotten rules
  • Rule shadowing detection - the compiler detects at compile time when a rule is shadowed by a preceding one and will therefore never match

In practice, GUI and automation complement each other:

  • FirewallFabrik is the design and audit layer. This is where you design, review, and document firewall policies.
  • Ansible, Terraform, or CI/CD is the deployment layer. This is where the compiled scripts are distributed and activated.

FirewallFabrik generates shell scripts that are idempotent: they set up the complete rule set from scratch on every run, regardless of the firewall's previous state. The result is always the same. This property makes them ideal for automated deployments, whether via Ansible playbook, GitLab CI pipeline, or plain scp && ssh.

This also works in the other direction: the .fwf file is human-readable YAML and can be created or edited directly with scripts or automation tools. A CMDB export, an Ansible playbook, or a custom script can generate the YAML file, and a human can then visualize, review, and refine it in the GUI. FirewallFabrik is thus open in both directions: GUI-to-script and script-to-GUI.

What Can FirewallFabrik Do in Detail?

FirewallFabrik offers the full feature set you would expect from a professional firewall management tool:

  • Three rule types: Policy rules (filter), NAT rules (SNAT, DNAT, masquerade, redirect, load balancing, SDNAT, NONAT), and routing rules (ip route, ECMP)
  • Full IPv4/IPv6 dual-stack: Separate compilation passes with automatic version filtering. IPv4 and IPv6 objects can be used in the same rule set.
  • Cluster support: Model failover groups and state synchronization (conntrackd)
  • Batch deployment: Compile multiple firewalls in one pass and install via SSH
  • Configlet templates: Customizable templates for interface configuration, kernel parameters, and activation scripts
  • Compiler with 55+ rule processors: Automatic optimization, negation handling, group expansion, and shadowing detection

What Have We (For Now) Not Ported?

In a rewrite, it is important to stay focused. We have therefore deliberately not carried over some features from fwbuilder:

  • "Deleted Objects" library: In fwbuilder, deleted objects could be restored, but without their references. In practice, this feature proved barely usable. In FirewallFabrik, we recommend Git instead: a git revert restores objects including all their references.
  • Additional platform compilers: fwbuilder supported Cisco PIX/ASA/IOS/NX-OS, Juniper JunOS, HP ProCurve, and OpenBSD PF in addition to iptables. Some of these platforms have since been discontinued (PIX, FWSM, ipfw, ipfilter). Others are still in use but have not yet been implemented as compiler backends, including Cisco ASA, JunOS, and PF. FirewallFabrik's architecture is deliberately kept open so that additional backends can be added as needed. Among the unsupported platforms, PF (OpenBSD/FreeBSD) would be the most natural candidate.

Who is FirewallFabrik For?

FirewallFabrik is aimed at administrators and teams who:

  • Manage dozens or hundreds of firewalls centrally via a GUI and want to maintain an overview of all policies, objects, and communication flows
  • Need or want to migrate from iptables to nftables
  • Run RHEL 8/9/10, AlmaLinux, Rocky Linux, or Fedora
  • Keep their firewall configurations versioned in Git and integrate them into existing automation (Ansible, Terraform, CI/CD)
  • Need to demonstrate during audits which rules apply where and why
  • Already work with Firewall Builder and are looking for a future-proof successor

Contributions Welcome

As always, when our blog goes quiet, we are busy writing software rather than writing about it. :) FirewallFabrik is developed at Linuxfabrik, a Swiss company specializing in Linux and open source. It is open source (GPLv2) and thrives on community involvement. Pull requests are always welcome, whether for bug fixes, new features, or porting additional platform compilers.

The project can be found on GitHub at https://github.com/Linuxfabrik/firewallfabrik

Previous Post