Server mit UFW (Uncomplicated Firewall) absichern

Ein gutes Mittel um einen Linux-Server einfach abzusichern ist die UFW (Uncomplicated Firewall).
UFW ist ein Frontend für iptables, welches ein Programm zum Bearbeiten der Regeln (tables) der Firewall des Linux-Kernes ist.
Die Konfiguration von Firewall-Regeln wird durch die UFW stark vereinfacht.

Installation

Da UFW in den Debian-Paketen enthalten ist, kann das Tool einfach installiert werden:

root@myserver:~# apt-get install ufw

Aufrufen der Hilfe

Eine einfache Hilfe finden wir so:

root@myserver:~# ufw help

Usage: ufw COMMAND

Commands:
 enable                          enables the firewall
 disable                         disables the firewall
 default ARG                     set default policy
 logging LEVEL                   set logging to LEVEL
 allow ARGS                      add allow rule
 deny ARGS                       add deny rule
 reject ARGS                     add reject rule
 limit ARGS                      add limit rule
 delete RULE|NUM                 delete RULE
 insert NUM RULE                 insert RULE at NUM
 route RULE                      add route RULE
 route delete RULE|NUM           delete route RULE
 route insert NUM RULE           insert route RULE at NUM
 reload                          reload firewall
 reset                           reset firewall
 status                          show firewall status
 status numbered                 show firewall status as numbered list of RULES
 status verbose                  show verbose firewall status
 show ARG                        show firewall report
 version                         display version information

Application profile commands:
 app list                        list application profiles
 app info PROFILE                show information on PROFILE
 app update PROFILE              update PROFILE
 app default ARG                 set default application policy

Vorgefertigte Profile

Die UFW hat vorgefertigte Profile für verschiedene Dienste, Applications genannt, welche wir wie folgt auflisten können:

root@myserver:~# ufw app list
Available applications:
  AIM
  Bonjour
  CIFS
  DNS
  Deluge
  IMAP
  IMAPS
  IPP
  KTorrent
  Kerberos Admin
  Kerberos Full
  Kerberos KDC
  Kerberos Password
  LDAP
  LDAPS
  LPD
  MSN
  MSN SSL
  Mail submission
  NFS
  OpenSSH
  POP3
  POP3S
  PeopleNearby
  SMTP
  SSH
  Socks
  Telnet
  Transmission
  Transparent Proxy
  VNC
  WWW
  WWW Cache
  WWW Full
  WWW Secure
  XMPP
  Yahoo
  qBittorrent
  svnserve

Die Dienste verwenden die Standardports, so z.B. Port 22 für SSH, Port 80 für WWW oder Port 443 für WWW Secure.

Weitere Informationen bezüglich der Ports finden wir in den Konfigurationsdateien:

root@myserver:~# cd /etc/ufw/applications.d
root@myserver:/etc/ufw/applications.d# ls -al
insgesamt 52
drwxr-xr-x 2 root root 4096 Jun  7 13:58 .
drwxr-xr-x 3 root root 4096 Feb  7  2018 ..
-rw-r--r-- 1 root root  145 Nov 18  2017 openssh-server
-rw-r--r-- 1 root root  353 Feb 18  2016 ufw-bittorent
-rw-r--r-- 1 root root  627 Feb 18  2016 ufw-chat
-rw-r--r-- 1 root root  513 Feb 18  2016 ufw-directoryserver
-rw-r--r-- 1 root root   89 Feb 18  2016 ufw-dnsserver
-rw-r--r-- 1 root root  358 Feb 18  2016 ufw-fileserver
-rw-r--r-- 1 root root  212 Feb 18  2016 ufw-loginserver
-rw-r--r-- 1 root root  524 Feb 18  2016 ufw-mailserver
-rw-r--r-- 1 root root  131 Feb 18  2016 ufw-printserver
-rw-r--r-- 1 root root  155 Feb 18  2016 ufw-proxyserver
-rw-r--r-- 1 root root  320 Feb 18  2016 ufw-webserver
root@myserver:/etc/ufw/applications.d#  cat ufw-webserver
[WWW]
title=Web Server
description=Web server
ports=80/tcp

[WWW Secure]
title=Web Server (HTTPS)
description=Web Server (HTTPS)
ports=443/tcp

[WWW Full]
title=Web Server (HTTP,HTTPS)
description=Web Server (HTTP,HTTPS)
ports=80,443/tcp

[WWW Cache]
title=Web Server (8080)
description=Web Server (8080)
ports=8080/tcp
root@myserver:/etc/ufw/applications.d#

Die Konfigurationsdateien diesem Verzeichnis können wir durch eigene Einträge ergänzen oder auch neue Konfigurationsdateien mit unseren Einträgen erstellen.

Konfiguration

In diesem Beispiel wird der SSH-Zugang für das lokale Netzwerk (192.168.0.0/24) und ein Webzugriff für alle eingerichtet:

root@myserver:~# ufw allow from 192.168.0.0/24 to any app SSH
Rule added
root@myserver:~#  ufw allow 'WWW Full'
Rule added
Rule added (v6)

Jetzt können wir die Firewall starten, wie Warnung müssen wir mit ‚y‘ bestätigen:

root@myserver:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Den Status können wir wie folgt abfragen:

root@myserver:~# ufw status
Status: active

To                         Action      From
--                         ------      ----
SSH                        ALLOW       192.168.0.0/24
WWW                        ALLOW       Anywhere
WWW Full (v6)              ALLOW       Anywhere (v6)

Weitere Beispiele

Ausgehender Verkehr zu 192.168.0.1 blockieren:

ufw deny out from any to 192.168.0.1