Configurando whonix com gateway e estação de trabalho em dois hosts separados

Configurando whonix com gateway e estação de trabalho em dois hosts separados

Tive sucesso ao configurar e usar o gateway whonix e a estação de trabalho em uma máquina. Mas eu gostaria de configurá-los em hosts diferentes, para distribuir os requisitos de memória e CPU.

Não descobri como fazer as VMs conversarem entre si quando estão em hosts diferentes. O gateway parece estar funcionando bem, como acontecia quando era executado com a estação de trabalho na mesma máquina. Agora que a estação de trabalho foi iniciada em um host diferente, como faço para que a estação de trabalho (ou o host em que ela está sendo executada) saiba que precisa entrar em contato com um gateway em um host diferente?

Ambos os hosts estão executando Linux Mint 17

Responder1

Primeiro algumas notas; Atingi o limite de caracteres do StackExchange, então esta é uma resposta resumida; use com sabedoria ;-)

  • ponte privada Tor ~=~ gateway Whonix

  • cliente com proxy Tor ~=~ estação de trabalho Whonix

Esses termos são usados ​​de forma intercambiável e há outros termos pelos quais esses tipos de configurações são chamados. Tentarei, tanto quanto possível, usar os termos Whonix para a maioria dos itens a seguir.

O que você provavelmente está procurando é chamado decaixa intermediáriaouponte privadapara a configuração do dispositivo gateway e do cliente ( trans-proxy). ORaspberry PiA equipe da Adafruit hospeda um guia bastante bem elaborado sobre como configurar o isolamento físico com torrcconfigurações e iptablesmagias personalizadas. Os requisitos para o seu gateway serão que ele possua duas interfaces de rede, podendo ser eth0e eth1ou usb0ou ppp0e sua estação de trabalho (cliente) deverá possuir apenas uma interface de rede física; de preferência eth0ou usb0tente evitar, wlan0por mais tentador que seja, você ficará aberto a ataques e monitoramento mais localizados que não são simples de mitigar e fáceis de atacar. Esses guias também têm o nome de "ponto de acesso Tor WiFi", então talvez expanda suas consultas de pesquisa para Linux em geral e Tor especificamente. Embora eu não recomende o uso de WiFi, os guias que cobrem o assunto podem ser facilmente modificados através da negociação wlan0no eth1seu gateway e wlan0na eth0sua estação de trabalho.

Estou escrevendo um pacote de roteiros para esta ocasião,seu dia de sorte, porque acabei de publicar o primeiro rascunho de um pacote de scripts que, quando concluído, também permitirá auditar a segurança de suas configurações. Dê uma olhada no código-fonte no GitHub e veja o /functions/tor/torrc_writers/torrc_bridge_configs.sharquivo com as diversas configurações disponíveis. Se houver um script/função sem documentação clara na parte inferior, abra um problema e tentarei fazer com que o próximo push inclua mais informações. Adicionarei recursos e depuração nos próximos dias, mas aqui está um exemplo simples de arquivo variável para carregar se você desejar testá-lo.

_application_list="tor"
_enable_ipv6="no"
#_external_ipv4=""
#_external_ipv6=""
_install_method="safe"
#_nat_ipv4=""
#_nat_ipv6=""
_temp_dir="/tmp"
_tor_user="debian-tor"
_tor_directory="/etc"
_bridge_types="private"
_tor_or_port="443"

Em seguida, chame o script com o arquivo variável acima com o seguinte

bash /home/${USER}/Downloads/Perinoid_Linux_Project/sandcastle.sh --var-file="/path/to/bridge_variables.sh"

e se funcionar (a maioria dosmagiassão pré-formados em /functions/shared/arg_checker.shfunção, se você estiver se perguntando) ele deve configurar o gateway como você deseja e com seus próprios scripts de início/parada separados, para iniciar apenas o serviço de ponte no dispositivo de gateway deve ser tão fácil quanto

sudo /etc/init.d/tor-bridge restart

Para a estação de trabalho deve ser possível usar a ponte do gateway no dispositivo gateway. O firewall ainda não foi programado, mas forneci um ponto de partida para iptablesfiltragem e encaminhamento no /firewalldiretório que você também pode querer consultar.

Código modificado para responder à pergunta específica feita

Aqui está uma versão modificada (apenas retirei os bits pertinentes do código vinculado acima e modifiquei-o para mostrar como esse código pode ser reaproveitado facilmente) que pode ser usada em qualquer prisão chroot baseada em Debian ou prisão de virtualização. Ele será executado sudointernamente, então ocorrerão solicitações de senha, isso é normal, e esta versão espera que o Tor já esteja instalado.

