Sie sind hier : Homepage →  Linux (13) Upgrade 42.3 to 15.3→  Die "firewalld" Komandos im CLI

Diese Seiten sind unsere internen Protokolle aus dem Labor.

Hier wird fortlaufend protokolliert, was beim Upgrade aus dem Ruder gelaufen war

.

März 2022 - Das ist neu nach dem Upgrade auf Leap 15.3

How to set up a firewall using new "FirewallD" on OpenSUSE Linux ..... Setup the firewall and manage with the help of firewall-cmd command-line tool. Hier hat sich ein Autor viel Mühe gemacht und alles ausprobiert. Ich übernehme Teile aus seiner Seite - aber auf Deutsch.
.
Enable the firewall at boot time using the systemctl command:
.

  • systemctl enable firewalld - damit wird die Firewall NICHT gestartet !

.
Start the firewall on OpenSUSE Linux:
.

  • systemctl start firewalld - hiermit wird die Firewall gestartet

.
Get status of your firewall:
.

  • systemctl status firewalld

.

  • systemctl disable firewalld - beim nächste "reboot" nicht mehr starten

 .

  • systemctl stop firewalld - die Firewall sofort stoppen !!!!

 .

  • systemctl restart firewalld - laufende Firewall stoppen und sofort neu starten

.

Basic Konzepte
1. Die Zonen


Firewalld zones are nothing but predefined sets of rules. You can see all zones by running the following ls command:
.

  • ls -l /usr/lib/firewalld/zones/

.
Use the cat command to view drop zone:
.

  • cat /usr/lib/firewalld/zones/home.xml
  • cat /usr/lib/firewalld/zones/public.xml

.

vordefinierte Zonen
.

  1. block – All incoming network connections rejected. Only network connections initiated from within the system are possible.
  2. dmz – Classic demilitarized zone (DMZ) zone that provided limited access to your LAN and only allows selected incoming ports.
  3. drop – All incoming network connections dropped, and only outgoing network connections allowed.
  4. external – Useful for router type of connections. You need LAN and WAN interfaces too for masquerading (NAT) to work correctly.
  5. home – Useful for home computers such as laptops and desktops within your LAN where you trust other computers. Allows only selected TCP/IP ports.
  6. internal – For use on internal networks when you mostly trust the other servers or computers on the LAN.
  7. public – You do not trust any other computers and servers on the network. You only allow the required ports and services. For cloud servers or server hosted at your place always use public zone.
  8. trusted – All network connections are accepted. I do not recommend this zone for dedicated servers or VMs connected to WAN.
  9. work – For use at your workplace where you trust your coworkers and other servers.

.
Zeige alle Zonen an und mehr :
.

  • firewall-cmd --get-zones

.

  • grep -i DefaultZone /etc/firewalld/firewalld.conf

.

  • cat /usr/lib/firewalld/zones/public.xml

.

  • firewall-cmd --get-default-zone

.

  • ip link show

.

  • firewall-cmd --get-active-zones

.

2. Die Dienste (services)

How to see firewall rules or services associated with the public zone
.

  • firewall-cmd --list-all

.

  • firewall-cmd --list-all --zone=public

.
Beispiel : remove services dhcpv6-client:
.

  • firewall-cmd --remove-service=dhcpv6-client --permanent --zone=public
  • firewall-cmd --reload
  • firewall-cmd --list-services

.

Jetzt aufpassen - das ist neu

In der Zeile oben drüber kommt zu ersten male "permanent" vor. Das Gegenteil ist "temporär" !! Es gibt also 2 Varianten oder Konfigurationen.

.

Die "erlaubten" Dienste (nicht die offenen Ports) in der aktuellen (Current) Zone anzeigen. Das mit den Ports kommt weiter unten.
.

  • firewall-cmd --list-services

.

  • firewall-cmd --list-services --zone=public
  • firewall-cmd --list-services --zone=home

.
oder eine Bash Script Datei erstellen :
.

  • ## or just use 'sudo firewall-cmd --list-all-zones'
  • for z in $(firewall-cmd --get-zones)
  • do
  • echo "Services allowed in $z zone: $(sudo firewall-cmd --list-services --zone=$z)"
  • done
.

Den firewalld Dienst starten und stoppen (wie ganz oben schon)

Start and enable firewalld als Dienst
.

  • systemctl start firewalld - den Dienst temporär sofort starten
  • systemctl enable firewalld - den Dienst als Systemstart eintragen

