Este guia ajudará você a configurar uma ponte WebTunnel para ajudar usuários censurados a se conectarem à rede Tor. WebTunnel é um transporte plugável que tenta imitar atividades de navegação na web com base em HTTPT.

Os requisitos para implantar uma ponte WebTunnel são:

  1. Um IPv4 estático (de preferência);
  2. Capacidade de expor portas TCP à Internet (certifique-se de que o NAT não atrapalhe);
  3. Um site auto-hospedado, incluindo um servidor web configurável (como NGINX ou Apache) e um domínio sob seu controle;
  4. Um certificado TLS válido;
  5. Pelo menos 1 GB de memória RAM (4 GB recomendados) para suportar o processo Tor e o transporte do WebTunnel.

Para mais detalhes sobre os requisitos do sistema, recomendamos a leitura da página Requisitos do relé Tor.

A implantação de uma ponte WebTunnel envolve a configuração de um servidor web e de uma ponte Tor com esse transporte conectável. A primeira parte deste guia fornece instruções detalhadas para configurar seu servidor web para oferecer suporte ao WebTunnel. Na segunda parte, você escolherá entre dois métodos para executar a ponte WebTunnel: usando o Docker ou compilando a partir do código-fonte.

Observe que se você não atender aos requisitos para executar um WebTunnel ou uma ponte obfs4, executar um proxy Snowflake é uma ótima maneira de doar sua largura de banda para ajudar os usuários a contornar a censura.

Configuração do servidor web

Etapa 1. Configure seu domínio

Se você já tem um domínio de site, você pode usar o domínio principal ou criar um subdomínio. Neste guia, a ponte WebTunnel é hospedada no mesmo servidor que seu site, mas é possível hospedá-la em um servidor diferente.

Etapa 2. Obtenha um certificado válido

Se o seu site não tiver um certificado TLS, você pode obter um usando acme.sh, que é um cliente de protocolo ACME escrito em linguagem Shell.

2.1. Instalar o ACME

Substitua my@example.com pelo seu endereço de e-mail:

$ curl https://get.acme.sh | sh -s email=my@example.com

Ou

$ wget -O - https://get.acme.sh | sh -s email=my@example.com

2.2. Emitir um certificado

Substitua example.com pelo domínio do seu site.

$ ~/.acme.sh/acme.sh --issue --standalone --domain example.com

Etapa 3. Instalar o NGINX

Para coexistir com outro conteúdo em uma única porta, você deve instalar um proxy reverso, como o NGINX. Instalar o NGINX:

$ sudo apt install nginx

Etapa 4. Configurar o NGINX

4.1. Gerar uma string aleatória

Quando os clientes se conectam ao seu servidor web, eles serão redirecionados para o seu proxy WebTunnel quando usarem um caminho secreto. Você pode gerar uma string aleatória executando este comando:

$ echo $(cat /dev/urandom | tr -cd "qwertyuiopasdfghjklzxcvbnmMNBVCXZLKJHGFDSAQWERTUIOP0987654321"|head -c 24)

4.2. Criar ou editar um vhost NGINX

Crie um novo arquivo vhost, como /etc/nginx/sites-available/webtunnel-vhost, que encaminha o tráfego para a ponte WebTunnel. Aqui está um exemplo completo de NGINX vhost com WebTunnel.

Ou se você quiser usar um vhost existente, basta editá-lo e adicionar o bloco location {} a ele. Substitua $PATH pela string aleatória.

# Exemplo de bloco NGINX vhost
location = /$PATH {
        proxy_pass http://127.0.0.1:15000;
        proxy_http_version 1.1;

        ### Definir cabeçalhos WebSocket ###
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        ### Definir cabeçalhos de proxy ###
        proxy_set_header        Accept-Encoding   "";
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
        add_header              Front-End-Https   on;

        proxy_redirect     off;
        access_log  off;
        error_log /dev/null;
}

4.3. Teste a configuração do vhost e reinicie o NGINX

sudo ln -s /etc/nginx/sites-available/webtunnel-vhost /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Etapa 5. Configure sua ponte Tor WebTunnel

Parabéns! Você configurou com sucesso seu servidor web para enviar solicitações de proxy para sua ponte Tor. Agora, você deve instalar e configurar sua ponte para receber essas solicitações do servidor web. Siga a segunda parte deste guia. Você tem duas opções disponíveis: compilar um binário Go a partir do source ou usar Docker.

Configuração do Docker do WebTunnel

Como executar uma ponte WebTunnel no Docker

Compilar e executar o WebTunnel a partir do código-fonte

Como executar uma ponte WebTunnel a partir da fonte