Use bashpara executar esta versão, ou seja, bash bridge_tor_script.shpara que variáveis ​​e funções funcionem corretamente. O código a seguir destina-se apenas ao dispositivo gateway, você ainda terá que configurar uma rede de ponte e encaminhar para o dispositivo da estação de trabalho e bloquear a estação de trabalho de forma que ela use apenas o IP fornecido pelo gateway.

Write_tor_bridge_configs(){
    ## Modify the stuff between quotes if non-standerd installation paths where used
    Activate_torrc_nonclient "debian-tor" "bridge"
    Write_tor_init_nonclient "/etc" "debian-tor" "bridge" "bridge" "/etc"
    Torrc_bridge_configs "/etc" "bridge" "debian-tor" "443" "192.168.1.3"
}
Torrc_bridge_configs(){
    _tor_dir="${1:-/etc}/tor"
    _tor_node_name="${2:-bridge}"
    _tor_user="${3:-debian-tor}"
    _tor_or_port="${4:-443}"
    _bridge_type="${5:-private}"
    _nat_ipv4="${6:?Error no local NAT IP passed to Torrc_bridge_configs function}"
    _external_ipv4="${7:?Error no external IP passed to Torrc_bridge_configs function}
    echo "## Attention [Torrc_bridge_configs] function writing general configuration lines to [${_tor_dir}/torrc-bridge] file"
    echo "User ${_tor_user}" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo 'RunAsDaemon 1' | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo "DataDirectory /var/lib/tor_${_tor_node_name}" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo "PidFile /var/run/tor_${_tor_node_name}.pid" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo 'AvoidDiskWrites 1' | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo 'BridgeRelay 1' | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo "RelayBandwidthRate 100 Kbytes" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo "RelayBandwidthBurst 200 Kbytes" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo "BandwidthRate 300 Kbytes" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo "BandwidthBurst 350 Kbytes" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo 'AccountingStart month 1 00:00' | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo "AccountingMax 80 GB" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo "ORPort ${_tor_or_port:-443}" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo 'ClientOnly 0' | sudo tee -a ${_torrc_dir}/torrc-${_tor_node_name}
    echo 'ExcludeSingleHopRelays 1' | sudo tee -a ${_torrc_dir}/torrc-${_tor_node_name}
    echo 'Exitpolicy reject *:*' | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo "## Only uncomment next line if geoip support is confermed" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo "#GeoIPFile ${_tor_dir}/geoip" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
    echo "## Notice [Torrc_bridge_configs] function writing spicific configuration lines to [${_tor_dir}/torrc-bridge] file"
    echo "# based on arguments passed via [-T] and [-B] and [-vf] arguments."
    for _node_type in ${_bridge_type//,/ }; do
        case $_node_type in
            private)
                echo 'PublishServerDescriptor 0' | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
                echo "Address ${_nat_ipv4}" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
                echo "ORListenAddress ${_nat_ipv4}:${_tor_or_port:-443}" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
                echo 'VirtualAddrNetwork 10.192.0.0/10' | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
                echo 'AutomapHostsOnResolve 1' | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
                echo 'TransPort 9040' | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
                echo 'DNSPort 9053' | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
                echo "TransListenAddress ${_nat_ipv4}" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
                echo "DNSPort 9053" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
                echo "DNSListenAddress ${_nat_ipv4}" | sudo tee -a ${_torrc_dir}/torrc-${_tor_node_name}
            ;;
            public)
                echo 'PublishServerDescriptor 1' | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
                echo "Address ${_external_ipv4}" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
                echo "OutboundBindAddress ${_external_ipv4}" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
                echo "ORListenAddress ${_external_ipv4}:${_tor_or_port:-443}" | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
                echo 'SocksPort 0' | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
            ;;
            authoritative)
                echo 'AuthoritativeDirectory 1' | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
                echo 'BridgeAuthoritativeDir 1' | sudo tee -a ${_tor_dir}/torrc-${_tor_node_name}
            ;;
        esac
    done
}
Write_tor_init_nonclient(){
    _tor_dir="${1:-/etc}"
    _tor_node_user="${2:-debian-tor}"
    _tor_node_nickname="${3:?}"
    _tor_node_type="${4:?}"
    _init_dir="${5:-/etc}/init.d"
    echo "## Attention [Write_tor_init] function now writing init script with assigned variables"
    echo "# to [${_init_dir}/tor_${_tor_node_type}] file for node [${_tor_node_nickname}] nickname..."
    echo '#!/bin/bash' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '### BEGIN INIT INFO' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo "# Provides:       tor ${_tor_node_nickname}" | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '# Required-Start:     $local_fs $remote_fs $network $named $time' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '# Required-Stop:      $local_fs $remote_fs $network $named $time' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '# Should-Start:       $syslog' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '# Should-Stop:        $syslog' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '# Default-Start:      2 3 4 5' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '# Default-Stop:       0 1 6' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '# Short-Description:  Starts The Onion Router daemon processes' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '# Description:        Starts The Onion Router, a TCP overlay' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '#             network client that provides anonymous' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '#             trasport. See following link for source' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '#             of this script' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '#             https://terminal28.com/anonymity-online-how-to-install-and-configure-squid3-tor-privoxy-debian-ubuntu-linux/' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '### END INIT INFO' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'set -e' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    ## Note if installing from source some of these file path
    #   variables may need changed
    echo 'DAEMON=/usr/sbin/tor' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo "NAME=tor" | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'DESC="tor daemon"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo "CONFDIR=${_tor_dir:-/etc}/tor" | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo "TORPIDDIR=/var/run/tor_${_tor_node_nickname}" | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo "TORPID=\$TORPIDDIR/tor_${_tor_node_nickname}" | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo "DEFAULTSFILE=${_tor_dir:-/etc}/defaults/\$NAME" | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'WAITFORDEAMON=60' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo "ARGS=\"--quiet -f\"\$CONFDIR/torrc-${_tor_node_nickname}\"" | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '# Set sane defaults' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'if [ -r /proc/sys/fs/file-max ]; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  system_max=`cat /proc/sys/fs/file-max`' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  if [ "$system_max" -gt "80000" ]; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      MAX_FILEDESCRIPTORS=32768' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  elif [ "$system_max" -gt "40000" ]; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      MAX_FILEDESCRIPTORS=16384' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  elif [ "$system_max" -gt "10000" ]; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      MAX_FILEDESCRIPTORS=8192' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  else' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      MAX_FILEDESCRIPTORS=1024' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      cat << EOF' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'Warning: Your system has very few filedescriptors available in total' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo "Maybe you should try rassing that by adding 'fs.file-max=10000' to your" | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '/etc/sysctl.conf file. Feel free to pick any number that you deem appropriate.' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo "Then run 'sysctl -p'. See /proc/sys/fs/file-max for the current value, and" | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'file-nr in the same directory for how many of those are sed at the moment' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'EOF' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'else' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  MAX_FILEDESCRIPTORS=8192' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'NICE=""' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'test -x $DEAMON || exit 0' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '# Include tor defaults if available' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'if [ -f $DEFAULTSFILE ]; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  . $DEFAULTSFILE' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'wait_for_deaddaemon () {' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  pid=$1' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  sleep 1' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  if test -n "$pid"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      if kill -0 $pid 2>/dev/null' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo -n "."' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          cnt=0' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          while kill -0 $pid 2>/dev/null' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          do' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '              cnt=`expr $cnt + 1`' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '              if [ $cnt -gt $WAITFORDAEMON  ]; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '                  echo "still running"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '                  exit 1' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '              fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '              sleep 1' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '              echo -n "."' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          done' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  return 0' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '}' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'check_torpiddir () {' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  if test ! -d $TORPIDDIR' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      echo "There is no $TORPIDDIR directory. Creating one for you."' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      mkdir -m 02750 "$TORPIDDIR"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo "      chown ${_tor_node_user:-debian-tor}:${_tor_node_user:-debian-tor} \"\$TORPIDDIR\"" | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  if test ! -x $TORPIDDIR' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      echo "Cannot access $TORPIDDIR directory, are you root?" >&2' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      exit 1' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '}' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'check_config () {' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  if ! $DAEMON --verify-config > /dev/null' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      echo "ABORTED: Tor configuration invalid" >&2' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      $DAEMON --verify-config >&2' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      exit 1' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '}' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'check_torlogdir () {' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  if ! [ -d "$TORLOGDIR" ]; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      mkdir -m 02750 "$TORLOGDIR"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo "      chown ${_tor_node_user:-debian-tor}:adm \"\$TORLOGDIR\"" | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      ! [ -x /sbin/restorecon ] || /sbin/restorecon \"$TORLOGDIR\"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '}' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'case "$1" in ' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  start)' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  if [ "$RUN_DAEMON" != "yes" ]; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      echo "Not starting $DESC (Dissabled in $DEFAULTSFILE)."' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      exit 0' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  if [ -n "$MAX_FILEDESCRIPTORS" ]; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      echo -n "Raising maximum number of filedescriptors (ulimit -n) to $MAX_FILEDESCRIPTORS"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      if ulimit -n "$MAX_FILEDESCRIPTORS"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo "."' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      else' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo ": FAILED."' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  check_torpiddir' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  check_torlogdir' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  echo "Starting $DESC: $NAME..."' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  check_config' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  echo "Starting $DESC: $NAME..."' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    ## Notice 1 : This is where firejail should be added if used,
    #   otherwise try another "Sandbox" utility for keeping unknown
    #   vunerabilities from easily infecting the rest of your system
    ## Notice 2 : This is also one of the places to modify if installing
    #   app-amore from source, if you expect the next [if] statment
    #   to find the app-armor exicutables
    ## Notice 3 : Additionally this is where calls to chroot should
    #   be preformed if running in chroot jail.
    echo '  if start-stop-daemon --stop --signal 0 --quiet --pidfile $TORPID --exec $DAEMON; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      echo "$NAME already running"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  else' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      if [ "$USE_AA_EXEC" = "yes" ] && [ -x /usr/sbin/aa-status ] && [ -x /usr/sbin/aa-exec ] && [ -e /etc/apparmor.d/system_tor ] && /usr/sbin/aa-status --enabled ; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          AA_EXEC="--startas /usr/sbin/aa-exec"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          AA_EXEC_ARGS="--profile=system_tor -- $DAEMON"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      else' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          AA_EXEC=""' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          AA_EXEC_ARGS=""' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      if start-stop-daemon --start --quiet --pidfile $TORPID $NICE $AA_EXEC --exec $DAEMON -- $AA_EXEC_ARGS $DEFAULT_ARGS $ARGS; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo "$NAME done"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      else' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo "Error starting $NAME"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          return 1' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  ;;' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  stop)' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      echo -n "Stopping $DESC: "' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      pid=$(cat $TORPID 2>/dev/null) || true' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      if ! test -f $TORPID -o -z "$pid"; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo "not running"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          return 0' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      if start-stop-daemon --stop --signal INT --quite --pidfile $TORPID --exec $DAEMON; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          wait_for_deaddaemon $pid' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      elif kill -0 $pid 2>/dev/null; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo "Is $pid not $NAME? Is $DAEMON a different binary now?"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          return 1' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      else' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo "$DAEMON died: process $pid not running; or permission denied"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          return 1' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  ;;' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    ## End of nessisary edits section
    echo '  reload|force-reload)' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      check_config' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      echo "Reloading $DESC configuration"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      pid=$(cat $TORPID 2>/dev/null) || true' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      if test ! -f $TORPID -o -z "$pid"; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo "not running - there is no $TORPID"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          return 1' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      if start-stop-daemon --stop --signal 1 --quiet --pidfile $TORPID --exec $DAEMON' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo "done"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      elif kill -0 $pid 2>/dev/null; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo "Is $pid not $NAME? Is $DAEMON a different binary now?"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          return 1' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      else' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo "$DAEMON died: process $pid not running; or permission denied"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          return 1' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  ;;' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  restart)' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      check_config' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      $0 stop' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      sleep 1' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      $0 start' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  ;;' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  status)' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      if test ! -r $(dirname $TORPID); then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo "cannot read PID file $TORPID"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          return 4' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      pid=$(cat $TORPID 2>/dev/null) || true' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      if test ! -f $TORPID -o -z "$pid"; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo "$NAME is not running"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          return 3' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      if ps "$pid" >/dev/null 2>&1; then' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo "$NAME is running"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          return 0' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      else' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          echo "$NAME is not running"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '          return 1' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      fi' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  ;;' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  *)' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      echo "Usage: $0 (start|stop|restart|reload|force-reload|status)"' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '      return 1' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo '  ;;' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'esac' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo 'exit 0' | sudo tee -a ${_init_dir}/tor_${_tor_node_type}
    echo "## Attention [Write_tor_init] function finished writing init file for [${_tor_node_type}]]"
    echo "# now providing [${_init_dir}/tor_${_tor_node_type}] exicutable permissions"
    sudo chmod +x ${_init_dir}/tor_${_tor_node_type}
}
Activate_torrc_nonclient(){
    _tor_node_user="${1:-debian-tor}"
    _tor_node_name="${2:?}"
    echo "## Activating configs for [torrc-${_tor_node_name}] now."
    echo "# With lib file path under [/var/lib/tor_${_tor_node_name}]"
    sudo install -o ${_tor_user:-debian-tor} -g ${_tor_user:-debian-tor} -m 700 /var/lib/tor_${_tor_node_name:-service} || Arg_checker --help='Activate_torrc_nonclient' --exit='# [sudo install -o ${_tor_user:-debian-tor} -g ${_tor_user:-debian-tor} -m 700 /var/lib/tor_${_tor_node_name}] # Failed'
}
Write_tor_bridge_configs

O acima deve deixar você mais perto de seus objetivos, como afirmado anteriormente, estarei depurando o pacote de scripts principal e adicionando recursos, então fique à vontade para fazer solicitações por meio do sistema de rastreamento do GitHub, até o final do mês (fornecimento de saúde e tempo) Estarei adicionando instaladores para Whonix, mas precisarei de ajuda nos testes, pois todos os meus sistemas parecem brigar com a instalação KVMe VMWareos pré-requisitos.

informação relacionada