id: Гость   вход   регистрация
текущее время 17:34 28/03/2024
Владелец: vps редакция от 12/09/2017 11:29 (автор: vps) Печать
Категории: софт, приватность, tor, цензура
создать
просмотр
редакции
ссылки

Это старая редакция страницы Черновики / Руководства / V P S Open V P N Torbridgeobfs 4 S O C K S 5 за 12/09/2017 11:29.


VPS (OpenVPN + Tor bridge + obfs4 + SOCKS 5)


Оглавление документа:


Часть 1. VPS сервер


Все действия по запуску и настройке сервера будем производить с локального компьютера с ОС Windows


Создание ключей OpenSSH и копирование публичного ключа


Сервер VPS создаем на хостинге DigitalOcean https://m.do.co/c/25950fd7d1a5


В консоли управления серверами в своем профиле входим в раздел Settings
затем в раздел Security
и в подразделе SSH keys
нажимаем на кнопку Add SSH key


Открывается окно New SSH Key


На локальной машине запускаем утилиту puttygen.exe из пакета PuTTY


В меню Key
устанавливаем тип ключа SSH-2 RSA key


В поле ввода Number of bits in a generated key
вводим размер ключа 4096 бит
и нажимаем кнопку Generate


Когда генерация завершится, копируем в буфер обмена содержимое поля
Public key for pasting into OpenSSH authorized_keys file


Затем на хостинге в ранее открытом окне New SSH Key
вставляем его в поле SSH key content


Выглядит оно примерно так


ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAuRLE
MZxuCjiogxmWuSk79aZh4kMsRVjjOQLbRO8hk9lR
C3u9nq1PKPxG0PXoXDt3VDGsf3w3gavP4xvxpyTX
MKG6wXVlqrNhl5xcpxJwcBxsblro1D9tNrSaTHz9
irKrZQCrYSpZ9LbyQ4QQw== rsa-key-20170830


В поле Name
задаем название ключа Main PuTTY key 4096
и сохраняем открытый ключ кнопкой Add SSH Key


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


В окне PuTTY Key Generator
нажимаем на кнопку Save private key
и сохраняем секретный ключ в файле id_rsa.ppk


Создание VPS


В своем профиле в разделе Droplets
нажимаем на кнопку Create
и выбираем Droplets


В окне Create Droplets
выбираем


Choose an image
Distributions
Ubuntu 16.04.3 x64


Choose a size
Standard
$5/mo


Choose a datacenter region
Frankfurt 1
(смотрим страницу с пингами серверов,
также можно Amsterdam 2 или Amsterdam 3)


Add your SSH keys
Main PuTTY key 4096
(выбираем ранее сохраненный открытый ключ)


Finalize and create
Choose a hostname
ubuntu-512mb-fra1-01
(изменяем сгенерированное имя на server)


Через 55 секунд VPS будет создан,
но письмо с паролем root отправлено на почту не будет,
так как этот сервер изначально был создан для доступа только по ключам


Настройка PuTTY


Запускаем на локальной машине утилиту putty.exe
из пакета PuTTY


Слева в окне Category
последовательно выбираем следующие пункты


Пункт Session


Host Name (or IP address)
копируем сюда публичный IP адрес VPS
из раздела Droplets в консоли управления


Port
оставляем 22, см. ниже общие замечания


Saved Sessions
указываем название server


Пункт Connection
подпункт Data


Auto-login username
указываем суперпользователя root
(после отключения root-доступа
это поле будет изменено на user)


Пункт Connection
подпункт SSH
подпункт Auth
указываем путь к приватному ключу
d:\id_rsa.ppk


Пункт Session


Нажимаем кнопку Save
и сохраняем сессию с именем server


Теперь нажимаем кнопку Open
и входим на server
от имени суперпользователя root
по закрытому ключу d:\id_rsa.ppk


Создание и настройка регулярного пользователя


Для усиления безопасности сервера создаем регулярного пользователя


adduser user


Назначаем ему криптографически стойкий пароль


На остальные вопросы просто нажмем клавишу Enter


Добавляем пользователя в группу sudo



Нужно разрешить ему входить на сервер по SSH, для этого копируем папку /root/.ssh/ в профиль user



Затем изменяем владельца и права доступа на скопированную папку и файл в ней


