나는 한 컴퓨터에서 whonix 게이트웨이와 워크스테이션을 설정하고 사용하는 데 성공했습니다. 하지만 메모리와 CPU 요구 사항을 분산시키기 위해 이를 다른 호스트에 설정하고 싶습니다.
VM이 서로 다른 호스트에 있을 때 서로 통신하도록 만드는 방법을 찾지 못했습니다. 동일한 시스템에서 워크스테이션을 실행할 때와 마찬가지로 게이트웨이가 제대로 작동하는 것 같습니다. 이제 워크스테이션이 다른 호스트에서 시작되었습니다. 워크스테이션(또는 워크스테이션이 실행 중인 호스트)이 다른 호스트의 게이트웨이에 연결해야 함을 인식하도록 하려면 어떻게 해야 합니까?
두 호스트 모두 Linux Mint 17을 실행 중입니다.
답변1
먼저 몇 가지 메모를 해보세요. StackExchange 문자 제한에 도달했으므로 이는 요약된 답변입니다. 현명하게 사용하세요 ;-)
프라이빗 브릿지 Tor ~=~ 게이트웨이 Whonix
프록시 클라이언트 Tor ~=~ 워크스테이션 Whonix
이러한 용어는 같은 의미로 사용되며 이러한 종류의 설정을 부르는 다른 용어도 있습니다. 다음 대부분에는 Whonix 용어를 최대한 사용하도록 노력하겠습니다.
당신이 찾고 있는 것은 다음과 같습니다.중간 상자또는개인 교량게이트웨이 장치 및 클라이언트( trans-proxy
) 설정을 위한 것입니다. 그만큼라즈베리 파이torrc
Adafruit 팀은 사용자 정의 구성 및 매직을 사용하여 물리적 격리를 설정하는 방법에 대한 매우 잘 정리된 가이드를 제공합니다 iptables
. 게이트웨이에 대한 요구 사항은 두 개의 네트워크 인터페이스가 있어야 한다는 것입니다. 이는 eth0
and eth1
또는 usb0
or일 수 ppp0
있으며 워크스테이션(클라이언트)에는 물리적 네트워크 인터페이스가 하나만 있어야 합니다. 바람직하게 는 유혹을 피하려고 노력 eth0
하면 완화하기 쉽고 공격하기 쉽지 않은 보다 국지적인 공격과 모니터링에 노출될 수 있습니다. 이 가이드는 "Tor WiFi 핫스팟"이라는 이름으로도 사용되므로 일반적으로 Linux 및 Tor로 검색 쿼리를 확장할 수 있습니다. WiFi 사용을 권장하지는 않지만 주제를 다루는 가이드는 게이트웨이 및 워크스테이션에서 거래 를 통해 쉽게 수정할 수 있습니다.usb0
wlan0
wlan0
eth1
wlan0
eth0
저는 이번 기회에 스크립트 팩을 작성해 왔습니다.당신의 행운의 날, 완료되면 구성 보안도 감사할 수 있는 스크립트 팩의 첫 번째 초안을 방금 게시했기 때문입니다. GitHub에서 소스 코드를 살펴보고 /functions/tor/torrc_writers/torrc_bridge_configs.sh
사용 가능한 다양한 구성에 대한 파일을 확인하세요. 하단에 명확한 문서가 없는 스크립트/함수가 있는 경우 문제를 열고 다음 푸시에 더 많은 정보가 포함되도록 노력하겠습니다. 앞으로 며칠 동안 기능을 추가하고 디버깅할 예정이지만 테스트하고 싶은 경우 로드할 간단한 변수 파일 예제는 다음과 같습니다.
_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"
그런 다음 위의 변수 파일이 포함된 스크립트를 다음과 같이 호출합니다.
bash /home/${USER}/Downloads/Perinoid_Linux_Project/sandcastle.sh --var-file="/path/to/bridge_variables.sh"
그리고 그것이 작동한다면 (대부분의마술/functions/shared/arg_checker.sh
궁금한 경우 기능이 수행됩니다 .) 원하는 대로 게이트웨이를 구성해야 하며 별도의 시작/중지 스크립트를 사용하여 게이트웨이 장치에서 브리지 서비스를 시작하는 것은 다음과 같이 쉬워야 합니다.
sudo /etc/init.d/tor-bridge restart
워크스테이션의 경우 게이트웨이 장치에서 게이트웨이 브리지를 사용할 수 있어야 합니다. 방화벽은 아직 스크립트가 작성되지 않았지만 여러분이 살펴보고 싶을 수도 있는 디렉터리 iptables
필터링 및 전달을 위한 시작 위치를 제공했습니다 ./firewall
특정 질문에 답변하기 위해 수정된 코드
다음은 데비안 기반 chroot 감옥이나 가상화 감옥에서 사용할 수 있는 수정된 버전입니다(위에 링크된 코드에서 관련 비트를 뽑아내고 이 코드를 얼마나 쉽게 재사용할 수 있는지 보여주기 위해 수정했습니다). 내부적으로 실행되므로 sudo
비밀번호를 묻는 메시지가 표시됩니다. 이는 정상적인 현상이며 이 버전에서는 Tor가 이미 설치되어 있을 것으로 예상합니다.
bash
이 버전을 실행하는 데 사용합니다 . 즉 bash bridge_tor_script.sh
, 변수와 함수가 제대로 작동하도록 합니다. 다음 코드는 게이트웨이 장치에만 적용됩니다. 브리지 네트워킹을 설정하고 워크스테이션 장치로 전달하고 게이트웨이에서 제공한 IP만 사용하도록 워크스테이션을 잠가야 합니다.
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
위 내용을 통해 이전에 언급한 것처럼 목표에 더 가까워질 것입니다. 메인 스크립트 팩을 디버깅하고 기능을 추가할 예정이므로 이달 말까지 GitHub의 추적 시스템을 통해 자유롭게 요청해 주세요(건강 및 시간 제공). Whonix용 설치 프로그램을 추가할 예정이지만 모든 시스템이 설치 KVM
및 VMWare
사전 요구 사항과 싸우는 것 같기 때문에 테스트에 도움이 필요합니다.