Устанавливаем 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 – соответственно порт.