Anonimizando OpenVPN permite acesso SSH ao servidor interno

10

Estou usando uma VPN anônima, mas quero acesso SSH ao computador interno.

Como acesso meu computador interno através do SSH? Quando eu faço o ssh 98.123.45.6 , a conexão atinge o tempo limite.

  • Endereço IP do provedor de serviços a cabo: 98.123.45.6
  • IP anônimo através da VPN: 50.1.2.3
  • Computador interno: 192.168.1.123

Ao pesquisar, encontrei recomendações para configurar regras do iptables, regras de roteamento ou adicionar ListenAddress ao sshd_config. Qual destes se aplica ao meu caso?

Aqui está a minha rota :

Tabela de roteamento IP do kernel
Gateway de destino Genmask Flags Ref métrico Use Iface
10.115.81.1 10.115.81.9 255.255.255.255 UGH 0 0 0 tun0
10.115.81.9 * 255.255.255.255 UH 0 0 0 tun0
50.1.2.3-sta ddwrt 255.255.255.255 UGH 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 202 0 0 eth0
169.254.0.0 * 255.255.0.0 U 204 0 0 vboxnet0
loopback * 255.0.0.0 U 0 0 0 lo
padrão 10.115.81.9 128.0.0.0 UG 0 0 0 tun0
128.0.0.0 10.115.81.9 128.0.0.0 UG 0 0 0 tun0
padrão ddwrt 0.0.0.0 UG 202 0 0 eth0
Lionel
fonte

Respostas:

15

Para resolver esse problema, você precisará configurar as tabelas de ipt e as regras de roteamento. O problema específico que você está enfrentando é que os pacotes SSH de saída estão sendo roteados através da sua interface de túnel VPN anônima, em vez da sua interface Ethernet. Isso está acontecendo porque o seu software VPN estabelece uma regra de roteamento para enviar todo e qualquer tráfego não tratado pela interface do túnel. Bom para anonimizar o tráfego da sua rede; ruim para estabelecer conexões SSH com o seu computador.

Existem algumas maneiras de corrigir esse problema, mas compartilharei com você a que funcionou para mim em uma situação idêntica. Aqui está o que precisamos fazer:

  1. Crie uma nova tabela de regras de IP para lidar com tráfego não VPN
  2. Adicione uma regra de IP para procurar em nossa tabela sem VPN os pacotes marcados com uma máscara específica de filtro de rede
  3. Adicione uma rota IP que direcione todo o tráfego em nossa tabela sem VPN para usar sua interface Ethernet em vez do túnel
  4. Adicione uma regra do iptables para marcar todo o tráfego SSH com nossa máscara de filtro de rede designada

Nota: Eu estava trabalhando com o Raspbian enquanto fazia o seguinte, portanto, pode ser necessário ajustar um pouco os comandos para ajustar-se à sua distribuição.

Criando uma nova tabela de regras de IP

Comece inspecionando o arquivo de definição de tabela do iproute2. Queremos garantir que não usemos o nome ou o número de nenhuma tabela de regras existente.

cat /etc/iproute2/rt_tables

Você provavelmente verá algo nesse sentido:

# reserved values
255      local 
254      main
253      default   
0        unspec
#
# local
#
#1      inr.ruhep

Escolha um número e nome arbitrários para sua nova tabela de regras - qualquer coisa que não seja usada acima. Usarei o número 201 e o nome novpnpara o restante desta resposta.

Anexe uma definição diretamente ao arquivo de definição ou edite-a no editor de texto de sua escolha:

echo "201 novpn" >> /etc/iproute2/rt_tables

Adicione uma nova regra de IP para pesquisar a tabela sem VPN

Verifique se existem regras de IP existentes que lidam com máscaras do netfilter:

ip rule show | grep fwmark

Se o grep não aparecer, você estará livre. Se imprimir algumas linhas, anote o número hexadecimal à direita da palavra fwmarkem cada linha. Você precisará escolher um número que não está em uso no momento. Como não tinha regras fwmark existentes, escolhi o número 65.

ip rule add fwmark 65 table novpn

O que isso faz é que qualquer pacote com máscara de filtro de rede 65 procure nossa nova novpntabela para obter instruções sobre como rotear os pacotes.

Direcione todo o tráfego em nossa nova tabela para usar a interface Ethernet

ip route add default via YOUR.GATEWAY.IP.HERE dev eth0 table novpn

O importante a ser observado aqui é dev eth0. Isso força todo o tráfego que passa pela novpntabela a usar apenas a interface Ethernet de hardware, em vez da interface de túnel virtual criada por sua VPN.

Agora seria um bom momento para liberar seu cache de iproute, para garantir que suas novas regras e rotas tenham efeito imediato:

ip route flush cache

Instrua a regra de firewall a marcar todo o tráfego SSH com a máscara de filtro de rede designada

iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 65

Existem muitas opções aqui para eu explicar com grande profundidade. Convido você a ler a página de manual do iptables para ter uma idéia do que está acontecendo aqui:

man iptables

Em poucas palavras: estamos anexando uma regra de saída à tabela mangle do firewall (para manipulação especializada de pacotes) que instrui a marcar quaisquer pacotes TCP originários da porta de origem 22 com nossa máscara de filtro de rede designada 65.

Qual o proximo?

Neste ponto, você deve estar pronto para testar o SSH. Se tudo correr bem, você deverá receber o prompt "login como".

Por questões de segurança, recomendo que você instrua seu firewall a eliminar quaisquer solicitações SSH recebidas da interface do túnel:

iptables -A INPUT -i tun0 -p tcp -m tcp --dport 22 -j DROP

Observe que todas as instruções acima são transitórias (exceto para a criação do ID da tabela de regras) - elas serão limpas na próxima vez que você reiniciar o computador. Torná-los permanentes é um exercício que deixo para você.

Dobrar.
fonte