Ein gutes Mittel um einen Linux-Server einfach abzusichern ist die UFW (Uncomplicated Firewall).
UFW ist ein Programm zum Verwalten der netfilter firewall des Linux-Kernels, es nutzt iptables und vereinfacht die Konfiguration der Regeln ungemein.
Installation
UFW ist in den Debian-Paketen (wie auch in Ubuntu) bereits enthalten, daher kann das Tool einfach installiert werden:
root@myserver:~# apt-get install ufw
IPv6 bei Bedarf deaktivieren
Um IPv6 zu deaktivieren, ändern in der Datei /etc/default/ufw die Zeile IPV6= yes auf IPV6=no
root@myserver:~# cat /etc/default/ufw
# /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=no
.
.
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
Die Konfigurationsdateien in diesem Verzeichnis können wir durch eigene Einträge ergänzen oder wir können auch neue Konfigurationsdateien mit unseren Einträgen erstellen.
Hinzufügen und Löschen von Regeln
In diesem Beispiel wird der SSH-Zugang für das lokale Netzwerk (192.168.0.0/24) und ein Webzugriff für alle eingerichtet, IPv6 wurde deaktiviert:
root@myserver:~# ufw allow from 192.168.0.0/24 to any app SSH
Rule added
root@myserver:~# ufw allow 'WWW Full'
Rule added
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 Full ALLOW Anywhere
Einen detailierten Status mit Angabe der Ports können wir wie folgt abfragen:
root@myserver:~# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp (SSH) ALLOW IN 192.168.0.0/24
80,443/tcp (WWW Full) ALLOW IN Anywhere
Um eine Regel wieder zu löschen rufen wir den Status wie folgt auf:
root@myserver:~# ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] SSH ALLOW IN 192.168.0.0/24
[ 2] WWW Full ALLOW IN Anywhere
Nun können wir über die Nummer der Regel diese löschen:
root@myserver:~# ufw delete 2
Deleting:
allow 'WWW Full'
Proceed with operation (y|n)?y
Rule deleted
Weitere Beispiele
Ausgehender Pakete zu 192.168.0.1 blocken:
ufw deny out from any to 192.168.0.1
Eingehende Pakete auf Port 12345 zulassen:
ufw allow to any port 12345
Eingehende UDP Pakete auf Port 54321 zulassen:
ufw allow proto udp to any port 54321
Eine neue Regel an erster Postition einfügen:
ufw prepend allow ...
Eine neue Regel vor der zweiten Regel einfügen:
ufw insert 2 allow ...