UFW für OpenVPN

17

Ich möchte ufw (unkomplizierte Firewall) für OpenVPN konfigurieren.

Verbindungen sind nur über OpenVPN zulässig. Alles andere sollte gesperrt werden. Also wenn OpenVPN nicht verbunden ist -> kein Internet! Ich habe dieses Skript online gefunden und möchte wissen, ob es gut genug ist. Oder muss ich weitere Regeln hinzufügen?

#!/bin/bash
###########################################
#          Created by Thomas Butz         #
#   E-Mail: btom1990(at)googlemail.com    #
#  Feel free to copy & share this script  #
###########################################

# Adapt this value to your config!
VPN_DST_PORT=3478

# Don't change anything beyond this point
###########################################

# Check for root priviliges
if [[ $EUID -ne 0 ]]; then
   printf "Please run as root:\nsudo %s\n" "${0}"
   exit 1
fi


# Reset the ufw config
ufw --force reset

# let all incoming traffic pass
ufw default allow incoming
# and block outgoing by default
ufw default deny outgoing

# Every communiction via VPN is considered to be safe
ufw allow out on tun0

# Don't block the creation of the VPN tunnel
ufw allow out $VPN_DST_PORT
# Don't block DNS queries
ufw allow out 53

# Allow local IPv4 connections
ufw allow out to 10.0.0.0/8
ufw allow out to 172.16.0.0/12
ufw allow out to 192.168.0.0/16
# Allow IPv4 local multicasts
ufw allow out to 224.0.0.0/24
ufw allow out to 239.0.0.0/8

# Allow local IPv6 connections
ufw allow out to fe80::/64
# Allow IPv6 link-local multicasts
ufw allow out to ff01::/16
# Allow IPv6 site-local multicasts
ufw allow out to ff02::/16
ufw allow out to ff05::/16

# Enable the firewall
ufw enable

Quelle: http://pastebin.com/AUHh6KnV

Alex M.
quelle
Sieht gut aus! Probieren Sie einfach aus, ob es funktioniert. Es gibt Probleme, die Sie jederzeit ufwmithilfe von deaktivieren sudo ufw disableund alle Firewall-Regeln mithilfe von entfernen können sudo ufw --force reset. Was könnte möglicherweise falsch laufen? ;-)
ntninja
2
Ich könnte vermeiden, den gesamten eingehenden Verkehr zuzulassen, da dies allein openvpn ermöglichen wird, zu arbeiten.
JVE999,
2
Sie sollten eingehende Verbindungen immer standardmäßig
ablehnen
Dieses Skript wurde eindeutig für Filesharing-Zwecke erstellt. Das Ablehnen eingehender Verbindungen ist gegen den Zweck. Es gibt Ihnen das "Killswitch" -Verhalten kommerzieller VPN-Anwendungen - nicht mehr und nicht weniger.
emk2203
@ emk2203 nein, es lehnt eingehenden Verkehr außerhalb des Tunnels ab.
berbt

Antworten:

8

Die Konfiguration kann restriktiver sein

ufw --force reset

ufw default deny incoming # Use the VPN tunnel for all traffic
ufw default deny outgoing

ufw allow out on tun0
ufw allow in on tun0

ufw allow out $port/$protocol # e.g. 1234/udp, depending on your OpenVPN client config

# Prefer resolved hosts to connect to your VPN, enable only if your VPN provider doesn't give you that option
#ufw allow out 53

# Allow local IPv4 connections, enable as needed, set specific IPs or tighter subnet masks if possible
#ufw allow out to 10.0.0.0/8
#ufw allow out to 172.16.0.0/12
#ufw allow out to 192.168.0.0/16
# Allow IPv4 local multicasts
#ufw allow out to 224.0.0.0/24
#ufw allow out to 239.0.0.0/8
# Allow local IPv6 connections
#ufw allow out to fe80::/64
# Allow IPv6 link-local multicasts
#ufw allow out to ff01::/16
# Allow IPv6 site-local multicasts
#ufw allow out to ff02::/16
#ufw allow out to ff05::/16

