| 
				   | 
				
| (17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | 
| Zeile 1: | 
Zeile 1: | 
 | {{DISPLAYTITLE:ufw}}
  |  | [[Kategorie:Linux/Firewall]]  | 
 | '''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 ===
  |  | 
 | {| 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)
  |  | 
 | |-
  |  | 
 | |}
  |  | 
 |    |  | 
 | === 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. 
  |  | 
 | * 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.
  |  | 
 |    |  | 
 | ; /etc/ufw/before.rules
  |  | 
 |  ...
  |  | 
 |  # 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
  |  | 
 |  ...
  |  | 
 |    |  | 
 | ; /etc/ufw/before6.rules
  |  | 
 |  ...
  |  | 
 |  # 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
  |  | 
 |  ...
  |  | 
 |    |  | 
 | === Dateien ===
  |  | 
 | {| 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
  |  | 
 | |-
  |  | 
 | | /etc/services (Systemdatei) || Auflistung von Ports & der zugehörigen Dienste
  |  | 
 | |-
  |  | 
 | |}
  |  | 
 |    |  | 
 | == Regeln ==
  |  | 
 | === Verbindungen erlauben ===
  |  | 
 | Jetzt können bzw. sollten alle anderen Regeln erstellt werden. 
  |  | 
 | * Welche Ports von außen erreichbar sein sollen, hängt davon ab, welche Dienste auf dem entsprechenden Server ausgeführt werden. 
  |  | 
 | * Ist dies beispielsweise ein Web-Server, so müssen Regeln definiert werden, die den Zugriff auf Port 80 (HTTP unverschlüsselt) bzw. Port 443 (HTTPS verschlüsselt) gestatten:
  |  | 
 |    |  | 
 |  # ufw allow http
  |  | 
 |  Rule added
  |  | 
 |  Rule added (v6)
  |  | 
 |    |  | 
 |  # ufw allow https
  |  | 
 |  Rule added
  |  | 
 |  Rule added (v6)
  |  | 
 |    |  | 
 | Analog der Regeldefinition für SSH, kann dies auch durch Angabe der zu öffnenden Port-Nummern geschehen:
  |  | 
 |    |  | 
 |  # ufw allow 80
  |  | 
 |  Rule added
  |  | 
 |  Rule added (v6)
  |  | 
 |    |  | 
 |  # ufw allow 443
  |  | 
 |  Rule added
  |  | 
 |  Rule added (v6)
  |  | 
 |    |  | 
 | ==== Port-Bereiche ====
  |  | 
 | Neben der Angabe von Port-Nummern bzw. 
  |  | 
 | * Dienstnamen, besteht auch die Möglichkeit der Angabe eines Port-Bereiches. 
  |  | 
 | * Dies ist für Anwendungen sinnvoll, die mehrere Ports verwenden. 
  |  | 
 | * So können Verbindungen zum X11-Server über die Port-Nummern 6000 bis 6007 erfolgen:
  |  | 
 |    |  | 
 |  # ufw allow 6000:6007/tcp
  |  | 
 |  # ufw allow 6000:6007/udp
  |  | 
 |    |  | 
 | Hierbei ist jedoch darauf zu achten, daß bei der Verwendung von Port-Bereichen die Angabe getätigt wird, für welches Protokoll die Regeln gelten sollen - TCP oder UDP. 
  |  | 
 | * Werden nur Port-Nummern angegeben, erfolgt die Freigabe für jeweils beide Protokolle.
  |  | 
 |    |  | 
 | ==== Spezifische IP-Adressen ====
  |  | 
 | Die Konfiguration ist nicht auf die Angabe von Port-Nummern beschränkt, sondern kann auch über die Angabe von spezifischen IP-Adressen erfolgen. 
  |  | 
 | * Sollen beispielsweise Verbindungen ausgehend von der IP-Adresse ''203.0.113.4'' zugelassen werden, so wird dies durch folgende Regel gewährleistet:
  |  | 
 |    |  | 
 |  # ufw allow from 203.0.113.4
  |  | 
 |  Rule added
  |  | 
 |    |  | 
 | Um den Zugriff noch restriktiver zu gestalten, kann zusätzlich zur IP-Adresse ein Port angegeben werden. 
  |  | 
 | * Dies wird mit '''to any port''' gefolgt von der gewünschten Port-Nummer bewerkstelligt:
  |  | 
 |    |  | 
 |  # ufw allow from 203.0.113.4 to any port 22
  |  | 
 |  Rule added
  |  | 
 |    |  | 
 | ==== Subnetze ====
  |  | 
 | Soll der Zugriff allen IP-Adressen eines bestimmten Subnetzes gestattet werden, kann dies durch die Angabe einer Netzmaske nach der [https://de.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR-Notation] konfiguriert werden. 
  |  | 
 | * Beispielsweise gestattet der folgende Befehl den Zugriff von Geräten des IP-Adressbereiches von 203.0.113.'''1''' bis 203.0.113.'''254''':
  |  | 
 |    |  | 
 |  # ufw allow from 203.0.113.0/24
  |  | 
 |    |  | 
 | Auch hier läßt sich der Zugriff auf einen spezifischen Port beschränken:
  |  | 
 |    |  | 
 |  # ufw allow from 203.0.113.0/24 to any port 22
  |  | 
 |    |  | 
 | ==== Spezifische Netzwerkschnittstellen ====
  |  | 
 | Verfügt ein Gerät über mehrere Netzwerkschnittstellen, so kann mit der Angabe von '''allow in on''' der Zugriff auf eine dieser Schnittstellen beschränkt werden. 
  |  | 
 | * Der anzugebende Name der entsprechenden Schnittstelle läßt sich mit dem Befehl '''ip a''' ermitteln:
  |  | 
 |    |  | 
 |  $ ip a
  |  | 
 |      ...
  |  | 
 |  2: '''eth0''': <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  |  | 
 |     ...
  |  | 
 |  3: '''wlan0''': <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
  |  | 
 |     ...
  |  | 
 |    |  | 
 | Für einen Web-Server mit der öffentlichen Netzwerkschnittstelle '''eth0''' kann der Verkehr über Port 80 (HTTP) durch folgende Regel zugelassen werden:
  |  | 
 |    |  | 
 |  # ufw allow in on eth0 to any port 80
  |  | 
 |    |  | 
 | === Verbindungen verbieten ===
  |  | 
 | Ebenso, wie das explizite Zulassen von Verbindungen, können auch Regeln erstellt werden, die bestimmte Zugriffe verbieten. 
  |  | 
 | * An die Stelle von Regeln, die das Schlüsselwort '''allow''' verwenden, treten nun solche, die das Schlüsselwort '''deny''' enthalten. 
  |  | 
 | * Mit solchen Regeln bietet sich beispielsweise die Möglichkeit, einem IP-Adressbereich den Zugriff zu gewähren, während einzelne Geräte aus diesem davon ausgenommen werden:
  |  | 
 |    |  | 
 |  # ufw deny from 192.168.200.10 to any port 22
  |  | 
 |  # ufw deny from 192.168.200.20 to any port 22
  |  | 
 |  # ufw allow from 192.168.200.0/24 to any port 22 proto tcp
  |  | 
 |    |  | 
 | Hierbei ist jedoch unbedingt die Reihenfolge zu beachten, in der die Regeln erstellt werden, da die Regel Anwendung findet, die auf die jeweilige Situation zuerst passt.
  |  | 
 |    |  | 
 | === Regeln löschen ===
  |  | 
 |    |  | 
 | Bereits erstellte Regeln lassen sich mit dem Schlüsselwort '''delete''' auch wieder entfernen. 
  |  | 
 | * Dies kann über Angabe der Regelnummer bzw. 
  |  | 
 | * der vollständigen Regel erreicht werden.
  |  | 
 |    |  | 
 | ==== Löschen mit Regelnummer ====
  |  | 
 | Zur Ermittlung der Regelnummer wird '''ufw status''' mit dem Schalter '''numbered''' aufgerufen:
  |  | 
 |    |  | 
 |  # ufw status numbered
  |  | 
 |  Status: active
  |  | 
 |  
  |  | 
 |       To                         Action      From
  |  | 
 |       --                         ------      ----
  |  | 
 |  [1] 22/tcp                     ALLOW IN    Anywhere
  |  | 
 |  [2] 80/tcp                     ALLOW IN    Anywhere
  |  | 
 |  [3] 443/tcp                    ALLOW IN    Anywhere
  |  | 
 |  [4] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
  |  | 
 |  [5] 80/tcp (v6)                ALLOW IN    Anywhere (v6)
  |  | 
 |  [6] 443/tcp (v6)               ALLOW IN    Anywhere (v6)
  |  | 
 |    |  | 
 | Das Löschen einer Regel erfolgt anschließend durch das Kommando '''ufw delete''', gefolgt von der jeweiligen Nummer der Regel. 
  |  | 
 | * Um unbeabsichtigtes Löschen zu vermeiden, muß der Vorgang mit ('''y''')es bestätigt werden:
  |  | 
 |    |  | 
 |  # ufw delete 2
  |  | 
 |  Deleting:
  |  | 
 |   allow 80/tcp
  |  | 
 |  Proceed with operation (y|n)? y
  |  | 
 |  Rule deleted
  |  | 
 |    |  | 
 | Eine erneute Statusabfrage bestätigt das Entfernen der Regel:
  |  | 
 |    |  | 
 |  # ufw status numbered
  |  | 
 |  Status: active
  |  | 
 |  
  |  | 
 |       To                         Action      From
  |  | 
 |       --                         ------      ----
  |  | 
 |  [1] 22/tcp                     ALLOW IN    Anywhere
  |  | 
 |  [2] 443/tcp                    ALLOW IN    Anywhere
  |  | 
 |  [3] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
  |  | 
 |  [4] 80/tcp (v6)                ALLOW IN    Anywhere (v6)
  |  | 
 |  [5] 443/tcp (v6)               ALLOW IN    Anywhere (v6)
  |  | 
 |    |  | 
 | ==== Löschen mit Regel ====
  |  | 
 | Die Alternative zum Löschen über die Regelnummer ist, daß dem Kommando '''ufw deny''' die vollständige Regel hintangestellt wird:
  |  | 
 |    |  | 
 |  # ufw status
  |  | 
 |  Status: active
  |  | 
 |  
  |  | 
 |  To                         Action      From
  |  | 
 |  --                         ------      ----
  |  | 
 |  22/tcp                     ALLOW       Anywhere
  |  | 
 |  80                         ALLOW       Anywhere
  |  | 
 |  80/tcp                     ALLOW       Anywhere
  |  | 
 |  22/tcp (v6)                ALLOW       Anywhere (v6)
  |  | 
 |  80/tcp (v6)                ALLOW       Anywhere (v6)
  |  | 
 |    |  | 
 |  #  ufw delete allow http
  |  | 
 |  Rule deleted
  |  | 
 |  Rule deleted (v6)
  |  | 
 |    |  | 
 | Hinweis: Es werden jeweils beide Regeln (IPv4 & IPv6) gelöscht. 
  |  | 
 | * Hierbei erfolgt keine Bestätigungsabfrage.
  |  | 
 |    |  | 
 |  # ufw status
  |  | 
 |  Status: active
  |  | 
 |  
  |  | 
 |  To                         Action      From
  |  | 
 |  --                         ------      ----
  |  | 
 |  22/tcp                     ALLOW       Anywhere
  |  | 
 |  22/tcp (v6)                ALLOW       Anywhere (v6)
  |  | 
 |    |  | 
 | === 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 || 
  |  | 
 | |-
  |  | 
 | |}
  |  | 
 |    |  | 
 | == 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]]
  |  | 
 |    |  | 
 | == Sicherheit ==
  |  | 
 |    |  | 
 | == Dokumentation ==
  |  | 
 | === RFC ===
  |  | 
 | === Man-Pages ===
  |  | 
 | === Info-Pages ===
  |  | 
 | == Siehe auch ==
  |  | 
 | == Links ==
  |  | 
 | === Projekt-Homepage ===
  |  | 
 | === Weblinks ===
  |  | 
 | # https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-18-04
  |  | 
 |    |  | 
 | === 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]]
  |  | 
 |    |  | 
 | [[Kategorie:Firewall]]
  |  | 
 | {{DEFAULTSORT:ufw}}
  |  |