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
указываем путь к приватному ключу
x:\id_rsa.ppk

Пункт Session

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

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

Первым делом обновляем систему и для удобства файловых операций устанавливаем Midnight Commander


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



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


Status: inactive

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


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

IPV6=yes

строкой

IPV6=no

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

Разрешаем входящие подключения
к порту 22, сервер SSH
к порту 80 (HTTP), будет вторым портом для доступа к серверу SSH из-под рестриктивных фаерволов
к порту 443 (HTTPS), для подключения к Tor мосту
к порту 993 (IMAPS), для подключения к OpenVPN серверу
Порты указываем по именам служб как в файле /etc/services


Активируем фаервол и смотрим на созданные правила


Status: active
[ 1] 22 ALLOW IN Anywhere
[ 2] 80 ALLOW IN Anywhere
[ 3] 443 ALLOW IN Anywhere
[ 4] 993 ALLOW IN Anywhere

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

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



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

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


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


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

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


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

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

[sshd]
enabled = true # активировать правило для сервера ssh
port = ssh,http # добавить для сервера ssh порт 80
logpath = %(sshd_log)s

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

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


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

Active: active (running)

Если выдаст active (exited) – это нормально

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


Создал


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



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


В первые три попытки получаем ответ

Permission denied (publickey).

А начиная с четвертой уже

ssh: connect to host 111.222.333.444 port 22: Connection refused

Защита активирована

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


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


А вот и второе правило (sshd-ddos) сработало, но вызвал его уже не наш тестовый сервер


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



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


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

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

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


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


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


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


Для этого ниже директивы Port 22 дописываем директиву Port 80, а затем удаляем символ комментария # из начала этой строки

AuthorizedKeysFile %h/.ssh/authorized_keys

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


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

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



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

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

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

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

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

Пункт Session

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

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

Для усиления безопасности запрещаем вход суперпользователя root по SSH


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

PermitRootLogin yes

На строку

PermitRootLogin no

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


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



Закрытый ключ доступа к серверу желательно хранить на зашифрованной флешке/разделе.
Также желательно иметь доверенное лицо, имеющее доступ к профилю на хостинге, которое сможет уничтожить ваш сервер если вы внезапно заболеете, или уедете, или будете как то иначе ограничены в свободе действий. В противном случае счета будут продолжать выставляться. Если вдобавок к этому вы не создадите криптографически стойкий пароль к своему профилю и не включите двухфакторную аутентификацию, и по этой причине его смогут взломать, то за время вашего вынужденного отсутствия успеют создать целый кластер мощных серверов и ваши счета могут увеличиться до десятков тысяч долларов 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


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


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


Для этого отредактируем некоторые строки файла 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


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


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


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



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


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


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


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

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
POP3S 995
SMTPS 465
IMAPS 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


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

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


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

net.ipv4.ip_forward=1

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


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



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


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


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


Затем запускаем сервер OpenVPN, указав имя файла конфигурации (/etc/openvpn/server.conf) в качестве переменной (@server) в конце имени юнита systemd, и проверяем результат


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

Active: active (running)

Если выдаст active (exited) – это нормально

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


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

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

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


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



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


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

remote 111.222.333.444 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 подсветит его синтаксис)


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


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


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

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

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


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


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

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



Устанавливаем клиентский профиль 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

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



Монтируем флешку на рабочей станции и копируем с нее в домашнюю папку пользователя user полученный с сервера второй файл конфигурации клиента client2.ovpn


Обновляем систему и устанавливаем программное обеспечение OpenVPN


Проверяем, содержит ли дистрибутив скрипт /etc/openvpn/update-resolv-conf


Содержит

update-resolve-conf

Редактируем файл конфигурации клиента


Нужно раскомментировать те три строки, которые мы добавили для клиентов на Linux

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Соединяемся с сервером OpenVPN


Окно терминала сворачиваем, но не закрываем; либо переходим для дальнейшей работы на второй рабочий стол

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



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

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

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

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

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

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

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



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

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


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


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

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


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


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


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

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


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

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

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

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

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

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

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



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

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



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


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


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


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


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


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

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


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

Active: active (running)

Если выдаст active (exited) – это нормально

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

enabled; vendor preset: enabled

и

status=0/SUCCESS

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


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

enabled

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


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



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


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

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


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

Было

/usr/bin/obfs4proxy PUx,

Стало

/usr/bin/obfs4proxy ix,

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


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



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


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


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


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


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

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


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


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

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

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


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



Запускаем 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, предварительно выделив протяжкой мыши по строке)


В окне конфигурации моста в поле ввода 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





ПРИМЕЧАНИЯ:

1) На pgpru.com (цитата):

Автоматический корректор, встроенный в wiki, самостоятельно подгоняет сохраняемый текст под нормы форматирования, избавляя авторов от излишне детальной правки. Вот какие изменения он вносит:
. . .
Минус – превращает в тире
Два минуса — в длинное тире
. . .

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


2) В силу различия в инстансах на разных хостингах мануал может не сработать на 100%, допустим на Амазоне или Азуре. Но на DO все шаги и команды прогнаны как минимум 3 раза. На других хостингах обратите внимание на название

дефолтного сетевого интерфейса eth0 в этой директиве

и при необходимости скорректируйте его.