chown user:user /home/user/.ssh/
chown user:user /home/user/.ssh/authorized_keys
chmod 0700 /home/user/.ssh/
chmod 0600 /home/user/.ssh/authorized_keys


После этого разрешаем вход пользователей по ключу, отредактировав файл sshd_config


nano /etc/ssh/sshd_config


Для этого удаляем символ комментария # из начала этой строки


AuthorizedKeysFile %h/.ssh/authorized_keys


Теперь останавливаем и снова запускаем службу ssh для применения изменений (текущее соединение при этом разорвано не будет)


systemctl stop ssh
systemctl start ssh


После чего выходим из сессии


exit


Далее будем работать от имени регулярного пользователя user


Вход от имени регулярного пользователя


Запускаем утилиту putty.exe


Справа в поле сохраненных сессий выбираем server
и нажимаем на кнопку Load


В левом окне Category выбираем следующие пункты


Пункт Connection
подпункт Data


Auto-login username
имя root
изменяем на user


Пункт Session


Нажимаем кнопку Save
и сохраняем новые настройки сессии server


Затем нажимаем кнопку Open
и входим на server
от имени пользователя user
по закрытому ключу OpenSSH
(теперь все команды с повышением привилегий будем выполнять через команду sudo после введения пароля пользователя user)


Для еще большей безопасности желательно также запретить вход по SSH суперпользователю root


sudo nano /etc/ssh/sshd_config


Изменяем строку


PermitRootLogin yes


На строку


PermitRootLogin no


Для применения изменений останавливаем и снова запускаем службу ssh


systemctl stop ssh
systemctl start ssh


Настройка фаервола


Поставляемый в Ubuntu простой фаервол UFW по умолчанию не активирован


Активируем его


sudo ufw enable


Если не используется интернет протокол шестой версии, то нужно отключить его поддержку


sudo nano /etc/default/ufw


заменив строку


IPV6=yes


строкой


IPV6=no


После этого задаем разрешающие правила


Разрешаем все входящие подключения к серверу для портов,
которые будем назначать Tor мосту (443)
и OpenVPN серверу (993)


sudo ufw allow 443
sudo ufw allow 993


Правило же для подключения по SSH (порт 22) по умолчанию активируется при активации фаервола. Нужно просто следить, чтобы не удалить его впоследствии и не утратить доступ к серверу. См. ниже общие замечения.


Для применения изменений останавливаем и вновь запускаем фаервол


sudo ufw disable
sudo ufw enable


В части 3 добавим в фаервол еще одно разрешающее правило для подключения к obfs4proxy, номер порта которого нам еще не известен, впоследствии он будет сгенерирован автоматически. Можно задать его принудительно директивой ServerTransportListenAddr в файле конфигурации torrc, но разработчики это не рекомендуют, так как снижается защищенность.


Защита SSH сервера от брутфорса


Хотя мы уже защищены от брутфорса, так как не используем аутентификацию пользователей по паролю, но соединения от атакующих серверов все равно продолжают устанавливаться и нагружать VPS, поэтому желательно их вообще не устанавливать. Служба fail2ban реагирует на незаконные попытки доступа, автоматически изменяя конфигурацию фаервола iptables на основе предопределенного количества неудачных попыток входа в систему.


Устанавливаем fail2ban


sudo apt update && sudo apt install fail2ban


Делаем копию файла конфигурации для внесения в нее собственных директив, попутно закомментировав в ней все строки


awk '{ printf "# "; print; }' /etc/fail2ban/jail.conf | sudo tee /etc/fail2ban/jail.local


Пользовательские настройки из файла .local парсятся после системных настроек из файла .conf и переопределяют их, но файлы .local защищены от автоматического обновления из репозитория.


Открываем файл jail.local


sudo nano /etc/fail2ban/jail.local


Вставляем в начало файла следующие директивы
(не копируйте кириллические комментарии в конфиг)


[DEFAULT]
bantime = 86400 # банить на одни сутки того,
# findtime = 600 # кто в течение 10 минут
maxretry = 3 # три раза сфейлил с аутентификацией


[sshd]
enabled = true # активировать правило для ssh сервера
port = ssh,80 # добавить порт 80 если добавили его для доступа по ssh см. ниже общие замечания
logpath = %(sshd_log)s


