Устанавливаем tor:
# aptitude install tor
Приводим конфиг torrc к такому виду:
Nickname ZZ35QQ
ContactInfo Person somebody@example.com
ControlPort 9051
DirPort 9030
ExitPolicy accept *:80
ExitPolicy accept *:443
ExitPolicy reject *:*
ORPort 9001
DataDirectory /var/lib/tor
PidFile /var/run/tor/tor.pid
RunAsDaemon 1
User debian-tor
ControlSocket /var/run/tor/control GroupWritable RelaxDirModeCheck
ControlSocketsGroupWritable 1
SocksPort unix:/var/run/tor/socks WorldWritable
SocksPort 9050
CookieAuthentication 1
CookieAuthFileGroupReadable 1
CookieAuthFile /var/run/tor/control.authcookie
Log notice file /var/log/tor/log
Что бы проксировать запросы в tor, нужен http -> socks proxy (так как tor – это socks proxy и нужен какой-то транслятор), я выбрал privoxy. Устанавливаем privoxy:
# aptitude install privoxy
и приводим конфиг config к такому виду:
confdir /etc/privoxy
logdir /var/log/privoxy
actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.
actionsfile default.action # Main actions file
actionsfile user.action # User customizations
filterfile default.filter
filterfile user.filter # User customizations
logfile logfile
debug 1 # Log the destination for each request Privoxy let through.
listen-address 127.0.0.1:8118
toggle 1
enable-remote-toggle 0
enable-remote-http-toggle 0
enable-edit-actions 0
enforce-blocks 0
permit-access 0.0.0.0/0
buffer-limit 4096
forward-socks5 / 127.0.0.1:9050 .
forwarded-connect-retries 0
accept-intercepted-requests 1
allow-cgi-request-crunching 0
split-large-forms 0
keep-alive-timeout 5
socket-timeout 300
Если после запуска получаете ошибку
Invalid header received from client
то нужно выставить параметр (в моём конфиге он уже выставлен)
accept-intercepted-requests 1
Для заворота исходящего трафика через tor, используем 2 правила: первое для транзитных пакетов (например, если к серверу подключаются через VPN), второе – для трафика самого сервера
# iptables -t nat -A PREROUTING -p tcp -m multiport --dport 80,443 -j REDIRECT --to 8118
# iptables -t nat -A OUTPUT -p tcp -m multiport --dport 80,443 -j REDIRECT --to 8118
Примечание.
У меня на одной из инсталляций не срабатывал редирект трафика для openvpn клиентов. Пришлось поднимать redsocks (есть в репозитории Debian) proxy. Конфигурационный файл /etc/redsocks.conf приводим к такому виду:
base { log_info = on; log = "file:/var/log/redsocks.log"; daemon = on; user = redsocks; group = redsocks; redirector = iptables; } redsocks { local_ip = 10.22.22.1; local_port = 7788; ip = XX.XX.XX.XX; port = YYYYY; type = socks5; login = "foobar"; password = "baz"; } redudp { local_ip = 10.22.22.1; local_port = 7799; ip = XX.XX.XX.XX; port = YYYYY; udp_timeout = 30; udp_timeout_stream = 180; }
где XX.XX.XX.XX – IP socks5 прокси, YYYYY – соответственно порт.