Что нового

Article [6] Умный VPN-сервер на Raspberry Pi: Tor (Anonymity Network)

Vander 0

Vander

Команда форума
10.11.2019
477
1 093
1616244850049.png

Для начала введите эти 4 команды, чтобы обновить / обновить вашу ОС Raspbian и установить Tor:

Код:
sudo -s
apt-get update
apt-get upgrade
apt-get install tor
Следующим шагом нужно отредактировать файл конфигурации Tor, torrc:

Код:
nano /etc/tor/torrc
Скопируйте / вставьте следующие строки в верхнюю часть файла torrc:

Код:
#VPN Pi TOR Settings

Log notice file /var/log/tor/notices.log
VirtualAddrNetworkIPv4 10.192.0.0/16

TransPort 10.8.0.1:9040
#TransListenAddress 10.8.0.1

DNSPort 10.8.0.1:9053
#DNSListenAddress 10.8.0.1

AutomapHostsOnResolve 1
1616245017067.png

Нажмите Ctrl + X и Y, чтобы сохранить и выйти.

Виртуальная сеть Tor находится на 10.192.x.x, в то время как она будет прослушивать данные в сети 10.8.x.x.

Обратите внимание, что эта «прослушивающая» сеть аналогична той, которую OpenVPN использует для своей виртуальной сети - именно так мы свяжем их вместе. Вы увидите это дальше.

Теперь нам нужно изменить файл OpenVPN server.conf, чтобы позволить Tor взаимодействовать с ним.

Код:
nano /etc/openvpn/server.conf
Теперь закомментируйте эти 6 строк, поместив перед ними символ #, как показано:

Примечание: Локальный IP-адрес, IP-адреса последнего маршрута и dhcp-option будут отличаться в зависимости от вашей сети. Это IP-адрес вашего Raspberry PI для локального и последнего маршрута и IP-адрес вашего маршрутизатора в dhcp-option.

Код:
# local 192.168.3.50
# ifconfig 10.8.0.1 10.8.0.2
# push "route 10.8.0.1 255.255.255.255"
# push "route 10.8.0.0 255.255.255.0"
# push "route 192.168.3.50 255.255.255.0"
# push "dhcp-option DNS 192.168.3.1"
1616245198864.png

Затем нам нужно изменить эту строку:

Код:
push "redirect-gateway def1"
Чтобы она выглядела так:

Код:
push "redirect-gateway def1 bypass-dhcp"
В файле server.conf все еще есть строка server 10.8.0.0 255.255.255.0.

Это та же сеть, которую Tor будет прослушивать, связывая две службы вместе. Скрипт /root/open_vpn_firewall.sh больше бесполезен, так как мы заменим его более крупным и сложным. Так что давайте, просто отключим его.

Код:
crontab -e
И закомментируйте команду @reboot, поместив перед ней символ #:

Код:
# @reboot /root/open_vpn_firewall.sh &
1616245310375.png

Для наших новых правил iptables мы поместим новый файл в папку /root, чтобы упростить поиск и управление.

Дадим ему имя:

Код:
nano /root/iptables_rules.sh
Скопируйте / вставьте следующие строки в пустое окно редактора nano:

Код:
#!/bin/bash

sleep 30
Adapter=`ip -o link show | awk '{print $2,$9}' | grep 'UP'| awk -F: '{print $1}'`
if [ -z "$Adapter" ]
then
    Adapter='eth0'
fi
echo "Adapter = |$Adapter|"

# Clear iptables
iptables -F
iptables -t nat -F
iptables -X

# Accept Established, Related connections
iptables -A INPUT -i $Adapter -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o $Adapter -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun0 -o lo -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun0 -o lo -j ACCEPT
iptables -A FORWARD -i lo -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i lo -o tun0 -j ACCEPT

# Accept localhostloop
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Accept SSH
iptables -A INPUT -i $Adapter -p tcp -m tcp --dport 22 -j ACCEPT

# Accept Tor Ports
iptables -A INPUT -i $Adapter -p tcp -m tcp -m multiport --dports 9001,9030 -j ACCEPT