[sshd-ddos]
enabled = true
port = ssh,80
logpath = %(sshd_log)s


Применяем сделанные изменения и смотрим на результат запуска службы


sudo systemctl stop fail2ban.service
sudo systemctl start fail2ban.service
sudo systemctl status fail2ban.service


Ищем строку зеленого цвета


Active: active (running)


Либо


Active: active (exited)


Проверяем, создал ли fail2ban новые правила в iptables



Создал


-N f2b-sshd
-N f2b-sshd-ddos
-A INPUT -p tcp -m multiport --dports 22,80 -j f2b-sshd-ddos
-A INPUT -p tcp -m multiport --dports 22,80 -j f2b-sshd
-A f2b-sshd -j RETURN
-A f2b-sshd-ddos -j RETURN


Тестирование защиты SSH


Создаем новый временный сервер VPS и входим на него. Выполняем несколько команд подключения к тестируемому серверу от имени несуществующего пользователя (fake) по IP адресу тестируемого сервера (111.222.333.444)


ssh fake@111.222.333.444


После этого входим на тестируемый сервер через PuTTY с правильными учетными данными и выполняем команду



Убеждаемся, что fail2ban создал в iptables новое запрещающее правило для атакующего сервера


-A f2b-sshd -s 165.227.156.169/32 -j REJECT --reject-with icmp-port-unreachable


А вот и второе правило сработало, но вызвал его уже не наш сервер


-A f2b-sshd-ddos -s 46.133.187.178/32 -j REJECT --reject-with icmp-port-unreachable


Общие замечания


Закрытый ключ доступа к серверу желательно хранить на зашифрованной флешке/разделе.
Также желательно иметь доверенное лицо, имеющее доступ к вашему профилю на хостинге, которое сможет уничтожить ваш сервер если вы внезапно заболеете, или уедете, или будете как то иначе ограничены в свободе действий. В противном случае счета будут продолжать выставляться. Если вдобавок к этому вы не создадите криптографически стойкий пароль к своему профилю и не включите двухфакторную аутентификацию, и по этой причине его смогут взломать, то за время вашего вынужденного отсутствия успеют создать целый кластер мощных серверов и ваши счета могут увеличиться до десятков тысяч долларов https://geektimes.ru/post/247794/
Если провайдерский или корпоративный фаервол блокирует выход в интернет со всех портов, кроме 80 и 443, то придется использовать либо один из них для OpenVPN сервера, а второй для Tor моста, либо поднимать для каждого сервиса свой отдельный VPS и на каждом использовать порт 443, но это удвоит затраты на обеспечение доступа к интернету.
Если 22 порт тоже заблокирован, то можно назначить 80 для доступа по SSH. Но тогда если сразу создать VPS с доступом только по сертификату, то придется дополнительно запросить сброс пароля root, чтобы по нему войти на сервер из консоли управления на хостинге и изменить порт SSH с 22 на 80. Либо нужно создавать VPS с доступом по паролю root, а потом из консоли управления на хостинге производить смену порта и настройку доступа по сертификату.
Добавляя порт 80 для подключения по SSH, можно не отключать порт 22, а указать его вторым портом, добавив директиву Port 80 ниже директивы Port 22 в файле sshd_config и впоследствии иметь доступ из разных мест.

Часть 2. OpenVPN сервер


Теперь установим и настроим первый сервис для приватного доступа к интернету


Установка OpenVPN сервера


Сначала устанавливаем пакет OpenVPN и пакет easy-rsa


sudo apt update && sudo apt upgrade
sudo apt install openvpn easy-rsa


Затем создаем в профиле пользователя user директорию центра сертификации и перемещаемся в нее


make-cadir /openvpn-ca && cd /openvpn-ca


Далее настраиваем переменные центра сертификации


nano vars


Для этого отредактируем некоторые строки файла vars следующим образом (можно использовать иные значения переменных, но не следует оставлять их пустыми)


export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York City"
export KEY_ORG="DigitalOcean"
export KEY_EMAIL="admin@example.com"
export KEY_OU="Community"
. . .
export KEY_NAME="server"


После этого создаем центр сертификации


На все вопросы отвечаем нажатием клавиши Enter


cd /openvpn-ca
source vars
./clean-all
./build-ca


