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