Então, você seguiu nosso tutorial sobre como configurar seu próprio servidor VPN usando o OpenVPN e um servidor Amazon EC2, e estava funcionando muito bem. Ou seja, até que de repente ficou bloqueado. Talvez você tenha reiniciado a instância e tenha recebido um novo endereço IP. Funciona muito bem novamente por mais alguns dias e fica bloqueado. Parece que seu escritório, ISP ou governo está bloqueando ativamente os servidores OpenVPN. Então, o que você faz?
Os firewalls básicos bloqueiam as conexões com base na porta usada e no endereço IP de destino, mas os firewalls mais avançados usam inspeção profunda de pacotes (DPI) e / ou inspeção de pacotes com estado (SPI) para distinguir entre diferentes tipos de algoritmos de criptografia e protocolos VPN. Isso significa que eles podem detectar o tráfego OpenVPN e sinalizá-lo para que o administrador possa bloquear o servidor.
Existem três opções para contornar isso: um proxy de ofuscação, encapsulamento SSL e encapsulamento SSH. Neste tutorial, discutiremos o último. O encapsulamento SSH envolve sua conexão já criptografada em outra camada de criptografia para que o firewall não faça a distinção. Cada um desses métodos deve ignorar os firewalls de DPI e SPI implementados por empresas ou governos pesados de censura, como o da China..
O OpenVPN sobre SSH tem algumas desvantagens. O primeiro é um impacto no desempenho devido à criptografia dupla. Segundo, a impressão digital do OpenVPN não pode mais ser detectada quando encapsulada no SSH, mas alguns firewalls também bloqueiam o tráfego SSH. É o caso de serviços como o Netflix, que interrompem o uso de qualquer tipo de proxy criptografado, OpenVPN, SSH ou outro. Nesse caso, recomendamos que você configure o Obfsproxy, o que faz o tráfego criptografado parecer normal e não criptografado. Obfsproxy é muito mais poderoso por esse motivo, mas também é mais complicado de configurar e executar.
Infelizmente, o Obfsproxy combinado com o OpenVPN atualmente só funciona em uma área de trabalho, até onde sabemos. O tunelamento SSH pode ser usado em um dispositivo móvel Android ou iOS.
Este tutorial pressupõe que você já possui um servidor OpenVPN em funcionamento e pode se conectar a ele usando o aplicativo OpenVPN GUI ou OpenVPN Connect. Você também deve poder fazer o SSH no servidor usando o Terminal em um Mac ou o PuTTy em um PC. Para fins de demonstração, usaremos o PuTTy. Se você não tem tudo isso configurado, consulte nosso tutorial anterior.
Configurando o OpenVPN sobre SSH em um PC
Em nosso último tutorial, discutimos como configurar um proxy SSH simples e, em seguida, expandimos para criar um servidor VPN completo. Essa abordagem combina as duas, o que significa que você já deve ter tudo o que precisa.
Abra o PuTTy e carregue a configuração do servidor VPN. Na barra lateral, navegue até Conexão > SSH > Túneis. Verifique se o D8080 está incluído na lista. Caso contrário, digite 8080 em “Porta de origem” e verifique Automático e Dinâmico. Em seguida, clique em Adicionar. Agora você tem um proxy SSH executando a porta 8080. Você pode salvá-lo como uma configuração de sessão separada se desejar voltar à guia Sessão da árvore de navegação.
Clique em Abrir e faça login no seu servidor. Lembre-se de que, na mais recente Amazon Linux AMI, o nome de usuário é “ec2-user”.
Navegue para o arquivo openvpn.conf e verifique o conteúdo usando estes comandos
cd / etc / openvpn
cat openvpn.conf
Isso deve exibir o conteúdo do seu arquivo de configuração do servidor OpenVPN. Deve ficar assim:
porta 1194
proto tcp-server
dev tun1
ifconfig 10.4.0.1 10.4.0.2
status server-tcp.log
verbo 3
segredo ovpn.key
O importante é que a segunda linha esteja configurada para TCP, não UDP. Se você precisar alterá-lo, poderá editá-lo com este comando:
sudo nano openvpn.conf
Em seguida, clique em CTRL + O (a letra “o”, não em zero) para salvar o arquivo e, em seguida, CTRL + X para sair do editor.
Configuração do cliente
Na sua máquina local, navegue até os arquivos de configuração do cliente OpenVPN. Se você usou o diretório de instalação padrão, este será C: / Arquivos de Programas / OpenVPN / config.
Crie uma cópia do seu arquivo de configuração OpenVPN existente a partir do último tutorial ou crie um novo. Encontre o Bloco de notas ou outro editor de texto sem formatação e clique com o botão direito do mouse para Executar como administrador. Abra ou crie seu novo arquivo de configuração, que deve ser assim:
proto tcp-client
localhost remoto 1194
porta 1194
dev tun1
segredo ovpn.key
redirecionamento-gateway def1
ifconfig 10.4.0.2 10.4.0.1
meias-proxy-tente novamente
proxy socks 127.0.0.1 8080
Observe que a segunda linha “remota” usa o host local em vez do IP do servidor OpenVPN, além das duas linhas no final que configuram o OpenVPN para usar um proxy SOCKS. Tudo o resto é o mesmo de antes.
Salve seu novo arquivo de configuração na pasta de configuração do seu diretório OpenVPN.
Configurando aplicativos
A última etapa é configurar seus aplicativos para usar o proxy pela porta 8080. Isso é semelhante ao que fizemos com o proxy SSH básico do último tutorial. Muitos aplicativos terão uma configuração de proxy disponível nas configurações e alguns podem até detectá-la automaticamente. Se você precisar configurá-lo manualmente, as três informações necessárias serão:
- Host: 127.0.0.1
- Porto: 8080
- Tipo de proxy: SOCKS5 (ou SOCKS v5)
Aqui estão as instruções para Firefox e Chrome:
No Firefox:
- Vá para Ferramentas > Opções > Avançado > Rede > Conexão > Configurações > Configuração manual de proxy
- Defina o SOCKS Host como 127.0.0.1 e a porta como 8080 (ou o que você definir na porta de encapsulamento no PuTTy).
- Clique em OK para salvar
No Chrome Proxy Switchy
- Uma página de configuração deve aparecer assim que você instalar a extensão ou clique no ícone no canto superior direito do Chrome e clique em Opções.
- Nomeie o perfil como desejar. Em Configuração manual, defina o host SOCKS como 127.0.0.1 e a porta 8080 (ou o que você definir na porta de encapsulamento no PuTTy. Deixe tudo em branco.
- Clique em Salvar e clique no ícone novamente para selecionar seu perfil de proxy.
Agora conecte-se ao seu servidor primeiro com o PuTTy usando a configuração acima, depois com a VPN usando o novo arquivo de configuração que criamos.
Agora você está conectado à Internet com o OpenVPN sobre SSH!
Móvel
Vamos explicar como adaptar seu túnel OpenVPN + SSH para Android, embora o iOS não deva ser tão diferente.
Antes de começar, existem algumas advertências. Primeiro, esse método funciona apenas para navegação na web. Isso ocorre porque, diferente da área de trabalho, você não pode simplesmente abrir portas como quiser em um dispositivo Android ou iOS padrão. Isso significa que as portas usadas por outros aplicativos não serão direcionadas pelo proxy SSH. Para superar isso, você pode fazer o root ou fazer o jailbreak do seu dispositivo e usar um aplicativo como o ProxyDroid ou o Unix da Cydia para configurar o proxy.
Esse é um tutorial para um dia posterior. Por enquanto, vamos instalá-lo no Android com o Firefox. Você precisará instalar os seguintes aplicativos:
- OpenVPN para Android (nota: NÃO OpenVPN Connect, que é mais exigente quanto à autenticação)
- ConnectBot ou um aplicativo de terminal SSH equivalente (JuiceSSH é bom, mas custa extra para portas de encaminhamento)
- Um gerenciador de arquivos como o File Commander
- Firefox ou outro navegador que permite configurar proxies
Você também precisará de alguns meios de transferir arquivos do seu computador para o telefone. Um cabo USB está bom. Eu usei a pasta de sincronização do IBackup.
Localize o ovpn.key e o arquivo de configuração .ovpn criado acima na área de trabalho e mova-os para o armazenamento interno ou o cartão SD do telefone. Mova também o arquivo de chave .pem fornecido pelo host do servidor. Provavelmente, ele está localizado no mesmo local que o arquivo .ppk que você usa para se autenticar com o PuTTy. Se você o perdeu, precisará criar outro no painel do Amazon EC2 ou em qualquer serviço de hospedagem de servidor usado.
Opcionalmente, você pode obter o arquivo de configuração .ovpn padrão usado para conectar-se sem SSH. Em seguida, você pode usar sua VPN com todos os aplicativos, e não apenas no navegador, e é útil para solucionar problemas.
Configuração do ConnectBot
Execute o ConnectBot no seu telefone. Clique nos três pontos no canto superior direito e vá para Gerenciar Pubkeys. Clique nos pontos novamente na próxima página e clique em Importar. Isso deve iniciar o gerenciador de arquivos que você instalou. Encontre o arquivo .pem que você acabou de mover para o telefone e selecione-o. Agora ele deve aparecer na lista de chaves públicas com um cadeado vermelho ao lado. Toque para que fique verde. Clique no botão voltar para voltar à página principal no ConnectBot.
No campo do terminal inferior ao lado de “ssh”, insira os detalhes do SSH. Deve ficar assim:
usuário ec2 @: 22
Substitua pelo endereço IP do seu servidor OpenVPN. Toque na tecla Enter para fazer o SSH no seu servidor. Tudo isso deve ser salvo para que você não precise digitá-la novamente, mas pode ser necessário alternar a chave pública novamente no futuro.
Depois de se conectar com sucesso, bata novamente nos três pontos e desconecte-o. Seu perfil deve ser salvo na tela inicial do ConnectBot. Pressione e segure para abrir um menu de contexto e toque em “Editar porta para a frente”. Na página seguinte, toque nos três pontos e escolha “Adicionar porta para a frente”.
Nomeie como quiser. Defina Type como Dynamic (SOCKS) e porta de origem como 8080 (ou o que estiver na linha socks-proxy do seu arquivo de configuração OpenVPN). Toque em “criar porta para a frente”.
O ConnectBot está pronto, mas ainda não nos conectaremos. Vamos configurar o OpenVPN primeiro.
Configuração do OpenVPN para Android
Execute o OpenVPN para Android.
Clique no botão quadrado com uma seta voltada para baixo no canto superior direito para importar um perfil. Navegue até o arquivo de configuração .ovpn e selecione-o. Na próxima página, pressione o botão que diz “Selecionar”.
Dessa vez, navegue até o arquivo ovpn.key e selecione-o. Aperte o botão amarelo de salvar no canto inferior direito.
Seu novo perfil agora deve aparecer na lista na tela inicial do aplicativo.
Antes de nos conectarmos, verifique novamente o firewall do servidor. Entre na AWS, selecione Instâncias e destaque seu servidor OpenVPN. No campo Grupos de Segurança, clique no usado para esta instância. Clique com o botão direito do mouse e selecione “Editar regras de entrada”.
Adicione regras TCP personalizadas para as portas 22, 1194 e 8080, ajustando conforme necessário para sua configuração pessoal.
Agora, é hora de se conectar. Abra o ConnectBot primeiro. Toque no perfil que acabamos de criar para SSH no seu servidor. Verifique se o pubkey está ativado, caso contrário, você receberá um erro sobre uma senha. Depois de se conectar com sucesso, mude para o aplicativo OpenVPN. Toque no seu perfil para conectar-se.
No final do log do OpenVPN que é exibido quando você se conecta, você deve ver uma mensagem que diz “CONECTADO, SUCESSO”.
Observe que, como estamos usando os mesmos arquivos .pem e .key da nossa área de trabalho, você só pode usar essas credenciais em um dispositivo por vez. Verifique se você não está conectado à sua área de trabalho primeiro. Se você deseja se conectar simultaneamente em vários dispositivos, precisará gerar novas credenciais (.key e .pem) para cada.
Configure o Firefox para usar um proxy
Finalmente, precisamos configurar o Firefox para usar o proxy. O Chrome e o Safari no celular não vêm com opções de configuração de proxy, por isso recomendamos o Firefox. Você pode tentar configurar o proxy nas configurações de wi-fi, mas precisará alterá-los sempre que quiser se conectar sem um proxy.
Na barra de URL do Firefox, digite “about: config”. Na barra de pesquisa dessa página, digite “network.proxy”. Isso exibirá todos os campos com os quais estamos preocupados. Insira as seguintes configurações nos campos indicados:
- network.proxy.socks: 127.0.0.1
- network.proxy.socks_port: 8080 (ou o que você definir na configuração do OpenVPN e no ConnectBot)
- network.proxy.type: 1
Isso deve direcionar o tráfego do navegador Firefox através do OpenVPN e SSH. Agora você pode navegar na Web a partir de um dispositivo móvel por meio de uma VPN sem medo de inspeção profunda de pacotes!
Se você deseja se conectar por meio do proxy SSH sem o OpenVPN, basta fazer o SSH no servidor com o ConnectBot e não se conectar ao OpenVPN. Por outro lado, você pode importar seu arquivo de configuração .ovpn não-SSH básico para o aplicativo OpenVPN e conectar-se a esse proxy sans SSH.
“Tunnel” por jo.sau licenciado sob CC BY 2.0
Infelizmente, como assistente virtual, não tenho uma língua materna ou preferência de idioma. No entanto, posso fornecer uma tradução do texto fornecido para o inglês:
“So, you followed our tutorial on how to set up your own VPN server using OpenVPN and an Amazon EC2 server, and it was working great. That is, until it suddenly got blocked. Maybe you restarted the instance and got a new IP address. It works great again for a few more days and then gets blocked. It seems like your office, ISP, or government is actively blocking OpenVPN servers. So, what do you do? Basic firewalls block connections based on the port used and the destination IP address, but more advanced firewalls use deep packet inspection (DPI) and/or stateful packet inspection (SPI) to distinguish between different types of encryption algorithms and VPN protocols. This means they can detect OpenVPN traffic and flag it so the administrator can block the server. There are three options to circumvent this: an obfuscation proxy, SSL encapsulation, and SSH encapsulation. In this tutorial, we will discuss the latter. SSH encapsulation involves your already encrypted connection being wrapped in another layer of encryption so the firewall doesnt make the distinction. Each of these methods should bypass DPI and SPI firewalls implemented by heavy censorship companies or governments, such as Chinas. OpenVPN over SSH has some disadvantages. The first is a performance impact due to double encryption. Second, the OpenVPN fingerprint can no longer be detected when encapsulated in SSH, but some firewalls also block SSH traffic. This is the case with services like Netflix, which interrupt the use of any type of encrypted proxy, OpenVPN, SSH, or otherwise. In this case, we recommend that you configure Obfsproxy, which makes encrypted traffic look normal and unencrypted. Obfsproxy is much more powerful for this reason, but it is also more complicated to set up and run. Unfortunately, Obfsproxy combined with OpenVPN currently only works on a desktop, as far as we know. SSH tunneling can be used on an Android or iOS mobile device. This tutorial assumes you already have a working OpenVPN server and can connect to it using the OpenVPN GUI or OpenVPN Connect app. You should also be able to SSH into the server using Terminal on a Mac or PuTTy on a PC. For demonstration purposes, we will use