Далее создаем сертификат, файлы шифрования и ключ для сервера. На все вопросы также отвечаем нажатием клавиши Enter, challenge password задавать не будем, а на вопросы о подписании и подтверждении создания сертификата вводим y и нажимаем клавишу Enter



Теперь все готово и можно создавать сертификат и пару ключей для первого клиента


cd /openvpn-ca
source vars
./build-key client1


Настройка сервиса OpenVPN


Выполняем копирование созданных в профиле файлов ключей и сертификатов в директорию /etc/openvpn


cd /openvpn-ca/keys
sudo cp ca.crt ca.key dh2048.pem server.crt server.key ta.key /etc/openvpn


Затем извлекаем в ту же директорию файл с примером конфигурации сервера



На основании файла примера нужно создать собственную конфигурацию сервера


sudo nano /etc/openvpn/server.conf


Для этого нужно отредактировать следующие директивы
(не копируйте кириллические комментарии в конфиг)


port 993 # изменяем порт по умолчанию
push "redirect-gateway def1 bypass-dhcp" # раскомментируем строку
push "dhcp-option DNS 208.67.222.222" # раскомментируем строку
push "dhcp-option DNS 208.67.220.220" # раскомментируем строку
tls-auth ta.key 0 # This file is secret # раскомментируем строку
key-direction 0 # добавляем строку
cipher AES-128-CBC # раскомментируем строку
auth SHA256 # добавляем строку
user nobody # раскомментируем строку
group nogroup # раскомментируем строку


OpenVPN по умолчанию работает на порту 1194 по протоколу UDP. Если есть опасение о возможном его блокировании провайдером или корпоративным фаерволом, то можно выбрать другой порт. Желательно использовать распространенные порты, изначально предназначенные для зашифрованного соединения


HTTPS 443
POP3 995
SMTP 465
IMAP 993
IMAP4 585


Менее предпочтительны распространенные порты, не предназначенные для зашифрованного соединения


HTTP 80 (дополнительный 8080)
POP3 110
SMTP 25
IMAP 143
IMAP3 220


Порты, используемые Apple Podcast Capture


HTTPS 8170
HTTP 8171


Поискать подходящие порты можно по этим ссылкам


https://ru.adminsub.net/tcp-udp-port-finder/imap
https://www.iana.org/assignmen.....s-port-numbers.xhtml


При необходимости можно изменить протокол на TCP (директива proto tcp), но он добавит в трафик избыточность и несколько замедлит скорость соединения. При выборе TCP также нужно изменить директиву dev tun на dev tap, но этот вариант я не тестировал, поэтому ищите информацию отдельно. Если обеспечение высокой скорости соединения не является критически важным, то можно последовать рекомендациям сообщества OpenVPN и изменить в директиве cipher AES-128-CBC значение на 256 и протестировать приемлемость скорости соединения.


Далее настраиваем сетевую конфигурацию сервера


sudo nano /etc/sysctl.conf


Для этого раскомментируем одну строку


net.ipv4.ip_forward=1


Чтобы применить настройки к текущей сессии выполняем команду



Настройка правил фаервола


Для маскарадинга соединений клиентов нужно настроить правила фаервола


sudo nano /etc/ufw/before.rules


Добавляем в начало файла нижеприведенные строки, начиная со строки # START OPENVPN RULES по строку # END OPENVPN RULES.



Теперь разрешаем перенаправляемый трафик по умолчанию


sudo ufw default allow forward


Затем запускаем сервис OpenVPN и проверяем результат


sudo systemctl start openvpn@server
sudo systemctl status openvpn@server


В выдаче должна присутствовать строка зеленого цвета


Active: active (running)


Либо


Active: active (exited)


Далее проверяем доступность интерфейса OpenVPN


ip addr show tun0


Выдача должна содержать подобные строки


3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever


Теперь задаем автоматическую активацию сервиса при загрузке сервера


sudo systemctl enable openvpn@server


Настройка клиентов


Создаем инфраструктуру настройки клиентов



В базовой конфигурации отредактируем следующие директивы
(не копируйте кириллические комментарии в конфиг)


