Firewall Builder is a GUI firewall management application for nftables, iptables, PF, Cisco ASA/PIX/FWSM, Cisco router ACL and more. Firewall configuration data is stored in a central file that can scale to hundreds of firewalls managed from a single UI.
Firewall Builder includes an nftables compiler (fwb_nft). To use it, select the nftables platform in the firewall object (New Firewall wizard or the firewall properties dialog). The generated scripts use the nft binary and support optional atomic loading and an optional nftables.conf path configured in the firewall platform settings.
sudo apt install git cmake libxml2-dev libxslt-dev libsnmp-dev qt5-default qttools5-dev-tools
git clone https://github.com/fwbuilder/fwbuilder.git
mkdir build
cd build
cmake ../fwbuilder
make
sudo make install
Note: default destination is /usr/local. This is configurable:
cmake ../fwbuilder -DCMAKE_INSTALL_PREFIX=/usr
Prerequisites (choose either MSYS2/MinGW or MSVC):
- Toolchain (open source): MSYS2 MinGW-w64 (mingw-w64-x86_64-gcc).
- Install MSYS2 from https://www.msys2.org/, then in the MSYS2 terminal run:
pacman -Syu pacman -S --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake \ mingw-w64-x86_64-ninja mingw-w64-x86_64-qt6 mingw-w64-x86_64-libxml2 \ mingw-w64-x86_64-libxslt mingw-w64-x86_64-net-snmp
- Install MSYS2 from https://www.msys2.org/, then in the MSYS2 terminal run:
- Alternative toolchain: Visual Studio 2019/2022 with C++ workload (not open source).
- Qt 5 or Qt 6 (Qt Creator/SDK or standalone packages).
- CMake 3.16+ and a build tool (Ninja, MinGW Make, or MSBuild).
- Dependencies: libxml2, libxslt, libsnmp (via MSYS2 packages or prebuilt Windows binaries).
Repository clone:
git clone https://github.com/fwbuilder/fwbuilder.git
cd fwbuilder
Build directory setup:
mkdir build
cd build
CMake configuration examples (use \ line continuations in the MSYS2 bash shell; ^ is for cmd.exe):
- MSYS2/MinGW (64-bit):
cmake .. -G "MinGW Makefiles" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=/mingw64 \
-DUseQt6=ON \
-DLIBXML2_LIBRARY=/mingw64/lib/libxml2.dll.a \
-DLIBXML2_INCLUDE_DIR=/mingw64/include/libxml2 \
-DLIBXSLT_LIBRARY=/mingw64/lib/libxslt.dll.a \
-DLIBXSLT_INCLUDE_DIR=/mingw64/include \
-DNETSNMP_LIBRARY=/mingw64/lib/libnetsnmp.dll.a \
-DNETSNMP_INCLUDE_DIR=/mingw64/include
- MSVC (Visual Studio 2022 x64):
cmake .. -G "Visual Studio 17 2022" -A x64 ^
-DCMAKE_PREFIX_PATH=C:/Qt/6.6.1/msvc2019_64 ^
-DLIBXML2_LIBRARY=C:/deps/libxml2/lib/libxml2.lib ^
-DLIBXML2_INCLUDE_DIR=C:/deps/libxml2/include ^
-DLIBXSLT_LIBRARY=C:/deps/libxslt/lib/libxslt.lib ^
-DLIBXSLT_INCLUDE_DIR=C:/deps/libxslt/include ^
-DNETSNMP_LIBRARY=C:/deps/net-snmp/lib/netsnmp.lib ^
-DNETSNMP_INCLUDE_DIR=C:/deps/net-snmp/include
Build commands:
- MinGW:
mingw32-make -j4
- MSVC:
cmake --build . --config Release
If CPack is configured for your build, from the build directory run:
cpack -C Release
This will produce an installer package (e.g., ZIP or NSIS, depending on your CPack settings).
If CPack is not configured, use a packaging tool such as NSIS or WiX:
- Stage install files (e.g.,
cmake --install . --config Release --prefix C:/staging/fwbuilder). - Use
windeployqtto copy Qt runtime dependencies into the staging folder. - Add any required DLLs for libxml2/libxslt/libsnmp and your compiler runtime (MSVC Redistributable or MinGW runtime).
- Create the installer with NSIS (
makensis) or WiX (candle/light) pointing at the staged folder.
Installing on another Windows machine:
- Copy the generated installer to the target machine and run it.
- Ensure runtime dependencies are bundled in the installer or preinstalled (Qt DLLs, libxml2/libxslt/libsnmp, and MSVC/MinGW runtime).
- Launch Firewall Builder from the installed Start Menu shortcut or installation directory.
debuild -us -uc --lintian-opts --profile debian