OnionJuggler

OnionJuggler é uma coleção portátil de scripts e documentação com requisitos mínimos para ajudar o operador de serviço a gerenciar (juggle) seus onion(s).
AVISO: não confie neste repositório ainda, faça backup das suas chaves hs em outro local. Este projeto ainda não foi lançado e deve ser considerado apenas para desenvolvimento.
Link rápido para este repositório: git.io/onionjuggler
Índice
Introdução
Imagens

História
Este projeto foi iniciado após ver os incríveis scripts Python CLI do OnionShare, que possibilitam serviços onion efêmeros que nunca tocam o disco e podem ser executados no Tails ou Whonix facilmente. Depois, ao ver o script bash de serviço onion do RaspiBlitz para Raspberry Pi, surgiu a ideia de portá-lo para qualquer distribuição Debian. Conforme a ideia crescia, usar GNU Bash e Linux era um ponto único de falha 1 2, então tornar o script compatível com POSIX para ser compatível com qualquer sistema Unix-like foi um objetivo definitivo.
Objetivo
O objetivo deste projeto é:
- facilitar o gerenciamento de serviços onion, desde ativar um serviço até adicionar autorização de cliente a ele, oferecendo todos os recursos da edição manual de arquivos, mas com menos digitação.
- mostrar que gerenciar o serviço onion vai muito além de apenas usar um servidor web com suas páginas.
- distribuição, desde o nível do código-fonte (FOSS) até o efeito que tem quando permite que qualquer pessoa execute o código em qualquer sistema operacional, shell ou gerenciador de serviços. Mitigação contra ponto único de falha.
Mitigação contra ponto único de falha:
- Kernel do predominante
Linux para também BSD e qualquer outro sistema Unix-like.
- Shell do predominante
Bash para também qualquer shell POSIX como ksh, (y,d)ash e Zsh (emulando sh).
- Gerenciador de serviços do predominante
Systemd para também RC, OpenRC, SysVinit, Runit.
Editar o arquivo de configuração do tor (torrc) não é difícil, mas a automação resolve problemas de má configuração e proporciona:
- menos tempo gasto executando um comando de linha única
- nenhum tempo de inatividade ao rejeitar configurações inválidas antes de aplicá-las
- uniformidade completa
- interface gráfica para ajudar iniciantes
Funcionalidades
- Ativar serviço - Criar diretório se não existir (HiddenServiceDir), selecionar versão do onion (HiddenServiceVersion), tipo de socket personalizado sendo unix ou tcp, com quantas portas virtuais desejar, bem como alvos (HiddenServicePort).
- Desativar serviço - Remover configuração do serviço do torrc; o serviço não ficará mais acessível, mas você pode ativá-lo novamente a qualquer momento. Opcionalmente, purgar o serviço, excluindo sua configuração e diretório, o que excluirá suas chaves permanentemente.
- Renovar endereço do serviço - Focado em serviços onion privados; se você vazar o endereço, pode alterar seu hostname; cuidado: todos os clientes autorizados serão desconectados e as chaves do serviço serão excluídas permanentemente.
- Credenciais - Mostrar hostname, clientes, bloco torrc, hostname codificado em QR.
- Autenticação onion - Apenas para serviços onion v3. Isso depende da configuração do lado do cliente e do servidor e funciona com um par de chaves; o cliente mantém a parte da chave privada, seja gerada por ele (mais seguro) ou fornecida pelo operador do serviço, e o operador do serviço onion mantém a parte pública. Se qualquer um dos
- Servidor - Gerar par de chaves ou adicionar parte pública, listar nomes de clientes e suas chaves públicas de
<HiddenServiceDir>/authorized_clients/<client>.auth. Se algum cliente estiver configurado, o serviço não será acessível sem autenticação.
- Cliente - Gerar par de chaves ou adicionar parte pública, listar seu
<ClientOnionAuthDir>/<SOME_ONION>.auth_private.
- Onion-Location - Para serviços onion públicos. Você pode redirecionar seus usuários da rede comum para seu serviço onion com este guia para nginx, apache2 e atributos de cabeçalho html.
- OpSec - Segurança Operacional
- Socket Unix - Suporte para ativar um serviço onion sobre socket unix para evitar bypass de localhost.
- Servidor web - Servir arquivos com seu serviço oculto usando servidores web Nginx ou Apache2.
- Usabilidade - Existem duas caixas de diálogo compatíveis com o projeto,
dialog e whiptail.
- Em lote - Alguns comandos podem ser executados em lote com o argumento
@all para incluir todos os serviços ou clientes dependendo da opção --service ou --client, listar argumentos ativados [SERV1,SERV2,...] e [CLIENT1,CLIENT2,...]; o comando percorrerá as variáveis e aplicará a combinação.
- À prova de falhas - O script faz o possível para filtrar comandos inválidos e sintaxe incorreta. Os comandos não são difíceis, mas à primeira vista podem assustar. Não se preocupe, se for inválido, não será executado para evitar que o daemon tor falhe ao recarregar devido a configuração inválida. Se um comando inválido for executado, por favor abra uma issue.
Requisitos
- Gerais:
- Sistema Unix-like.
- Privilégios de superusuário para chamar comandos como root e o usuário tor