.
Stop and disable den firewalld Dienst
.

  • systemctl stop firewalld - die Firewall sofort stoppen
  • systemctl disable firewalld - die Firewall aus dem Systemstart austragen

.
"enable" und "disable" starten und stoppen den Firewalld Dienst NICHT. Damit werden die Boot-Einträge ein- und augetragen.
.
Check the firewalld status
.

  • firewall-cmd --state

.
Command to reload a firewalld configuration when you make change to rules
.

  • firewall-cmd --reload

.
Get the status of the firewalld service
.

  • systemctl status firewalld

.

Und hier die (noch fehlende) Erklärung zu "firewalld"

.

Understanding runtime (temp.) and permanent firewall rule sets

Runtime firewalld configuration changes are temporary. When you reboot the OpenSUSE Linux server, they are gone. For example, the following will temporarily open TCP port 80/443 (https) for the web server:
.

  •  firewall-cmd --zone=public --add-service=http
  •  firewall-cmd --zone=public --add-service=https

.
Diese obigen Vorgaben sind nur temporär, also nach dem "reboot" des Linux Servers oder bei "restarting" der firewalld services ist alles weg !!!!!!.
.
Wie mache (setze) ich die "rules" - to the permanent set ?

Let us add rule (HTTPS/443 and HTTP/80) permanently and reload firewalld:
.

  • firewall-cmd --zone=public --add-service=http --permanent
  • firewall-cmd --zone=public --add-service=https --permanent

.

  • firewall-cmd --reload


Vergewissern wir uns, daß das auch stimmt :

  • firewall-cmd --list-services
  • firewall-cmd --list-services --permanent

.

Eintragungen von Diensten und Ports mit YAST / YAST2

Das habe ich ausprobiert !!! Die mit YAST eingetragenen Dienste und Ports sind "resident" erhalten bzw. vorhanden - auch nach einem "Reload" oder "reboot".

.

Die Dienste der firewalld anzeigen

.

  • firewall-cmd --get-services

.

  • firewall-cmd --get-services | grep nfs3

.

  • ls -l /usr/lib/firewalld/services/

.

  • cat /usr/lib/firewalld/services/nfs3.xml

.

3. Beispiele des Autors mit den "Ports"

Hier kommen ein paar allgemeingültige Beispiele - zum Beispiel zur default zone

Add dns service (TCP/UDP port 53):

  • firewall-cmd --zone=public --add-service=dns --permanent

.
How to remove (delete) service from your zone
.
Delete vnc server service (TCP port range 5900-5903):
.

  • firewall-cmd --zone=public --remove-service=vnc-server --permanent

.
How to allow/open TCP/UDP port/protocol
.
Open TCP port # 9009:
.

  • firewall-cmd --zone=public --add-port=9009/tcp --permanent

.

Extrem wichtig : Die offenen Ports auflisten :

To view added ports
.

  • firewall-cmd --zone=internal --list-ports
    oder
  • firewall-cmd --zone=public --list-ports

.
How to deny/block TCP/UDP port/protocol
.
Open TCP port # 23:
.

  • firewall-cmd --zone=public --remove-port=23/tcp --permanent

.
How to write port forwarding firewalld rule
.
Forward TCP port 443 to 8080 on the same server:
.

  • firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent

.
To delete above port forwarding
.

  • firewall-cmd --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080

.

Und hier kommt "masquerading" für die Virtualisierung auf Hetzner und Webtropia "root"-Servern


Turn on masquerading if you need to forward traffic (port 443) to lxd server/container hosted at 192.168.2.42 port 443:
.

  • firewall-cmd --zone=public --add-masquerade
  • firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=443:toaddr=192.168.2.42 --permanent

.
To delete above masquerading rules

  • firewall-cmd --zone=public --remove-masquerade
  • firewall-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toport=443:toaddr=192.168.2.42 --permanent

.
As usual use the following to list rules:

  • firewall-cmd --zone=public --list-all --permanent


Rich rule firewalld example
.
Say you want to allow access to SSH port 22 only from 192.168.3.5 IP address, run:

  • firewall-cmd --permanent --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.3.5" port port=22 protocol=tcp accept'

.

To verify new rules, run:

  • firewall-cmd --list-rich-rules --permanent

.
In this following example allow 192.168.2.0/24 sub/net to access tcp port 11211:
.

  • firewall-cmd --permanent --zone=public --add-rich-rule='
  • rule family="ipv4"
  • source address="192.168.2.0/24"
  • port protocol="tcp" port="11211" accept'

.
Again verify it:

  • firewall-cmd --list-rich-rules --permanent