# Accept OpenVPN
iptables -A INPUT -i $Adapter -p udp -m udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun0 -s 10.8.0.0/24 -p udp -m udp --dport 123 -j ACCEPT
iptables -A INPUT -i tun0 -s 10.8.0.0/24 -p udp -m udp --dport 53 -j ACCEPT
iptables -A INPUT -i tun0 -s 10.8.0.0/24 -p tcp -m tcp -j ACCEPT

# Tor Transparent Proxy
iptables -t nat -A OUTPUT -o tun0 -j RETURN
iptables -t nat -A PREROUTING -i tun0 -p udp -m udp --dport 123 -j REDIRECT --to-ports 123
iptables -t nat -A PREROUTING -i tun0 -p udp --dport 53 -j REDIRECT --to-ports 9053
iptables -t nat -A PREROUTING -i tun0 -p tcp --syn -j REDIRECT --to-ports 9040
iptables -t nat -A OUTPUT -o lo -j RETURN
iptables -t nat -A OUTPUT -m owner --uid-owner "debian-tor" -j RETURN
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m owner --uid-owner "debian-tor" -j ACCEPT
for NET in 127.0.0.0/8; do
 iptables -A OUTPUT -d $NET -j ACCEPT
done
iptables -A OUTPUT -p udp -m udp --dport 123 -j ACCEPT

Далее делаем скрипт исполняемым и назначаем вледельцем root:

Код:
chmod 700 /root/iptables_rules.sh
chown root /root/iptables_rules.sh
Теперь нам нужно добавить это в наш rc.local для выполнения при загрузке:

Код:
nano /etc/rc.local
И вставьте эти строки в конец файла непосредственно перед строкой exit 0:

Код:
# Open the Firewall for Tor at Boot
/root/iptables_rules.sh &
Нажмите Ctrl + X и Y, чтобы сохранить и выйти.

В основном Tor и OpenVPN предназначены для работы на независимых серверах, если вы хотите, чтобы они общались друг с другом.

Это одна из причин, по которой iptables_rules.sh такой большой и сложный. Но теперь, когда они связаны друг с другом, Tor должен запуститься после того, как OpenVPN будет запущен, иначе он не обнаружит, что OpenVPN создает виртуальную сеть 10.8.x.x, и, следовательно, выйдет из строя.

Затем отключаем автозапуск Tor:

Код:
update-rc.d tor disable
Создаем скрипт автозапуска Tor:

Код:
nano /root/tor_startup.sh
Наполняем его следующим содержимым:

Код:
#!/bin/sh
sleep 30
/usr/sbin/service tor start
Далее делаем скрипт исполняемым и назначаем вледельцем root:

Код:
chmod 700 /root/tor_startup.sh
chown root /root/tor_startup.sh
Теперь мы добавим этот скрипт в crontab, чтобы он запускался при загрузке нашего RPi:

Код:
crontab -e
И вставьте эти строки в конец файла:

Код:
# Start Tor after Boot
@reboot /root/tor_startup.sh &
Нажмите Ctrl + X и Y, чтобы сохранить и выйти.

Примечание. Не забывайте & в конце. Он сообщает Raspbian, что нужно запустить этот скрипт, но не дожидаться его завершения.

Этот скрипт будет ждать 30 секунд после загрузки RPi, а затем запустит службу Tor. К тому времени все (включая OpenVPN) должно быть запущено и готово.

Теперь просто перезагрузите Pi, подождите 30 секунд, пока Tor инициализируется, затем попробуйте подключиться к нему через OpenVPN из-за пределов вашей сети.

После подключения перейдите на любой из этих веб-сайтов, чтобы узнать, какой у вас сейчас публичный IP-адрес. Он должен отличаться от вашего фактического, если Tor работает правильно:

Код:
https://whatsmyip.co
https://icanhazip.com
https://myip.ru
1616246346448.png

На этом я буду заканчивать, а вы, если следовали инструкциям в итоге получили надежный свой VPN сервер с возможностями анонимизиции и шифрования трафика.

Спасибо за внимание, материал подготовлен специально для protey.net.​
 
Верх Низ