Kategorie:Uncomplicated FireWall: Unterschied zwischen den Versionen

Aus Foxwiki
Der Seiteninhalt wurde durch einen anderen Text ersetzt: „Kategorie:Firewall
Markierung: Ersetzt
 
(35 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{DISPLAYTITLE:ufw}}
'''U'''ncomplicated '''F'''ire'''W'''all ist eine Schnittstelle zur Konfiguration des Paketfilters <tt>iptables</tt>, die darauf ausgerichtet ist, die Konfiguration einer Firewall zu vereinfachen.
== Beschreibung ==
== Installation ==
# apt install ufw
== Anwendungen ==
== Syntax ==
=== Optionen ===
=== Parameter ===
=== Umgebungsvariablen ===
=== Exit-Status ===
== Konfiguration ==
=== SSH erlauben ===
Für den Fall, daß die Firewall auf einem entfernten Rechner eingerichtet werden soll, ist zwingend darauf zu achten, daß vor deren Aktiviierung der entsprechnede Port für [https://de.wikipedia.org/wiki/Secure_Shell SSH]-Verbindungen zugelassen wird:
# ufw allow ssh
oder
# ufw allow 22
Da mit der Datei ''/etc/services'' eine Liste existiert, in der für jeden Dienst eine Port-Nummer hinterlegt ist, kann bei der Erstellung der Regeln gewählt werden, ob der jeweilige Dienst (hier: ssh) oder die Port-Nummer (hier: 22) angegeben wird.
Sollte der Dienst SSH so konfiguriert worden sein, daß dieser einen abweichenden Port verwendet (hier: 2222), kann auch dieser bei Erstellung der Regel angegeben werden:
# ufw allow 2222
=== UFW aktivieren ===
Das Starten der Firewall erfolgt mit dem Kommando:
# ufw enable
Sollte die Einrichtung der Firewall über eine bereits aktive SSH-Sitzung erfolgen, wird eine Meldung ausgegeben, die davor warnt, daß die Verbindung gestört werden könnte:
# ufw enable
Command may disrupt existing ssh connections.
* Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Wurde die Regel für SSH-Verbindungen bereits erstellt, kann die Frage mit '''y'''(es) beantwortet werden.
Die Firewall sollte nun aktiv sein.
* Der aktuelle Status kann wie folgt abgefragt werden:
# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To                        Action      From
--                        ------      ----
22/tcp                    ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)
=== IPv6 ===
Ist eine Unterstützung von IPv6 erforderlich, muß dies zunächst mit einem Eintrag in der Konfigurationsdatei aktiviert werden:
# vi /etc/default/ufw
Hier muß sichergestellt werden, daß der Eintrag ''IPV6=yes'' existiert:
# /etc/default/ufw
#
# Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback
# accepted).
* You will need to 'disable' and then 'enable' the firewall for
# the changes to take affect.
'''IPV6=yes'''
Wurde dieser Eintrag hinzugefügt, werden die entsprechenden Regeln sowohl für IPv4, als auch für IPv6 erstellt.
===  Standardrichtlinien  ===
* Standardrichtlinien sollten zuerst erstellt werden & definieren das Verhalten der Firewall, wenn keine der anderen Regeln auf die jeweilige Situation passt.
* Die Standardeinstellung ist die, dass eingehende Verbindungen abgelehnt & ausgehende Verbindungen zugelassen werden - so wird sichergestellt, dass niemand den entsprechenden Rechner von außen erreichen kann, während Anwendungen mit der Außenwelt kommunizieren können.
* Dieses Standardverhalten lässt sich mit den folgenden Befehlen wiederherstellen:
# ufw default deny incoming
# ufw default allow outgoing
* Zum Schutz eines Arbeitsplatzrechners könnten diese Standardeinstellungen bereits ausreichen, während die Regeln von Rechnern, die ihre Dienste Clients zur Verfügung stellen (Web-Server, Mail-Server, etc.) entsprechend angepasst werden müssen.
=== ICMP ===
Um [[ICMP]]-Anfragen zu blockieren, ist eine Anpassung der Standardeinstellungen erforderlich, da hierfür keine Regeln mit '''ufw''' über die Kommandozeile definiert werden können.
* Die Dateien, die zu diesem Zweck editiert werden müssen, finden sich im Verzeichnis '''/etc/ufw''' mit den Namen '''before.rules''' (für IPv4) und '''before6.rules''' (für IPv6):
<div class="toccolours mw-collapsible mw-collapsed">
'''before.rules'''
<div class="mw-collapsible-content">
...
# ok icmp codes for INPUT
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
...
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
'''before6.rules'''
<div class="mw-collapsible-content">
...
# ok icmp codes for INPUT (rfc4890, 4.4.1 and 4.4.2)
-A ufw6-before-input -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT
-A ufw6-before-input -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT
# codes 0 and 1
-A ufw6-before-input -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT
# codes 0-2 (echo-reply needs to be before INVALID, see above)
-A ufw6-before-input -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT
-A ufw6-before-input -p icmpv6 --icmpv6-type echo-request -j ACCEPT
-A ufw6-before-input -p icmpv6 --icmpv6-type router-solicitation -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-input -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-input -p icmpv6 --icmpv6-type neighbor-solicitation -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-input -p icmpv6 --icmpv6-type neighbor-advertisement -m hl --hl-eq 255 -j ACCEPT
# IND solicitation
-A ufw6-before-input -p icmpv6 --icmpv6-type 141 -m hl --hl-eq 255 -j ACCEPT
# IND advertisement
-A ufw6-before-input -p icmpv6 --icmpv6-type 142 -m hl --hl-eq 255 -j ACCEPT
# MLD query
-A ufw6-before-input -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT
# MLD report
-A ufw6-before-input -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT
# MLD done
-A ufw6-before-input -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT
# MLD report v2
-A ufw6-before-input -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT
# SEND certificate path solicitation
-A ufw6-before-input -p icmpv6 --icmpv6-type 148 -m hl --hl-eq 255 -j ACCEPT
# SEND certificate path advertisement
-A ufw6-before-input -p icmpv6 --icmpv6-type 149 -m hl --hl-eq 255 -j ACCEPT
# MR advertisement
-A ufw6-before-input -p icmpv6 --icmpv6-type 151 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT
# MR solicitation
-A ufw6-before-input -p icmpv6 --icmpv6-type 152 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT
# MR termination
-A ufw6-before-input -p icmpv6 --icmpv6-type 153 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT
...
</div>
</div>
Diese Dateien müssen so modifiziert werden, daß am Ende jeder Zeile des Abschnitts '''# ok icmp codes for INPUT''' das Schlüsselwort '''ACCEPT''' gegen '''DROP''' ausgetauscht wird.
=== Dateien ===
== Sicherheit ==
== Dokumentation ==
=== RFC ===
=== Man-Pages ===
=== Info-Pages ===
== Siehe auch ==
== Links ==
=== Projekt-Homepage ===
=== Weblinks ===
=== Einzelnachweise ===
<references />
== Testfragen ==
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>
=== Kontrollfragen ===
<div class="toccolours mw-collapsible mw-collapsed">
Wie verhält sich die Firewall, wenn sie direkt nach der Installation gestartet wird?
<div class="mw-collapsible-content">
Sämtliche eingehenden Zugriffe werden blockiert, während ausgehende Verbindungen zugelassen werden.
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
Was ist vor dem Starten der Firewall zu beachten, wenn sie aus der Ferne administriert werden soll?
<div class="mw-collapsible-content">
Es ist unbedingt darauf zu achten, daß vor der Aktivierung eine Regel für den SSH-Zugriff definiert wird, um sich nicht selbst auszusperren.
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
Gesetzt den Fall, daß Port 22 für SSH geöffnet werden muß - wie läßt sich einem Brute-Force-Angriff auf diesem Port entgegenwirken?
<div class="mw-collapsible-content">
Mit dem Kommando '''ufw limit ssh/tcp''' läßt sich die Anzahl der erlaubten Zugriffe auf 6 pro 30 Sekunden limitieren.
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
Definieren Sie eine Regel, die den Zugriff auf den Port 12345 nur von der IP-Adresse 60.70.80.90 zulässt!
<div class="mw-collapsible-content">
# ufw allow from 60.70.80.90 to any port 12345
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
Sie betreiben einen Web-Server, der ständig aus dem Netzwerk 60.70.80.0 angegriffen wird.
* Mit welcher Regel können Sie dies unterbinden?
<div class="mw-collapsible-content">
# ufw deny from 60.70.80.0/24
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
Wie müsste die Antwort der vorherigen Frage modifiziert werden, wenn Sie möchten, daß Ihre beste Freundin mit der IP-Adresse 60.70.80.90 auf Ihre Homepage zugreifen kann? Was ist hierbei zu beachten?
<div class="mw-collapsible-content">
# ufw allow from 60.70.80.90 to any port 80,443
# ufw deny from 60.70.80.0/24
Hierbei ist die Reihenfolge der beiden Regeln entscheidend, da die Firewall die erste zutreffende Regel anwendet.
</div>
</div>
[[Kategorie:Entwurf]]
= TMP =
== Status & Reset ==
=== Statusüberprüfung ===
# ufw status
Status: inactive
# ufw status
Status: active
To                        Action      From
--                        ------      ----
22/tcp                    ALLOW      Anywhere
22/tcp (v6)                ALLOW      Anywhere (v6)
# ufw status numbered
Status: active
      To                        Action      From
      --                        ------      ----