.
Beispiel-Ausgaben:
rule family="ipv4" source address="192.168.3.5" port port="22" protocol="tcp" accept
rule family="ipv4" source address="192.168.2.0/24" port port="11211" protocol="tcp" accept
.
You can delete rich rules as follows:

  • firewall-cmd --remove-rich-rule 'rule family="ipv4" source address="192.168.3.5" port port=22 protocol=tcp accept' --permanent

.
## delete another rule ##

  • firewall-cmd --remove-rich-rule 'rule family="ipv4" source address="192.168.2.0/24" port port="11211" protocol="tcp" accept' --permanent

.

.
Und mehr gibts hier zu lesen : https://firewalld.org/documentation/

.

März 2022 - Nachtrag und Ergänzung einer "firewalld" Konfigurtaion auf einer VM (bei uns die DOM-3)

.

März 2022 - So langsam kommen unter 15.3 immer mehr sonderbare Ereignisse ans Licht. Nach der Eintragung von Port 80 und 443 und weiteren Ports für Sonderzwecke will die Firewall jetzt gar nicht mehr.

Den Staus der Firewall auf der VM prüfen :

  • [ftp.net- root] /etc $ firewall-cmd --state


ftp firewalld[2656]: ERROR: 'python-nftables' failed:

internal:0:0-0: Error: Could not process rule: Das numerische Ergebnis ist auÃerhalb des gültigen Bereiches

internal:0:0-0: Error: Could not process rule: Das numerische Ergebnis ist auÃerhalb des gültigen Bereiches

internal:0:0-0: Error: Could not process rule: Das numerische Ergebnis ist auÃerhalb des gültigen Bereiches

internal:0:0-0: Error: Could not process rule: Das numerische Ergebnis ist auÃerhalb des gültigen Bereiches

internal:0:0-0: Error: Could not process rule: Das numerische Ergebnis ist auÃerhalb des gültigen Bereiches
========================================================
.
Die obige Fehler-Zeile kommt sogar 211 mal !!!!
.

Das numerische Ergebnis ist außerhalb des gültigen Bereiches - bei Port 80 - So ????

Google findet wenige Einträge mit unbrauchbaren Aussagen bzw. Vorschlägen.
Das ist natürlich ganz schön blöd bei einer Firewall, also müsste das Betriebssystem der VM gänzlich neu installiert werden. - Wenn ich eine Lösung habe, werde ich weiter schreiben. Nach 3 Stunden Probieren muß ich erstmal den Frust beseitigen.
.

Ein Fehler Anfang April 2022 - nach dem letzten Update - ein gezieltes "downgrade" ist erforderlich

06.04.2022

  • [ftp.net- root] ~ $ systemctl status firewalld


bringt unter andrem folgende Fehlermeldung :

