Como usar o iptables para permitir o tráfego somente através de UMA VPN ESPECÍFICA

0

Estou tentando permitir que todo o tráfego do meu Banana PI executando o Lubuntu seja acessado somente pela minha LAN ou por meio de um servidor VPN. Estou seguindo este guia: link

Essencialmente, diz que eu deveria usar essas regras:

#Allow loopback device (internal communication)
iptables -A INPUT -i lo -j 
iptables -A OUTPUT -o lo -j ACCEPT
#Allow all local traffic.
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
#Allow VPN establishment
iptables -A OUTPUT -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -p udp --sport 1194 -j ACCEPT
#Accept all TUN connections (tun = VPN tunnel)
iptables -A OUTPUT -o tun+ -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
#Set default policies to drop all communication unless specifically allowed
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

Mas, até onde eu entendi, isso permitirá o tráfego através de QUALQUER VPN (ou qualquer coisa com uma interface de rede que comece com "tun").

Eu tentei usar

iptables -A INPUT -s XXX.XXX.XXX.XXX -j ACCEPT
iptables -A OUTPUT -d XXX.XXX.XXX.XXX -j ACCEPT

com o endereço IP do servidor VPN, mas parece que não funciona, simplesmente não se conecta à VPN.

Então, como devo fazer isso? Eu fiz exatamente a mesma coisa no Windows usando o Firewall do Windows (seguindo o este guia), apenas bloqueando qualquer endereço IP, exceto o local uns e o do servidor VPN e funciona perfeitamente.

    
por Huchickut 11.02.2015 / 19:07

2 respostas

1

Como parece que você está usando o OpenVPN, uma coisa que você pode fazer é dar ao seu dispositivo tun VPN um nome explícito em vez de usar o tunN.

É perfeitamente válido colocar algo assim. dev tun_home na sua configuração do OpenVPN. Isso resultará no dispositivo de encapsulamento sendo denominado tun_home . Você pode usar isso nas regras de firewall, em vez de usar uma correspondência de nome de dispositivo curinga tun+ .

    
por 11.02.2015 / 19:12
1

Suponho aqui que você deseja que todo o tráfego não local passe pela VPN (acesso à Internet, por exemplo). Se isso for verdade, acho que seria mais fácil e melhor usar a tabela de roteamento para fazer o que você deseja em vez do firewall. Você pode definir sua rota padrão para usar a VPN em vez do padrão atual.

route add default dev tun0

ou algo similar e remova a rota padrão atual.

Por outro lado, se o que você quer é realmente bloquear qualquer coisa que não seja local ou proveniente da VPN, então você está na direção correta usando o iptables.

    
por 11.02.2015 / 19:28