Microblog #02: UFW verstehen und einrichten

Kurzbeitrag rund um nützliche UFW Commands.

Microblog #02: UFW verstehen und einrichten

Vorwort

Mir geht es nicht darum UFW bis ins Detail abzubilden, vielmehr ein Nachschlagewerk zu erstellen in dem man bei Bedenken schnell und übersichtlich suchen kann.

Konfiguration

Dienste erlauben

Mit dem Command ufw app list können installierte Anwendungen gelistet werden, die ein Profil für UFW mitbringen.
Alternativ kann der Port (mit entsprechendem Protokoll) ebenso per Hand freigegeben werden.

Nachfolgende Commands erlauben beispielhaft SSH Traffic auf Port 22 via TCP.

sudo ufw allow ssh comment 'SSH Server'
sudo ufw allow 22/tcp comment 'SSH Server'

UFW Defaults

Standardmäßig allen eingehenden Traffic blockieren

sudo ufw default deny

UFW starten, bitte stellt sicher, dass ihr euch nicht selbst aussperrt, SSH Zugang sollte als Regel bereits angelegt sein!

sudo ufw enable

IP's sperren

Mit nachstehendem Command kann eine IP, aber auch ein ganzes Subnet gesperrt werden:

sudo ufw deny from 123.123.123.123 comment 'Reason'

IP's erlauben

Mit nachstehendem Command kann eine IP oder ein Subnet zum Zugriff berechtigt werden:

sudo ufw allow from 123.123.123.123 comment 'Reason'

Portranges erlauben

Natürlich ist es auch möglich eine Reihe an Ports auf einmal zu öffnen, wenn es eine Anwendung erfordert:

# Ports 8000 bis 9000 mit TCP erlauben
sudo ufw allow 8000:9000/tcp comment 'Application XY'
# Ports 8000 bis 9000 mit UDP erlauben
sudo ufw allow 8000:9000/udp comment 'Application XY'

Status der UFW ausgeben

Der Output könnte dann wie folgt aussehen:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
51820/udp                  ALLOW       Anywhere                  
80,443/tcp                 ALLOW       173.245.48.0/20            # Cloudflare IP
80,443/tcp                 ALLOW       103.21.244.0/22            # Cloudflare IP
80,443/tcp                 ALLOW       103.22.200.0/22            # Cloudflare IP
80,443/tcp                 ALLOW       103.31.4.0/22              # Cloudflare IP
80,443/tcp                 ALLOW       141.101.64.0/18            # Cloudflare IP
80,443/tcp                 ALLOW       108.162.192.0/18           # Cloudflare IP
80,443/tcp                 ALLOW       190.93.240.0/20            # Cloudflare IP
80,443/tcp                 ALLOW       188.114.96.0/20            # Cloudflare IP
80,443/tcp                 ALLOW       197.234.240.0/22           # Cloudflare IP
80,443/tcp                 ALLOW       198.41.128.0/17            # Cloudflare IP
80,443/tcp                 ALLOW       162.158.0.0/15             # Cloudflare IP
80,443/tcp                 ALLOW       172.64.0.0/13              # Cloudflare IP
80,443/tcp                 ALLOW       131.0.72.0/22              # Cloudflare IP
80,443/tcp                 ALLOW       104.16.0.0/13              # Cloudflare IP
80,443/tcp                 ALLOW       104.24.0.0/14              # Cloudflare IP
80,443/tcp                 ALLOW       12.34.56.78               # Prometheus Server
22/tcp (v6)                ALLOW       Anywhere (v6)             
51820/udp (v6)             ALLOW       Anywhere (v6)             
80,443/tcp                 ALLOW       2400:cb00::/32             # Cloudflare IP
80,443/tcp                 ALLOW       2606:4700::/32             # Cloudflare IP
80,443/tcp                 ALLOW       2803:f800::/32             # Cloudflare IP
80,443/tcp                 ALLOW       2405:b500::/32             # Cloudflare IP
80,443/tcp                 ALLOW       2405:8100::/32             # Cloudflare IP
80,443/tcp                 ALLOW       2a06:98c0::/29             # Cloudflare IP
80,443/tcp                 ALLOW       2c0f:f248::/32             # Cloudflare IP

Regeln löschen

Zuerst bestehende Regeln nummeriert ausgeben:

sudo ufw status numbered

Anschließend die passende Nummer notieren und im Folgecommand ersetzen:

sudo ufw delete <Nummer>

Webserver

Webserver laufen für gewöhnlich auf den Ports 80 und 443 jeweils via TCP. Dieser Traffic kann über folgende Commands erlaubt werden:

Webtraffic von allen IPs zulassen

sudo ufw allow proto tcp from any to any port 80,443 comment 'Webserver'

Webtraffic nur von bestimmten IPs zulassen

sudo ufw allow proto tcp from 123.123.123.123 to any port 80,443 comment 'Restricted Access'

MySQL / MariaDB

Zugang zum lokalen Datenbankserver vom LAN erlauben, hierbei habe ich das gesamte 10.0.0.0/8 Subnet angegeben, dies kann enstprechend eingegrenzt werden.

sudo ufw allow from 10.0.0.0/8 to any port 3306 comment 'Datenbankserver XY'

Verkehr auf bestimmte Interfaces beschränken

Port 22 / TCP auf Interface eth0 erlauben:

sudo ufw allow in on eth0 to any port 22

Firewall Einstellungen

Starten / Stoppen / Status von UFW ausgeben lassen

sudo ufw {start|stop|status}

Firewall neu laden - Nützlich nach dem Hinzufügen / Editieren von Regeln

sudo ufw reload

UFW zurücksetzen

sudo ufw reset


Bildquelle: https://images.unsplash.com/photo-1606606767399-01e271823a2e