# Enable the firewall
ufw enable
berbt
quelle
Versuchen Sie immer noch, den Firewall-Jargon zu verstehen, aber möchten Sie möglicherweise nicht zulassen, dass tun0eingehende Verbindungen über das VPN blockiert werden ? Wie in ufw deny in on tun0?
Matt
@MattBorja Wenn Sie ufw default deny incomingund ufw deny in on tun0, erhalten Sie keine eingehenden Verbindungen. Einige Schnittstellen sollten eingehenden Datenverkehr zulassen. In diesem Fall sollen es die VPNs sein tun0.
Berbt
Du hast recht, das habe ich irgendwie nicht gesehen. Missachtung :)
Matt
Eigentlich sieht es so aus, als hätte ich die ufw allow in on tun0Zeile "hinterfragt" .
Matt
7

Es wird dringend empfohlen, diese beiden Befehle NICHT zu verwenden :

ufw allow incoming
ufw default allow in on tun0

Niederlagen zulassen, um eine Firewall zu haben. Es ist falsch, dass Sie "allow in on tun0" benötigen, um Rückpakete zu empfangen. Sie möchten nur Verbindungen erhalten, nach denen Sie gefragt haben, und nicht, dass die ganze Welt eine Verbindung zu Ihnen aufbaut. Erlauben wird dies tun. Testen Sie die vorgeschlagene Konfiguration unten und sehen Sie.

Hier ist ein Beispiel für eine Reihe von UFW-Befehlen zur Verwendung mit einer Firewall:

sudo ufw enable
sudo ufw --force reset
sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow out on tun0
sudo ufw allow out on eth0 to any port 53,1197 proto udp
sudo ufw allow out on wlan0 to any port 53,1197 proto udp
sudo ufw status verbose

Beispiel Ergebnis:

Status: active
Logging: on (low)
Default: deny (incoming), deny (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
Anywhere                   ALLOW OUT   Anywhere on tun0          
53,1197/udp                ALLOW OUT   Anywhere on eth0
53,1197/udp                ALLOW OUT   Anywhere on wlan0
Anywhere (v6)              ALLOW OUT   Anywhere (v6) on tun0
53,1197/udp (v6)           ALLOW OUT   Anywhere (v6) on eth0
53,1197/udp (v6)           ALLOW OUT   Anywhere (v6) on wlan0

HINWEIS: -Ihre Schnittstellen können unterschiedlich sein, zum Beispiel verwendet Ubuntu 16.12 eno1 und wlp3s0b1. Verwenden Sie den Befehl "ifconfig", um Ihre tatsächlichen Schnittstellen anzuzeigen. -1197 UDP ist ziemlich voreingestellt, aber Sie müssen es möglicherweise für Ihr VPN ändern (z. B. 443 TCP). -Ich lösche normalerweise ipv6 (sudo ufw delete 4, repeat x3)

Was dies bewirkt: -Es erlaubt ausgehende Verbindungen durch den VPN-Tunnel, während alles außer dem VPN-Tunnel und den DNS-Verbindungen über Ethernet / WLAN blockiert wird. Warnung unten zum DNS-Problem.

Warnung: In diesem Beispiel ist für DNS-Anforderungen die Einstellung 53 zulässig, damit openvpn (z. B. vpn.somevpnprovider.com) die IP-Adresse anfordern und eine Verbindung herstellen kann. Der Kompromiss ist das Potenzial für DNS-Leckagen. Verwenden Sie dnsleaktest.com, um sicherzustellen, dass Ihre VPN-Einstellungen Ihre DNS-Anforderungen tunneln. Wenn Sie vorsichtig / paranoid sind, überspringen Sie das Zulassen von 53 und schalten Sie stattdessen Ihre Firewall aus, um eine Verbindung herzustellen, und schalten Sie sie wieder ein, sobald Sie eine Verbindung hergestellt haben. Aus VPN-Gründen entscheide ich mich dagegen, da ich die Firewall mit größerer Wahrscheinlichkeit komplett vergesse (z. B. leckt DNS ohnehin, wenn openvpn falsch konfiguriert ist).

MARACA_MAGICIAN
quelle