[ 1] 22/tcp                    ALLOW IN    Anywhere
[ 2] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To                        Action      From
--                        ------      ----
22/tcp                    ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)
=== Start & Stop von UFW ===
Mit der Option '''disable''' läßt sich die Firewall deaktivieren:
# ufw disable
Firewall stopped and disabled on system startup
Die Aktivierung erfolgt mit dem Schlüsselwort '''enable''':
# ufw enable
Command may disrupt existing ssh connections.
* Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Ein Neustart der Firewall erfolgt mit der Option '''reload''':
# ufw reload
Firewall reloaded
=== Zurücksetzen der Firewall ===
Sollen die Standardeinstellungen der Firewall wiederhergestellt werden, kann dies mit der Option '''reset''' erreicht werden und erfordert eine Bestätigung mit '''y''':
<div class="toccolours mw-collapsible mw-collapsed">
# ufw reset
Resetting all rules to installed defaults.
* This may disrupt existing ssh
connections.
* Proceed with operation (y|n)? y
<div class="mw-collapsible-content">
Backing up 'user.rules' to '/etc/ufw/user.rules.20210222_111416'
Backing up 'before.rules' to '/etc/ufw/before.rules.20210222_111416'
Backing up 'after.rules' to '/etc/ufw/after.rules.20210222_111416'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20210222_111416'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20210222_111416'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20210222_111416'
</div>
</div>
Dies bewirkt eine Deaktivierung der Firewall und das Löschen sämtlicher zuvor definierter Regeln.
* Es erfolgt jedoch eine Sicherung der benutzerdefinierten Regeln in entsprechende Backup-Dateien.
* Zu beachten ist hierbei, daß die Standardrichtlinien, sofern diese geändert wurden, nicht zurückgesetzt werden.
== Grafische Benutzeroberfläche ==
Sollte sich die Konfiguration der ''unkomplizierten'' Firewall über die Kommandozeile dennoch als zu kompliziert erweisen, existiert mit '''gufw''' eine grafisches Frontend, welches ebenfalls über die Paketverwaltung installierbar ist:
# apt install gufw
* Nach dem Start der Anwendung muß die Firewall, wenn nicht bereits via Terminal geschehen, zunächst aktiviert werden.
* Dies geschieht mit dem Schalter neben ''Status:''.
* Ist die Firewall nun aktiv, verhält sie sich gemäß den Standardrichtlinien so, daß ausgehende Verbindungen erlaubt und eingehende blockiert werden.
* Für einen gewöhnlichen Arbeitsplatzrechner könnte die Konfiguration hiermit bereits abgeschlossen sein.
[[Datei:Gufw1.png|mini|ohne|Nach dem Start]]
* Über das Drop-Down-Menü ''Profile:'' lassen sich unterschiedliche Einstellungen für verschiedene Umgebungen aktivieren (''Büro, Zuhause, Öffentlich'').
* Eigene Profile können über ''Bearbeiten --> Einstellungen'' hinzugefügt (+) oder entfernt (-) werden.
* Hier kann auch die Einstellung des Log-Levels (''Niedrig ..
* Vollständig'') verändert, bzw.
* die Protokollierung abgeschaltet werden.
[[Datei:Gufw-Einstellungen.png|mini|ohne|Einstellungen]]
* Mit einem Klick auf die Registerkarte ''Regeln'' wird eine Liste der benutzerdefinierten Regeln angezeigt, die anfänglich noch keine Einträge enthält.
* Hier lassen sich eigene Regeln hinzufügen (+), entfernen (-) und bearbeiten (<big>☼</big>).
[[Datei:Gufw-Regelerstellung.png|1100px|ohne|Definition von Regeln]]
== Referenz ==
=== Programmoptionen ===
{| class="wikitable"
|-
! Option !! Beschreibung
|-
| --help || Auflistung möglicher Optionen
|-
| --dry-run || detaillierte Ansicht einer Regel, ohne diese anzuwenden
|-
| enable || aktiviert die Firewall und deren Ausführung beim Systemstart
|-
| disable || deaktiviert die Firewall und deren Ausführung beim Systemstart
|-
| reload || Neustart der Firewall
|-
| reset || Deaktivierung der Firewall und Zurücksetzen auf Standardeinstellungen
|-
| status || Ausgabe des Status und aktiver Regeln
|-
| show ||
|-
| logging [off, low, medium, high, full] || Log-Level (Ausführlichkeit mit der Zugriffe protokolliert werden)
|-
|}
=== Regeldefinition ===
{| class="wikitable"
|-
! Option !! Beschreibung !! Beispiel
|-
| colspan="3" | '''Aktion'''
|-
| allow || Verbindung erlauben || ufw ''allow'' ssh
|-
| deny || Verbindung ablehnen || ufw ''deny'' http
|-
| limit || erlauben - jedoch maximal 6 Verbindungen innerhalb von 30 Sekunden || ufw ''limit'' ssh
|-
| reject || lehnt die Verbindung ab - informiert jedoch den Absender ||
|-
| colspan="3" | '''Richtung'''
|-
| in || eingehende Verbindung || ufw allow ''in'' to any port 22
|-
| out || ausgehende Verbindung || ufw deny ''out'' to any port 22
|-
| colspan="3" | '''Protokoll'''
|-
| proto [ tcp / udp ] || Regel auf Protokoll beschränken (TCP oder UDP) || ufw allow ''proto tcp'' to any port 22  (kürzer: ufw allow 22/tcp)
|-
| colspan="3" | '''Port'''
|-
| port [N] || Regel gilt für einen Port N || ufw allow 6660
|-
| port [N1],[N2]..[N15] || Regel gilt für eine Liste von Ports (maximal 15) || ufw allow 6660,6670,6680
|-
| port [N1]:[N2] || Regel gilt für einen Port-Bereich von N1 bis N2 || ufw allow 6660:6670
|-
| colspan="3" | '''Adresse'''
|-
| a.b.c.d || Regel auf eine IP-Adresse beschränken || ufw allow from 192.168.100.123
|-
| a.b.c.d/N || Regel für Subnetz || ufw allow from 192.168.100.1/24
|-
| 0.0.0.0 / any || Regel gilt für beliebige Adressen ||
|-
|  ||  ||
|-
|}
=== Konfigurationsdateien ===
{| class="wikitable"
|-
! Datei !! Funktion
|-
| /usr/sbin/ufw || das Programm selbst
|-
| /etc/default/ufw || Haupteinstellungen
|-
| /etc/ufw/ufw.conf || Einstellungen
|-
| /etc/ufw/before.rules || Regeln vor den benutzerdefinierten Regeln
|-
| /etc/ufw/user.rules || mit '''ufw''' erstellte, benutzerdefinierte Regeln
|-
| /etc/ufw/after.rules || Regeln nach den benutzerdefinierten Regeln
|-
| /etc/ufw/applications.d || Anwendungsprofile
|-
! colspan="2" |
|-
| /etc/services (Systemdatei) || Auflistung von Ports & der zugehörigen Dienste
|-
|-
|}
== Links ==
# https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-18-04
[[Kategorie:Firewall]]
[[Kategorie:Firewall]]
{{DEFAULTSORT:ufw}}

Aktuelle Version vom 21. Januar 2024, 11:30 Uhr

Seiten in der Kategorie „Uncomplicated FireWall“

Diese Kategorie enthält nur die folgende Seite.