remote ххх.ххх.ххх.ххх 993 # Указываем IP адрес VPS и порт 993
user nobody # раскомментируем строку
group nogroup # раскомментируем строку
;ca ca.crt # закомментируем строку
;cert client.crt # закомментируем строку
;key client.key # закомментируем строку
cipher AES-128-CBC # добавляем строку как в файле /etc/openvpn/server.conf
auth SHA256 # добавляем строку как в файле /etc/openvpn/server.conf
key-direction 1 # добавляем строку
;script-security 2 # добавляем закомментированную строку (для клиентов на Linux)
;up /etc/openvpn/update-resolv-conf # добавляем закомментированную строку
;down /etc/openvpn/update-resolv-conf # добавляем закомментированную строку


Далее создаем скрипт для генерации файлов конфигурации


nano /client-configs/make_config.sh


Вставляем в созданный файл скрипта следующие строки
(nano подсветит его синтаксис)



Теперь делаем файл скрипта исполняемым файлом


chmod 700 /client-configs/make_config.sh


Сгенерируем конфигурацию для своего первого клиента
(можно последовательно генерировать для нескольких клиентов, задавая им новые имена)


cd /client-configs
./make_config.sh client1
ls /client-configs/files


Доставку конфигурации с сервера клиенту осуществляем, используя утилиту pscp.exe из пакета PuTTY


Запускаем на локальной машине командный интерпретатор cmd


И устанавливаем временную переменную пути к исполняемым файлам PuTTY


set PATH=d:\PuTTY;%PATH%


Затем получаем файл конфигурации с сервера командой


pscp server:/home/user/client-configs/files/client1.ovpn d:\client1.ovpn


pscp – команда трансфера файлов
server – имя сессии, сохраненной в PuTTY
/home/user/client-configs/files/client1.ovpn – файл источник на сервере
d:\client1.ovpn – целевой файл на локальной машине


Установка файла конфигурации клиента


Устанавливаем клиентский профиль OpenVPN на Windows


Название соединения OpenVPN соответствует названию .ovpn файла: client1


Клиент для работы с OpenVPN для Windows загружаем со страницы загрузок OpenVPN


Выбираем необходимую нам версию установщика


Установка OpenVPN требует администраторской учетной записи


После установки OpenVPN копируем .ovpn файл в эту директорию


C:\Program Files\OpenVPN\config


При запуске OpenVPN клиент должен автоматически увидеть наш профиль


Клиент OpenVPN требует запуска с правами администратора


Установление VPN соединения


Запуск клиента OpenVPN просто помещает приложение в системный трей, при этом само соединение не устанавливается автоматически


Для установки соединения делаем щелчок правой кнопкой мыши на иконке OpenVPN в системном трее


В открывшемся контекстном меню выбираем client1 (это наш профиль client1.ovpn) и нажимаем Connect


Открывается окно статуса, которое будет отображать лог соединения


При завершении соединения отображается соответствующее сообщение


Закрыть VPN соединение можно так же: сделать щелчок правой кнопкой мыши на иконке OpenVPN в системном трее, выбрать профиль клиента и нажать Disconnect


Тестирование VPN соединения


Без установки соединения с VPN открываем браузер и заходим на сайт https://www.dnsleaktest.com/


Этот сайт возвращает IP адрес, назначенный нашим интернет провайдером


Для того чтобы проверить, какие DNS серверы используются, нажимаем на Extended Test


Теперь устанавливаем соединение, используя VPN клиент, и обновляем страницу в браузере


Теперь возвращаемый IP адрес соответствует нашему VPS


Нажимаем Extended Test ещё раз и видим, что мы используем DNS серверы нашего VPN


Отзыв клиентских сертификатов


Для предотвращения доступа клиента к серверу VPN необходимо отозвать клиентский сертификат


Для этого заходим в директорию центра сертификации на сервере и выполняем команды


cd /openvpn-ca
source vars


Далее используем команду revoke-full с именем клиента, сертификат которого хотим отозвать


./revoke-full client3


Вывод результатов работы этой команды будет оканчиваться ошибкой 23. Это нормально. В результате работы будет создан файл crl.pem в директории keys с необходимой для отзыва сертификата информацией


Перемешаем этот файл в директорию /etc/openvpn


sudo cp /openvpn-ca/keys/crl.pem /etc/openvpn


Затем открываем файл конфигурации сервера OpenVPN


sudo nano /etc/openvpn/server.conf


