UFW para OpenVPN

15

Eu quero configurar o ufw (firewall descomplicado) para o OpenVPN.

As conexões só são permitidas pelo OpenVPN. Todo o resto deveria estar bloqueado. Então, se o OpenVPN estiver desconectado - > sem internet! Eu encontrei este script online e quero saber se ele é bom o suficiente. Ou tenho que adicionar mais regras?

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

    
por Alex M. 29.09.2014 / 15:09

2 respostas

6

A configuração pode ser mais restritiva

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
    
por berbt 08.07.2016 / 11:14
3

A recomendação strong é que você NÃO use esses dois comandos :

ufw allow incoming
ufw default allow in on tun0

Permitir em derrotas a finalidade de ter um firewall. É incorreto que você precise "permitir entrar no tun0" para receber pacotes de retorno. Você só quer receber conexões que pediu, em vez de permitir que o mundo inteiro se conecte a você. Permitir isso fará isso. Teste a configuração proposta abaixo e veja.

Aqui está um exemplo para uma série de comandos UFW para uso com um 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

Exemplo de resultado:

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: -Suas interfaces podem ser diferentes, por exemplo, o ubuntu 16.12 usa eno1 e wlp3s0b1. Use o comando "ifconfig" para ver suas interfaces reais. -1197 O UDP é bastante padrão, mas você pode precisar alterá-lo para sua VPN (por exemplo, 443 TCP). -Eu costumo excluir ipv6 (sudo ufw delete 4, repita x3)

O que isso faz: -Ele permite conexões de saída através do túnel VPN, enquanto bloqueia tudo, mas o túnel VPN e conexões DNS em ethernet / wifi. Aviso abaixo sobre o problema do DNS.

Atenção: Este exemplo permite 53 solicitações DNS para que o openvpn (por exemplo, vpn.somevpnprovider.com) possa solicitar o endereço IP e fazer uma conexão. O tradeoff é o potencial de vazamento de DNS. Use dnsleaktest.com para garantir que suas configurações de VPN encapsulem suas solicitações de DNS. Para os cautelosos / paranóicos, ignore o 53 e, em vez disso, desative o firewall para conectar-se e, em seguida, ligue-o novamente uma vez. Pelas minhas razões de VPN, optei por não fazer isso, pois é mais provável que eu esqueça o firewall completamente (por exemplo, o DNS vazará de qualquer maneira se o openvpn estiver configurado incorretamente).

    
por MARACA_MAGICIAN 09.02.2018 / 23:38