UFW pour OpenVPN

17

Je veux configurer ufw (pare-feu simple) pour OpenVPN.

Les connexions ne sont autorisées que via OpenVPN. Tout le reste doit être bloqué. Donc, si OpenVPN est déconnecté -> pas d'internet! J'ai trouvé ce script en ligne et je veux savoir s'il est assez bon. Ou dois-je ajouter plus de règles?

#!/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

Source: http://pastebin.com/AUHh6KnV

Alex M.
la source
Semble bien! Juste essayer de voir si cela fonctionne, il y a des problèmes , vous pouvez toujours désactiver l' ufwaide sudo ufw disableet de supprimer toutes les règles de pare - feu à l' aide sudo ufw --force reset. Qu'est ce qui pourrait aller mal? ;-)
ntninja
2
Je pourrais éviter d'autoriser tout le trafic entrant, car cela seul permettra à openvpn de fonctionner.
JVE999
2
vous devez toujours refuser les connexions entrantes par défaut ...
n00dl3
Ce script est clairement conçu à des fins de partage de fichiers. Refuser les connexions entrantes va à l'encontre de l'objectif. Il vous donne le comportement "killswitch" des applications VPN commerciales - ni plus, ni moins.
emk2203
@ emk2203 non, il refuse le trafic entrant en dehors du tunnel.
berbt

Réponses:

8

La configuration peut être plus restrictive

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
la source
Vous essayez toujours de comprendre le jargon du pare-feu, mais ne voudriez-vous pas, en théorie, autoriser l'activation tun0comme moyen de bloquer les connexions entrantes du VPN? Comme dans ufw deny in on tun0,?
Matt
@MattBorja si vous ufw default deny incominget ufw deny in on tun0, vous n'obtiendrez aucune connexion entrante. Certaines interfaces devraient autoriser le trafic entrant, dans ce cas, nous voulons que ce soit les VPN tun0.
berbt
Tu as raison, je ne l'ai pas vu. Ignorer :)
Matt
En fait, il semble que ce que je «questionnais» était la ufw allow in on tun0ligne.
Matt
7

Il est fortement recommandé de ne PAS utiliser ces deux commandes :

ufw allow incoming
ufw default allow in on tun0

Permettre en défait le but d'avoir un pare-feu. Il est incorrect que vous ayez besoin de «autoriser sur tun0» pour recevoir des paquets de retour. Vous souhaitez uniquement recevoir les connexions que vous avez demandées, au lieu de permettre au monde entier de se connecter à vous. Permettre le fera. Testez la configuration proposée ci-dessous et voyez.

Voici un exemple pour une série de commandes UFW à utiliser avec un pare-feu:

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

Exemple de résultat:

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

REMARQUE: -Vos interfaces peuvent être différentes, par exemple ubuntu 16.12 utilise eno1 et wlp3s0b1. Utilisez la commande "ifconfig" pour voir vos interfaces réelles. -1197 UDP est assez par défaut, mais vous devrez peut-être le changer pour votre VPN (par exemple 443 TCP). -Je supprime généralement ipv6 (sudo ufw delete 4, repeat x3)

Ce que cela fait: -Il autorise les connexions sortantes via le tunnel VPN, tout en bloquant tout sauf le tunnel VPN et les connexions DNS sur Ethernet / wifi. Avertissement ci-dessous sur le problème DNS.

Avertissement: Cet exemple autorise 53 demandes DNS afin que openvpn (par exemple vpn.somevpnprovider.com) puisse demander l'adresse IP et établir une connexion. Le compromis est le potentiel de fuite DNS. Utilisez dnsleaktest.com pour vous assurer que vos paramètres VPN tunnelent vos requêtes DNS. Pour les utilisateurs prudents / paranoïaques, ignorez l'autorisation sur 53 et désactivez votre pare-feu pour vous connecter, puis réactivez-le une fois connecté. Pour mes raisons VPN, je choisis de ne pas le faire car il est plus probable que j'oublie complètement le pare-feu (par exemple, DNS fuira de toute façon si openvpn est mal configuré).

MARACA_MAGICIAN
la source