Servidor VPN (beachhead) sem raiz?

6

Como posso configurar um servidor VPN em um host no qual não tenho raiz?

Eu tenho as seguintes restrições:

  • No servidor A, não tenho raiz. Eu só posso operar no meu diretório home. Em particular, também não consigo criar tun devices.
  • No cliente B, tenho controle total e posso instalar o que quiser.
  • O
  • encaminhamento de porta SSH (-L / -R) e o proxy SOCKS (-D) funcionam, mas não no meu caso. O software no meu cliente usa muitas portas diferentes, então eu estaria inclinado a usar o SOCKS, mas ele também é executado no nível do kernel, então não posso convencê-lo com tsocks para usar o proxy. Uma coisa que funcionaria seria executar o software do cliente em uma VM em B e criptografar toda a VM, mas preferiria não seguir esse caminho.
  • Não preciso de portas privilegiadas, portanto, não raiz em A deve ser OK.
  • Não precisa ser uma VPN "real", mas algo semelhante em espírito seria suficiente. Meu processo em B deve ser capaz de se comunicar com processos em A (e dispositivos conectados) como se estivessem em uma máquina, sem reescrevê-los.

Eu não acredito que haja uma maneira elegante de fazer isso - a maneira correta seria simplesmente perguntar ao admin de A, ou conectar B na mesma rede - mas agora estou apenas curioso se isso pode ser feito como prova de conceito.

    
por jdm 15.01.2016 / 13:59

1 resposta

6

Bem, esse acesso "Não tenho raiz" no Servidor A pode ser um problema para criar uma boa solução VPN, pois:

  • O encapsulamento ip-ip requer manipulação de interface;
  • O pptp também requer privilégios de root para criar interfaces;
  • O OpenVPN pode até ser executado como usuário sem privilégios, mas alguns truques precisam ser feitos, como permitir o sudo para o comando ip para permitir a criação de tun interface;
  • strongSwan com privilégios reduzidos requer que CAP_NET_ADMIN ou CAP_NET_RAW funcionem, e executando o daemon IKE como não- O usuário root quebra o suporte para o script atualizável do iptables.

O que resta para você meu amigo: Confie em proxy de meias SSH . Na sua máquina local e como root, execute:

ssh -C2qTnN -D 8080 username@serverA

Significa : Compactação, somente SSH2, Silencioso, Forçar alocação pseudo-tty, Redirecionar stdin de / dev / null e Colocar o cliente ssh no modo "mestre" para compartilhamento de conexão.

Agora, tudo o que você precisa fazer é executar seu aplicativo. Se tiver suporte SOCKSv5 nativo como o Firefox, é apenas uma questão de configurar "localhost: 8080" como o servidor proxy.

Se o seu aplicativo não suportar esse proxy nativamente, execute-o com proxies . Basta instalar no seu cliente e você está pronto para ir.

A única solução que você não quer adotar parece ser a única, infelizmente.

Links:

por 15.01.2016 / 20:21