Firewall Builder

Firewall Builder (fwbuilder, fwb) ist ein Regelgenerator mit intuitiver Drag-and-Drop-Oberfläche für Linux, Windows und macOS, der vor allem in komplexen Umgebungen nützlich ist. Das Programm ist in C und Qt geschrieben. Es gehört mit über zehn Jahren mehr oder weniger kontinuierlicher Entwicklungszeit zu den Dinosauriern unter den GUI-Tools für Firewalls. Unterstützte Firewalls und Userspace-Utilities sind:

  • Cisco ASA / Cisco PIX

  • Cisco FWSM

  • Cisco Router IOS ACL

  • HP ProCurve ACL

  • ipfilter

  • ipfw

  • iptables

  • PF

firewalld- und nftables-Syntax wird nicht unterstützt - für letzteres hilft unser Patch (siehe weiter unten).

Links:

Tipp

Was ist der Unterschied zwischen der Direction-Angabe „Inbound“, „Outbound“ und „Both“? Die übersetzten Rules - hier für iptables.

any > myhost:

  • Inbound: INPUT -i eth0

  • Outbound: OUTPUT -o eth0 -d myhost

  • Both: INPUT -i eth0; OUTPUT -o eth0 -d myhost

myhost > any:

  • Inbound: INPUT -i eth0 -s myhost; FORWARD -i eth0 -s myhost

  • Outbound: OUTPUT -o eth0

  • Both: INPUT -i eth0 -s myhost; FORWARD -i eth0 -s myhost; OUTPUT -o eth0

Installation und Konfiguration

FwBuilder 5.3

Damit Fwbuilder 5.3.7 unter Fedora 34+ funktioniert, geht man wie folgt vor:

VER=5.3.7-60.33
wget http://download.opensuse.org/repositories/security/openSUSE_Tumbleweed/x86_64/fwbuilder-$VER.x86_64.rpm
sudo rpm --install --file --nodeps fwbuilder-$VER.x86_64.rpm
# or
sudo rpm --upgrade --file --nodeps fwbuilder-$VER.x86_64.rpm

Das SRPM liegt auf http://download.opensuse.org/repositories/security/SLE_15_SP2/src/

FwBuilder 5.1

Damit Fwbuilder 5.1 unter Fedora 30+ funktioniert, geht man wie folgt vor:

sudo dnf -y install net-snmp-libs
wget http://download.opensuse.org/repositories/security/SLE_11_SP4/x86_64/fwbuilder-5.1.0.3599-31.1.x86_64.rpm
sudo rpm --install --file --nodeps fwbuilder-5.1.0.3599-31.1.x86_64.rpm
sudo ln -s /usr/lib64/libnetsnmp.so.30 /usr/lib64/libnetsnmp.so.40.1.0
sudo ln -s /usr/lib64/libssl.so.1.1.1k /usr/lib64/libssl.so.10
sudo ln -s /usr/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.10

Fwbuilder und nftables

Firewall Builder beherrscht noch kein nftables, was z.B. ab RHEL 8 zum Einsatz kommt. Folgender Patch auf der eigenen Maschine, die FwBuilder ausführt, hilft:

cat << 'EOF' | sudo tee /usr/local/bin/fwb_nft
#!/usr/bin/env bash

set -e

args="$@"

while [[ $# -gt 0 ]]
do
    key="$1"

    case $key in
        -d)
            OUTPUT_DIR="$2"
            shift # past argument
            shift # past value
            ;;
        -o)
            OUTPUT_FILE="$2"
            shift # past argument
            shift # past value
            ;;
        *)    # unknown option
            shift # past argument
            ;;
    esac
done

FWB_IPT=$(which fwb_ipt)
"$FWB_IPT" $args

sed --in-place '/^reset_all()/{N;s/$/\n    command -v nft > \/dev\/null \&\& nft flush ruleset/}' "$OUTPUT_DIR/$OUTPUT_FILE"
echo 'Adjusted for nftables'
EOF
chmod +x /usr/local/bin/fwb_nft

Unter macOS muss das Script folgendermassen aussehen und gsed muss installiert sein (brew install gsed):

#!/usr/bin/env bash

set -e

args="$@"

while [[ $# -gt 0 ]]
do
    key="$1"

    case $key in
    -d)
        OUTPUT_DIR="$2"
        shift # past argument
        shift # past value
        ;;
    -o)
        OUTPUT_FILE="$2"
        shift # past argument
        shift # past value
        ;;
    *)    # unknown option
        shift # past argument
        ;;
    esac
done

FWB_IPT="/Applications/Firewall Builder.app/Contents/MacOS/fwb_ipt"
"$FWB_IPT" $args

/usr/local/bin/gsed --in-place '/^reset_all()/{N;s/$/\n    nft flush ruleset/}' "$OUTPUT_DIR/$OUTPUT_FILE"
echo 'Adjusted for nftables'

Danach im Firewall Builder einfach den Compiler für die RHEL 8-basierte Firewalls auf „Firewall > Firewall Settings > Compiler > Compiler: /usr/local/bin/fwb_nft setzen.

FwBuilder Installer via Non-Root User mit Sudo

In der jeweiligen Firewall unter Firewall Settings ... findet man den Punkt Installer. Dort kann man den Pfad, den User und weitere Kommandos hinterlegen, welche nach dem Kopieren des Firewall-Scrips ausgeführt werden sollen.

Directory on the firewall where script should be installed

/home/user

User name used to authenticate to the firewall

user

A command that installer should execute on the firewall in order to activate the policy

sudo mv /home/user/fwb.sh /etc/fwb.sh && sudo chown root:root /etc/fwb.sh && sudo restorecon -F /etc/fwb.sh && sudo /etc/fwb.sh

FwBuilder und Custom Modules

Beispiel: es soll die Regel iptables -I INPUT -m geoip ! --src-cc CH -j DROP abgebildet werden, also das xtables GeoIP-Modul verwendet und Traffic ausserhalb der Schweiz geblockt werden.

  • Service > Custom > Add

  • Name: „IP from CH“

  • Code String: -m geoip --src-cc CH

Built on 2022-06-03