UFW per OpenVPN


17

Voglio configurare ufw (firewall semplice) per OpenVPN.

Le connessioni sono consentite solo tramite OpenVPN. Tutto il resto dovrebbe essere bloccato. Quindi se OpenVPN è disconnesso -> no internet! Ho trovato questo script online e voglio sapere se è abbastanza buono. O devo aggiungere più regole?

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

Fonte: http://pastebin.com/AUHh6KnV


Sembra a posto! Prova a vedere se funziona, ci sono problemi che puoi sempre disabilitare ufwusando sudo ufw disablee rimuovi tutte le regole del firewall usando sudo ufw --force reset. Che cosa potrebbe andare storto? ;-)
ntninja,

2
Potrei evitare di consentire tutto il traffico in entrata, poiché solo questo consentirà a openvpn di funzionare.
JVE999,

2
dovresti sempre negare le connessioni in entrata per impostazione predefinita ...
n00dl3

Questo script è chiaramente realizzato per scopi di condivisione di file. Negare le connessioni in entrata vanifica lo scopo. Ti dà il comportamento "killswitch" delle applicazioni VPN commerciali - non di più, non di meno.
emk2203,

@ emk2203 no, nega il traffico in entrata all'esterno del tunnel.
Berbt,

Risposte:


8

La configurazione può essere più restrittiva

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

Stai ancora cercando di capire il linguaggio dei firewall, ma ipoteticamente non vorresti consentire l'accesso tun0come mezzo per bloccare le connessioni in entrata dalla VPN? Come in ufw deny in on tun0?
Matt,

@MattBorja se tu ufw default deny incominge ufw deny in on tun0, non otterrai alcuna connessione in entrata. Alcune interfacce dovrebbero consentire il traffico in entrata, in questo caso vogliamo che sia la VPN tun0.
berbt

Hai ragione, in qualche modo non l'ho visto. Ignora :)
Matt,

In realtà, sembra che quello che stavo "interrogando" fosse la ufw allow in on tun0linea.
Matt,

7

La raccomandazione forte è di NON usare questi due comandi :

ufw allow incoming
ufw default allow in on tun0

Consentire in sconfitte lo scopo di avere un firewall. Non è corretto che sia necessario "consentire l'accesso su tun0" per ricevere i pacchetti di ritorno. Desideri ricevere solo le connessioni richieste, anziché consentire a tutto il mondo di connettersi a te. Permettere di farlo lo farà. Prova la configurazione proposta di seguito e vedi.

Ecco un esempio di una serie di comandi UFW da utilizzare con un 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

Risultato di esempio:

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

NOTA: -Le tue interfacce possono essere diverse, ad esempio ubuntu 16.12 usa eno1 e wlp3s0b1. Utilizzare il comando "ifconfig" per visualizzare le interfacce effettive. -1197 UDP è abbastanza predefinito, ma potrebbe essere necessario modificarlo per la tua VPN (ad es. 443 TCP). - Solitamente cancello ipv6 (sudo ufw cancella 4, ripeti x3)

Cosa fa: -Consente le connessioni in uscita attraverso il tunnel VPN, bloccando tutto tranne il tunnel VPN e le connessioni DNS su Ethernet / Wi-Fi. Avviso di seguito sul problema DNS.

Avvertenza: questo esempio consente 53 per le richieste DNS in modo che openvpn (ad esempio vpn.somevpnprovider.com) possa richiedere l'indirizzo IP e stabilire una connessione. Il compromesso è il potenziale per la perdita di DNS. Usa dnsleaktest.com per assicurarti che le tue impostazioni VPN effettuino il tunneling delle tue richieste DNS. Per i cauti / paranoici, salta l'output su 53 e disattiva invece il firewall per connettersi, quindi riaccendi una volta connesso. Per i miei motivi VPN, scelgo di non farlo poiché è più probabile che dimenticherò completamente il firewall (ad esempio, il DNS perderà comunque se openvpn è configurato in modo errato).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.