И добавляем в конец файла строку


crl-verify crl.pem


Теперь сервер OpenVPN будет проверять список отозванных сертификатов каждый раз, когда кто-то устанавливает соединение с сервером


Перезапускаем OpenVPN для завершения процесса отзыва сертификата


sudo systemctl restart openvpn@server


Теперь клиент не сможет устанавливать соединение с сервером OpenVPN, используя старый сертификат


Для отзыва дополнительных сертификатов выполняем следующее


Генерируем новый список отозванных сертификатов, используя команду source vars в директории /openvpn-ca и выполняя команду revoke-full с именем клиента


Копируем новый список отозванных сертификатов в директорию /etc/openvpn, перезаписывая им старый список


Перезапускаем сервис OpenVPN


Эта процедура может быть использована для отзыва любых созданных ранее сертификатов

Часть 3. Tor мост с обфускацией трафика


Далее организуем еще один канал для приватного доступа к интернету


Установка пакетов Tor и obfs4proxy


Сначала нужно добавить открытый ключ Torproject с сервера ключей



Затем добавляем репозитории Torproject


sudo nano /etc/apt/sources.list


Для этого вставляем в конец файла такие строки



После чего обновляем список пакетов, а затем систему


sudo apt update && sudo apt upgrade


Далее устанавливаем последнюю стабильную версию Tor и obfs4proxy


sudo apt install tor deb.torproject.org-keyring obfs4proxy


Теперь служба Tor установлена и уже работает


Проверяем состояние службы


systemctl status tor.service


В выдаче должна присутствовать одна строка зеленого цвета


Active: active (running)


Либо


Active: active (exited)


А также такие строки


enabled; vendor preset: enabled


и


status=0/SUCCESS


Этой командой можно дополнительно удостовериться, будет ли служба запущена после перезагрузки системы


systemctl is-enabled tor.service


Она должна выдавать строку


enabled


Активировать же запуск при загрузке деактивированной службы можно командой


systemctl enable tor.service


Настройка параметров службы


Далее необходимо настроить файл конфигурации для работы службы в качестве моста с обфускацией трафика


sudo nano /etc/tor/torrc


Вставляем в начало поставляемого в пакете файла следующие директивы
(не копируйте кириллические комментарии в конфиг)


BridgeRelay 1
Nickname eki0tl4w6nr1yxa38p2 # рандомная строка до 19 символов
ContactInfo RandomPerson
ExitPolicy reject *:*
PublishServerDescriptor 0
ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy
SocksPort 0
ORPort 443
ExtORPort auto
Log notice file /var/log/tor/log
TruncateLogFile 1
AvoidDiskWrites 1
HeartbeatPeriod 24 hours


Для ORPort также как и для OpenVPN сервера будем использовать распространенные порты, изначально предназначенные для зашифрованного соединения


PublishServerDescriptor 0 означает не публиковаться нигде, это наш личный мост


Для фиксации одного бага нужно настроить AppArmor


sudo nano /etc/apparmor.d/abstractions/tor


В файле абстракции изменяем 27 строку


Было


/usr/bin/obfs4proxy PUx,


Стало


/usr/bin/obfs4proxy ix,


Чтобы применить все сделанные изменения перезагружаем систему



Получение настроек обфускации


Заново входим на сервер через PuTTY и копируем файл с настройками в профиль пользователя user


sudo cp /var/lib/tor/pt_state/obfs4_bridgeline.txt /home/user/obfs4_bridgeline.txt


Затем изменяем владельца и права доступа к этому файлу


sudo chown user:user /home/user/obfs4_bridgeline.txt
chmod 0777 /home/user/obfs4_bridgeline.txt


После этого запускаем на локальной машине командный интерпретатор cmd и устанавливаем временную переменную пути к исполняемым файлам PuTTY


set PATH=d:\PuTTY;%PATH%


Файл с настройками обфускации получаем с сервера, используя утилиту pscp.exe из пакета PuTTY


pscp server:/home/user/obfs4_bridgeline.txt d:\obfs4_bridgeline.txt


pscp – команда трансфера файлов
server – имя сессии, сохраненной в PuTTY
/home/user/obfs4_bridgeline.txt – файл источник на сервере
d:\obfs4_bridgeline.txt – целевой файл на локальной машине


