Como fazer um killswitch para o cliente OpenVPN em execução em um servidor que permite conexões SSH no servidor?

0

Breve descrição

Escreva um conjunto de regras de firewall para um servidor executando um cliente do OpenVPN que funcione como killswitch, ou seja, permita o acesso à Internet somente via VPN IP. Observe que conectar-se a uma VPN no servidor fará com que não responda às conexões SSH, portanto inclua nas regras de firewall uma exceção para SSH, de modo que a conexão SSH com o servidor ainda seja possível enquanto o servidor estiver conectado à VPN.

Descrição longa (e minhas tentativas)

Eu tenho um servidor no qual estou tentando configurar um cliente do OpenVPN. Isso é só não é uma tarefa difícil - o comando para conectar é simplesmente sudo openvpn configuration_file.ovpn .

O que foi mais difícil foi fazer um killswitch, ou seja, um programa que impede a conexão feita via endereço IP não VPN, caso os túneis VPN se desconectem por algum motivo. Eu encontrei este script na área de trabalho e testei na área de trabalho:

sudo ufw default deny outgoing
sudo ufw default deny incoming
sudo ufw allow out on tun0 from any to any
sudo ufw allow in on tun0 from any to any
sudo ufw allow out from any to VPN.SERVER.IP.ADDRESS
sudo ufw enable

No entanto, no servidor, há outro problema: se o servidor se conectar a uma VPN, ele deixará de responder ao SSH. Eu encontrei este script, testei no servidor e funcionou - ele mantinha o servidor responsivo via SSH enquanto estava conectado à VPN:

echo "201 novpn" >> /etc/iproute2/rt_tables
ip rule show | grep fwmark
ip rule add fwmark 65 table novpn
ip route add default via GATEWAY.IP.ADDRESS dev eth0 table novpn
ip route flush cache
iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 65

Agora eu preciso combinar esses dois scripts (ou escrever um novo a partir do zero), ou seja, ter um conjunto de regras de firewall que implementem um killswitch para cliente OpenVPN sendo executado em um servidor e também permitir conexões SSH de / para o servidor. Como seria esse script?

    
por brian 13.02.2018 / 17:49

0 respostas