Ich habe einen Server mit CentOS/RHEL 7.7 und zwei Netzwerkschnittstellen. Diese Schnittstellen sind konfiguriert und funktionieren ordnungsgemäß. Die erste Schnittstelle, ens33, ist Teil der „öffentlichen“ Zone von Firewalld. Alle auf diese Zone angewendeten Regeln funktionieren ordnungsgemäß. Die zweite Schnittstelle, ens37, funktioniert auch wie erwartet, wenn sie Mitglied der „öffentlichen“ Zone ist. Ich habe eine zweite Zone, „GLZ“, erstellt, die einen Satz Regeln enthält, die speziell auf die Funktion der zweiten Schnittstelle zugeschnitten sind. Ich kann keine Regeln aus der GLZ-Zone auf diese Schnittstelle anwenden. Ich habe diese Art von Setup in der Vergangenheit oft mit iptables konfiguriert, aber mit Firewalld bekomme ich scheinbar nicht den gewünschten Effekt. Ich habe das Gefühl, dass mir bei Firewalld etwas Grundlegendes fehlt, aber ich weiß nicht, was es sein könnte. Im Folgenden finden Sie die Einzelheiten:
Setup-Skript:
NEWZONE="GLZ"
# create the new zone
firewall-cmd --permanent --new-zone=$NEWZONE
firewall-cmd --reload
# add the second NIC to the zone
firewall-cmd --permanent --zone=$NEWZONE --change-interface=ens37
# set zone target
firewall-cmd --zone=$NEWZONE --permanent --set-target=default
firewall-cmd --reload
# open necessary ports
firewall-cmd --permanent --zone=$NEWZONE --add-rich-rule='rule family=ipv4 source address=0.0.0.0/0 port protocol=tcp port=80 accept'
firewall-cmd --permanent --zone=$NEWZONE --add-rich-rule='rule family=ipv4 source address=0.0.0.0/0 port protocol=tcp port=443 accept'
# setup forwarding (see https://docs.fedoraproject.org/en-US/Fedora/19/html/Security_Guide/sec-Configure_Port_Forwarding-CLI.html)
firewall-cmd --permanent --zone=$NEWZONE --add-masquerade
firewall-cmd --permanent --zone=$NEWZONE --add-forward-port=port=22:proto=tcp:toport=2222
firewall-cmd --reload
Basierend auf der Ausgabe von --info-zone scheint alles in Ordnung zu sein. Beide Zonen sind aktiv und jeder Zone ist die entsprechende Netzwerkschnittstelle zugewiesen. Alle Änderungen, die ich an der öffentlichen Zone vornehme, wirken sich auf den Verkehr auf beiden Schnittstellen aus und keine der Regeln, die ich der GLZ-Zone hinzufüge oder daraus entferne, macht überhaupt einen Unterschied.
Ausgabe:
$ sudo firewall-cmd --info-zone=public
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="10.0.0.0/8" port port="3306" protocol="tcp" accept
rule family="ipv4" source address="10.0.0.0/8" port port="80" protocol="tcp" accept
rule family="ipv4" source address="10.0.0.0/8" port port="443" protocol="tcp" accept
rule family="ipv4" source address="10.0.0.0/8" port port="8080" protocol="tcp" accept
$ sudo firewall-cmd --info-zone=GLZ
GLZ (active)
target: default
icmp-block-inversion: no
interfaces: ens37
sources:
services:
ports:
protocols:
masquerade: yes
forward-ports: port=22:proto=tcp:toport=2222:toaddr=
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="0.0.0.0/0" port port="80" protocol="tcp" accept
rule family="ipv4" source address="0.0.0.0/0" port port="443" protocol="tcp" accept