Apr 11 02:07:51 ftp systemd[1]: Started firewalld - dynamic firewall daemon.
Apr 11 02:07:51 ftp firewalld[15183]: ERROR: Calling pre func <bound method Firewall.full_check_config of <class 'firewall.core.fw.Firewall'>(True, True, True, 'INIT', False, '', {}, [], True, True, True, F>

Ein Forumuser schreibt dazu bereits am 2.4.2022 :

For anyone else wanting to get rid of the error messages until the root cause is fixed, I also had to "downgrade" firewall-config-0.9.3-150300.3.3.1.noarch, so in that case the above zypper command needs to be amended to:

  • [ftp.net- root] ~ $ zypper in -f firewalld=0.9.3-1.1 firewalld-lang=0.9.3-1.1 python3-firewall=0.9.3-1.1 firewall-config=0.9.3-1.1


das ergibt dann folgende Text-Ausgabe :

Loading repository data...
Reading installed packages...
Forcing installation of 'firewall-config-0.9.3-1.1.noarch' from repository 'openSUSE-15.3 OSS'.
Forcing installation of 'firewalld-0.9.3-1.1.noarch' from repository 'openSUSE-15.3 OSS'.
Forcing installation of 'firewalld-lang-0.9.3-1.1.noarch' from repository 'openSUSE-15.3 OSS'.
Forcing installation of 'python3-firewall-0.9.3-1.1.noarch' from repository 'openSUSE-15.3 OSS'.
Resolving package dependencies...

The following 3 packages are going to be downgraded:
  firewalld firewalld-lang python3-firewall

The following 7 NEW packages are going to be installed:
  firewall-config python3-gobject-Gdk python3-gobject-cairo typelib-1_0-Atk-1_0 typelib-1_0-GdkPixbuf-2_0 typelib-1_0-Gtk-3_0 typelib-1_0-Pango-1_0

3 packages to downgrade, 7 new.
Overall download size: 1.4 MiB. Already cached: 0 B. After the operation, additional 2.2 MiB will be used.

Continue? [y/n/v/...? shows all options] (y): Y

dann kommt das hier

Retrieving package python3-firewall-0.9.3-1.1.noarch  (1/10), 363.9 KiB (  2.0 MiB unpacked)
Retrieving: python3-firewall-0.9.3-1.1.noarch.rpm .................[done]
Retrieving package python3-gobject-cairo-3.34.0-2.27.x86_64         (2/10),  33.6 KiB ( 18.5 KiB unpacked)
Retrieving: python3-gobject-cairo-3.34.0-2.27.x86_64.rpm ................[done]
Retrieving package typelib-1_0-Atk-1_0-2.34.1-1.56.x86_64           (3/10),  34.9 KiB ( 72.3 KiB unpacked)
Retrieving: typelib-1_0-Atk-1_0-2.34.1-1.56.x86_64.rpm ................[done]
Retrieving package typelib-1_0-GdkPixbuf-2_0-2.40.0-3.3.1.x86_64          (4/10),  28.2 KiB ( 15.9 KiB unpacked)
Retrieving: typelib-1_0-GdkPixbuf-2_0-2.40.0-3.3.1.x86_64.rpm ................[done]
Retrieving package typelib-1_0-Pango-1_0-1.44.7+11-1.25.x86_64         (5/10),  40.4 KiB ( 87.3 KiB unpacked)
Retrieving: typelib-1_0-Pango-1_0-1.44.7+11-1.25.x86_64.rpm ................[done]
Retrieving package firewalld-0.9.3-1.1.noarch           (6/10), 221.8 KiB (478.7 KiB unpacked)
Retrieving: firewalld-0.9.3-1.1.noarch.rpm ..................[done]
Retrieving package firewalld-lang-0.9.3-1.1.noarch            (7/10), 268.2 KiB (  1.5 MiB unpacked)
Retrieving: firewalld-lang-0.9.3-1.1.noarch.rpm .................[done]
Retrieving package typelib-1_0-Gtk-3_0-3.24.20-3.6.1.x86_64         (8/10), 281.4 KiB (901.6 KiB unpacked)
Retrieving: typelib-1_0-Gtk-3_0-3.24.20-3.6.1.x86_64.rpm ................[done]
Retrieving package python3-gobject-Gdk-3.34.0-2.27.x86_64           (9/10),  45.6 KiB ( 86.3 KiB unpacked)
Retrieving: python3-gobject-Gdk-3.34.0-2.27.x86_64.rpm ................[done]
Retrieving package firewall-config-0.9.3-1.1.noarch          (10/10), 131.2 KiB (  1.1 MiB unpacked)
Retrieving: firewall-config-0.9.3-1.1.noarch.rpm .................[done]

Checking for file conflicts: ...................[done]
( 1/10) Installing: python3-firewall-0.9.3-1.1.noarch ................[done]
( 2/10) Installing: python3-gobject-cairo-3.34.0-2.27.x86_64 ................[done]
( 3/10) Installing: typelib-1_0-Atk-1_0-2.34.1-1.56.x86_64 ................[done]
( 4/10) Installing: typelib-1_0-GdkPixbuf-2_0-2.40.0-3.3.1.x86_64 ................[done]
( 5/10) Installing: typelib-1_0-Pango-1_0-1.44.7+11-1.25.x86_64 ................[done]
Updating /etc/sysconfig/firewalld ..
( 6/10) Installing: firewalld-0.9.3-1.1.noarch ..................[done]
( 7/10) Installing: firewalld-lang-0.9.3-1.1.noarch ................[done]
( 8/10) Installing: typelib-1_0-Gtk-3_0-3.24.20-3.6.1.x86_64 ................[done]
( 9/10) Installing: python3-gobject-Gdk-3.34.0-2.27.x86_64 ................[done]
(10/10) Installing: firewall-config-0.9.3-1.1.noarch ................[done]
Executing %posttrans scripts ...................[done]

und jetzt ist der Staus wieder normal und irritiert nicht mehr - gerade bei einer Firewall ist jede Irritation sehr gefährlich und kostet manchmal die ganze Nacht.

  • [ftp.net- root] ~ $ systemctl status firewalld

.

Startseite -- © 2001/2022 - Copyright by Dipl.-Ing. Gert Redlich / Germany - D-65191 Wiesbaden - Telefon-Nummer - Impressum