После получения копии файла удаляем файл источник из домашней директории на сервере


rm /home/user/obfs4_bridgeline.txt


Затем находим в логе номер порта обфускатора


sudo grep obfs4 /var/log/tor/log


Строка выдачи содержит искомый случайно сгенерированный номер порта 36842 (он кэшируется в системе для дальнейшего использования и возобновляется после перезагрузки, но при первоначальной установке или переустановке генерируется заново, чтобы пользователи мостов в сети имели максимально различные порты)


Registered server transport 'obfs4' at '[::]:36842'


Открываем в фаерволе этот порт для входящих подключений, добавив новое правило к правилам, созданным в части 1. Затем применяем сделанные изменения


sudo ufw allow 36842
sudo ufw disable
sudo ufw enable


Использование моста и обфускатора


Запускаем Tor Browser


В окне Tor Status нажимаем кнопку Open Settings


В окне Tor Network Settings нажимаем кнопку Configure


На вопрос, имеется ли цензура, отвечаем Yes


В окне конфигурации моста в поле ввода Enter custom bridges вводим IP адрес VPS и порт 443


Если локальный прокси отсутствует, то нажимаем Connect (если используется, то указываем его)


Заходим на https://pgpru.com/ и проверяем созданную цепочку


Первым хопом значится Unknown country (IP unknown)


Теперь открываем ранее полученный с сервера файл с настройками обфускации obfs4_bridgeline.txt


Вместо масок <IP ADDRESS>:<PORT> вписываем IP адрес VPS и порт обфускатора 36842


А вместо маски <FINGERPRINT> вписываем fingerprint (40 символов) своего моста, который получаем этой командой в терминале сервера (значение fingerprint копируем правой кнопкой мыши в окне терминала PuTTY, предварительно выделив протяжкой мыши по строке)


sudo cat /var/lib/tor/fingerprint


В окне конфигурации моста в поле ввода Enter custom bridges заменяем ранее введенные IP адрес VPS и порт 443 на управляющую строку, полученную в результате описанной выше модификации файла obfs4_bridgeline.txt


После этого перезапускаем Tor Browser


Заново входим на https://pgpru.com/ и проверяем созданную цепочку


Теперь первым хопом значится Bridge: obfs4 (Germany)


Обфускация трафика используется нашим мостом


Создаем отдельные копии Tor Browser'а: одну для соединения через обычный мост, вторую для соединения через мост с дополнительной обфускацией трафика

Часть 4. OpenSSH туннель в роли SOCKS 5 прокси


Если все, что вам нужно – это сокрытие вашего серфинга в интернете, то есть простая альтернатива: туннель SOCKS 5 прокси


SOCKS прокси представляет собой SSH туннель, через который конкретные приложения направляют свой трафик на сервер, а затем прокси сервер перенаправляет их трафик далее в интернет


В отличие от VPN, SOCKS прокси должен быть настроен в приложении на клиентской машине и может быть настроен без каких-либо специальных клиентских агентов


Настройка туннеля


Запускаем PuTTY и загружаем ранее сохраненную сессию подключения к своему VPS по SSH


Слева в меню выбираем пункт Connection
подпункт SSH
подпункт Tunnels


Справа в разделе Add new forwarded port
в поле Source port
вводим порт из диапазона 1025-65536,
например 1080


Активируем радиокнопку Dynamic


Затем нажимаем кнопку Add


В поле Forwarded ports
отобразится значение D1080


Возвращаемся в пункт Session
и сохраняем новую сессию с именем socks


Нажимаем кнопку Open
и устанавливаем соединение с сервером


Сворачиваем окно PuTTY, но не закрываем его. Оно должно оставаться открытым на протяжении всего сеанса. В этом неудобство данного метода


Использование туннеля


Теперь мы имеем установленный SOCKS 5 туннель через SSH и должны настроить браузер для его использования


Открываем сетевые настройки Firefox и в ручном режиме указываем, что соединяемся с SOCKS 5 сервером, где адрес сервера 127.0.0.1 (или localhost) и порт 1080


Отмечаем галочку Отправлять DNS запросы через прокси при использовании SOCKS 5


В завершение заходим на сайт https://www.dnsleaktest.com/, который возвращает IP адрес нашего VPS