Anonimizar o OpenVPN Permitir acesso SSH ao servidor interno

9

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

Como faço para acessar meu computador interno por meio do SSH? Quando eu faço ssh 98.123.45.6 , a conexão expira.

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

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

Aqui está minha rota :

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    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
default         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
default         ddwrt           0.0.0.0         UG    202    0        0 eth0
    
por Lionel 08.09.2012 / 04:55

1 resposta

13

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

Existem algumas maneiras de corrigir este problema, mas vou compartilhar com você o 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 na nossa tabela no-VPN por quaisquer pacotes marcados com uma máscara específica de netfilter
  3. Adicione uma rota IP que direcione todo o tráfego em nossa tabela no-VPN para usar sua interface Ethernet em vez do túnel
  4. Adicione uma regra iptables para marcar todo o tráfego SSH com nossa máscara de netfilter designada

Nota: Eu estava trabalhando com o Raspbian enquanto fazia o seguinte, então você pode precisar ajustar um pouco os comandos para ajustar sua distribuição.

Criando uma nova tabela de regras de IP

Comece inspecionando o arquivo de definição de tabela do iproute2. Queremos ter certeza de que não usaremos o nome ou o número de nenhuma das tabelas de regras existentes.

cat /etc/iproute2/rt_tables

Você provavelmente verá algo ao longo destas linhas:

# 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 não usada acima. Usarei o número 201 e o nome novpn para 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 procurar a tabela no-VPN

Verifique as regras de ip existentes que lidam com as máscaras do netfilter:

ip rule show | grep fwmark

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

ip rule add fwmark 65 table novpn

O que isto faz é fazer com que qualquer pacote com o netfilter mask 65 consulte nossa nova tabela novpn 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 tabela novpn a usar somente a interface Ethernet de hardware, em vez da interface de túnel virtual que sua VPN cria.

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

ip route flush cache

Instrua a regra de firewall para 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

Há muitas opções aqui para eu explicar em grande profundidade. Eu recomendo strongmente que você leia a página de manual do iptables para ter uma idéia do que está acontecendo aqui:

man iptables

Em suma: estamos anexando uma regra de saída à tabela mangle do firewall (para manipulação de pacotes especializados) que instrui para marcar qualquer pacote TCP originado da porta de origem 22 com nossa máscara de netfilter designada 65.

O que vem depois?

Neste ponto, você deve estar pronto para testar o SSH. Se tudo correr bem, você deve encontrar o prompt "login as" feliz.

Por questões de segurança, recomendo que você instrua seu firewall a descartar quaisquer solicitações SSH de entrada 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 temporárias (exceto para a criação da ID da tabela de regras) - elas serão apagadas na próxima vez em que você reiniciar o computador. Torná-los permanentes é um exercício que deixo para você.

    
por 02.11.2012 / 02:56

Tags