O interruptor kill do OpenVPN não funciona

0

Eu preciso de um kill switch que elimine as conexões de saída se o OpenVPN não estiver em execução, porque senão uma VPN não faria sentido - se desconectar e houver uma conexão, meu IP real é liberado.

Digamos que o 1.2.3.4 é o endereço do meu servidor VPN, e este é o meu iptables depois que eu executei o script kill switch:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  255.255.255.255      anywhere
ACCEPT     all  --  192.168.0.0/16       192.168.0.0/16

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             255.255.255.255
ACCEPT     all  --  192.168.0.0/16       192.168.0.0/16
DROP       all  --  anywhere            !1.2.3.4

Imo deve funcionar muito bem. Mas não consigo me conectar à internet enquanto o tráfego local passa. Você vê algum problema nesta configuração?

Meu computador é um Raspberry Pi 3 nesta situação, e estou usando o OpenVPN sobre TCP e tenho um Fritz.Box conectado à WAN.

Você vê algum erro? Meu script é o seguinte:

#!/bin/bash

# check that OpenVPN is actually running.
running=$(ps -e | grep openvpn)
if [ $? -eq 1 ]; then
    echo "No active VPN session found."
    exit 1
fi

iptables -F

# Get WAN IP
WAN_IP=$(wget -q -O - http://ipecho.net/plain)

# Configure IPTable rules
# Change eth0 to wlan0 (or whatever network interface is being used) for wireless
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 255.255.255.255 -j  ACCEPT
iptables -A INPUT -s 255.255.255.255 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/16 -d 192.168.0.0/16 -j ACCEPT
iptables -A OUTPUT -s 192.168.0.0/16 -d 192.168.0.0/16 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A OUTPUT -o eth0 ! -d $WAN_IP -j DROP

Ela é montada com as seguintes fontes: link , link

Eu tentei esses scripts por conta própria também, mas eles não estão funcionando também (acho que é o mesmo erro?).

Alguma ideia? Agradecemos antecipadamente.

    
por Jonniboy 30.10.2016 / 11:53

1 resposta

1

O OpenVPN permite o uso de scripts externos quando a seguinte diretiva,

 script-security 2

está incluído nos arquivos de configuração do cliente. Use as diretivas

up /path/to/executable/script
down /path/to/another/executable/script

para executar esses dois scripts quando as interfaces estiverem sendo configuradas ou desmontadas. No seu caso, up é irrelevante, mas você pode usar para baixo para derrubar todas as interfaces de rede quando o OpenVPN for desativado, para assegurar que nenhum tráfego vaze através de canais não criptografados. Observe que, se o OpenVPN travar ou for desconectado, desde que seu cliente ache que está conectado , haverá sem vazamentos , porque o tráfego ainda está sendo enviado criptografado (e possivelmente comprimido) para o servidor OpenVPN. Assim, é impossível interceptá-lo.

O script para baixo pode ser escrito da seguinte forma:

#!/bin/bash
find /sys/class/net  -mindepth 1 -maxdepth 1  -exec sh -c '[ "$1" != "lo" ] && ip link set dev $(basename $1) down' something {}   \;

Isso reduz as interfaces all , exceto lo , que é necessário para o seu pc funcionar.

    
por 15.11.2016 / 05:48