UFW para OpenVPN

17

Quero configurar o ufw (firewall não complicado) para o OpenVPN.

As conexões são permitidas apenas através do OpenVPN. Tudo o resto deve ser bloqueado. Portanto, se o OpenVPN estiver desconectado -> sem internet! Encontrei esse script online e quero saber se é 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: http://pastebin.com/AUHh6KnV

Alex M.
fonte
Parece bem! Basta tentar e ver se ele funciona, há algum problema você sempre pode desativar ufwusando sudo ufw disablee remover todas as regras de firewall utilizando sudo ufw --force reset. O que poderia dar errado? ;-)
ntninja 29/09
2
Eu posso evitar permitir todo o tráfego de entrada, pois isso permitirá que o openvpn funcione.
JVE999
2
você deve sempre negar conexões de entrada por padrão ...
n00dl3
Este script é feito claramente para fins de compartilhamento de arquivos. Negar conexões de entrada anula o objetivo. Ele fornece o comportamento "matador" de aplicativos VPN comerciais - nem mais, nem menos.
emk2203
@ emk2203 não, nega o tráfego de entrada fora do túnel.
berbt

Respostas:

8

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
berbt
fonte
Ainda tentando entender a linguagem do firewall, mas você hipoteticamente não gostaria de permitir isso tun0como meio de bloquear conexões de entrada da VPN? Como em ufw deny in on tun0?
Matt
@ MatBorja se você ufw default deny incominge ufw deny in on tun0você não receberem nenhuma conexão. Alguma interface deve permitir o tráfego recebido, neste caso, queremos que seja a VPN tun0.
berbt
Você está certo, de alguma forma eu não vi isso. Desconsidere :)
Matt
Na verdade, parece que o que eu estava "questionando" era a ufw allow in on tun0linha.
Matt
7

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

ufw allow incoming
ufw default allow in on tun0

Permitir derrota o objetivo de ter um firewall. É incorreto que você precise "permitir no tun0" para receber pacotes de retorno. Você deseja receber apenas as conexões solicitadas, em vez de permitir que o mundo inteiro se conecte a você. Permitir fará isso. Teste a configuração proposta abaixo e veja.

Aqui está um exemplo de 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

Resultado de exemplo:

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 pode ser necessário alterá-lo para sua VPN (por exemplo, 443 TCP). -Eu geralmente excluo o ipv6 (sudo ufw delete 4, repita x3)

O que isto faz: - Permite conexões de saída através do túnel VPN, enquanto bloqueia tudo, exceto o túnel VPN e as conexões DNS na Ethernet / wifi. Aviso abaixo sobre a questão do DNS.

Aviso: Este exemplo permite o 53 para solicitações de DNS, para que o openvpn (por exemplo, vpn.somevpnprovider.com) possa solicitar o endereço IP e fazer uma conexão. O trade-off é o potencial para vazamento de DNS. Use o dnsleaktest.com para garantir que suas configurações de VPN encapsulem suas solicitações de DNS. Para os cautelosos / paranóicos, pule a permissão para sair da 53 e, em vez disso, desative o firewall para conectar-se e, em seguida, volte a ligar uma vez conectado. Por meus motivos de VPN, opto por não fazer isso, pois é mais provável que eu esqueça completamente o firewall (por exemplo, o DNS vazará de qualquer maneira se o openvpn estiver configurado incorretamente).

MARACA_MAGICIAN
fonte