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

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    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

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 ... im Tab Installer den Pfad, den Bneutzer und weitere Kommandos hinterlegen, welche nach dem Kopieren des Firewall-Scrips ausgeführt werden sollen:

  • Directory on the firewall where script should be installed: /tmp

  • A command that installer should execute on the firewall in order to activate the policy: sudo mv /tmp/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

Log-Dateien auf DENY untersuchen

grep DENY /var/log/messages* | grep -Ev '( FIN | SYN | RST | ACK )'

Built on 2023-03-17