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:
Source Code bis Version 5.1.0: https://sourceforge.net/projects/fwbuilder
Source Code ab 5.3.7: https://github.com/fwbuilder/fwbuilder
RPM ab 5.3.7: http://download.opensuse.org/repositories/security/openSUSE_Tumbleweed/x86_64/
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