Разверните безопасный HTTPS прокси-сервер менее чем за 10 минут

Это руководство объясняет развертывание безопасного (HTTP-over-TLS) прокси-сервера на любом основном дистрибутиве Linux с помощью dumbproxy. Это руководство предполагает, что утилита curl присутствует на сервере и у вас есть root shell. Убедитесь в отсутствии ошибок на каждом шаге, прежде чем переходить к следующему.

HTTPS-прокси здесь — это HTTP-прокси, работающий через TLS-защищенные соединения, а не просто «незашифрованный» HTTP-прокси, который может пересылать и HTTPS-соединения. То есть такой HTTPS-прокси вводит дополнительный TLS-уровень между прокси-клиентом и прокси-сервером, обеспечивая конфиденциальность соединения с прокси. Такие прокси подходят для непосредственного использования в браузере и других программах. Так называемые «VPN-расширения» для браузеров фактически используют такие TLS-защищенные прокси.

Зачем и для чего?

Почему стоит выбрать HTTPS прокси?

  • Хорошо подходит для доступа к заблокированному контенту без перенаправления всего системного трафика. Может использоваться выборочно для выбранных приложений, сайтов, доменов и т.д.
  • Стандартный протокол, который выглядит как HTTPS, потому что он и есть HTTPS. Хорошо подходит для обхода брандмауэров и других видов стен.
  • Другие решения вроде shadowsocks довольно часто оказываются скрытыми внутри TLS-соединений (например, с помощью плагинов simple-tls или v2ray-plugin). В таком случае нет особого смысла использовать shadowsocks для скрытия соединений — проще использовать обычный HTTP-прокси внутри TLS.
  • Поддерживается основными браузерами без дополнительного программного обеспечения. Другие программы, поддерживающие обычные HTTP-прокси, могут быть подключены с помощью адаптера plaintext-to-TLS, как этот.

Почему стоит использовать dumbproxy?

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

С другой стороны, dumbproxy имеет ряд преимуществ:

  • Может скрывать 407 HTTP-ответов, чтобы спрятать прокси от обнаружения активными зондами (по умолчанию отключен).
  • Легкие потоки позволяют ему обслуживать достаточно большое количество соединений одновременно с конфигурацией по умолчанию, что является преимуществом по сравнению с 3proxy и tinyproxy. В сочетании со скромным использованием памяти на соединение, это позволяет dumbproxy предоставлять хороший сервис даже на виртуальных машинах с низкими характеристиками.
  • Простое управление доступом: файл базы данных пользователей и паролей автоматически перезагружается при обнаружении изменений.
  • Поддержка HTTP/2.
  • Поддерживает аутентификацию с помощью TLS сертификатов (вероятно, практичнее будет использовать его с steady-tun на стороне клиента).
  • Сервер позаботится о сертификатах TLS, выдавая их по протоколу ACME (например, используя Let’s Encrypt или BuyPass).

Шаг 1. Прикрепить доменное имя

Домен необходим для бесперебойной работы TLS. Вы можете либо получить (купить) какой-то домен и прикрепить его к IP-адресу вашего VPS, либо воспользоваться бесплатным доменным сервисом. В последнем случае родительский домен вашего домена должен быть указан в публичном списке суффиксов. В противном случае могут возникнуть проблемы с ограничениями скорости Let’s Encrypt для верхнего домена этого сервиса. В данном руководстве мы используем сервис бесплатных доменов freemyip.com, который предоставляет пользователю бесплатный домен без какой-либо регистрации.

  1. Посетите страницу https://freemyip.com/.
  2. Выберите красивое доменное имя и заявите его.
  3. Сохраните URL, который вы получите обратно.
  4. Выполните следующую команду на вашем сервере: curl 'URL', где URL — это тот URL, который вы получили от freemyip. Обратите внимание на одинарные кавычки вокруг URL!

Вы можете проверить, был ли этот шаг успешным: пропингуйте доменное имя, оно должно разрешиться в IP-адрес вашего VPS. Если этого не происходит, подождите пару минут и повторите попытку.

Шаг 2. Установите dumbproxy

Предполагается, что архитектура процессора amd64, для других случаев получите бинарник здесь. Выполните команду:

curl -Lo /usr/local/bin/dumbproxy 'https://github.com/Snawoot/dumbproxy/releases/download/v1.6.1/dumbproxy.linux-amd64' && chmod +x /usr/local/bin/dumbproxy
Войти в полноэкранный режим Выйти из полноэкранного режима

Проверьте, успешно ли прошла установка. Команда /usr/local/bin/dumbproxy -version должна вывести v1.6.1.

Шаг 3. Настройте dumbproxy

Создайте файл паролей. Выполните следующую команду, заменив USERNAME и PASSWORD на фактические желаемые значения:

dumbproxy -passwd /etc/dumbproxy.htpasswd USERNAME PASSWORD
Войти в полноэкранный режим Выйти из полноэкранного режима

Настройте dumbproxy. Создайте файл /etc/default/dumbproxy со следующим содержимым:

OPTIONS=-auth basicfile://?path=/etc/dumbproxy.htpasswd -autocert -bind-address :443
Войти в полноэкранный режим Выход из полноэкранного режима

Поместите следующее содержимое в информационный файл /etc/systemd/system/dumbproxy.service:

[Unit]
Description=Dumb Proxy
Documentation=https://github.com/Snawoot/dumbproxy/
After=network.target network-online.target
Requires=network-online.target

[Service]
EnvironmentFile=/etc/default/dumbproxy
User=root
Group=root
ExecStart=/usr/local/bin/dumbproxy $OPTIONS
TimeoutStopSec=5s
PrivateTmp=true
ProtectSystem=full
LimitNOFILE=20000

[Install]
WantedBy=default.target
Войти в полноэкранный режим Выйти из полноэкранного режима

Наконец, примените конфигурацию systemd:

systemctl daemon-reload
Войти в полноэкранный режим Выйти из полноэкранного режима

Шаг 4. Запустите dumbproxy

Включите автозапуск:

systemctl enable dumbproxy
Войти в полноэкранный режим Выйти из полноэкранного режима

Запустить службу:

systemctl start dumbproxy
Войти в полноэкранный режим Выйти из полноэкранного режима

С помощью этой команды можно проверить работоспособность прокси:

curl -x https://USERNAME:PASSWORD@DOMAIN http://ifconfig.co
Войти в полноэкранный режим Выйти из полноэкранного режима

Должен быть выведен IP-адрес сервера.

Готово!


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

Настроить программу, поддерживающую прокси, для использования dumbproxy в режиме обычного HTTP довольно просто. Однако использование HTTP прокси через TLS соединение с браузерами немного сложнее.

Маршрутизация всех браузеров в Windows через HTTPS-прокси

Откройте настройки прокси в сетевых настройках системы:

Включите опцию setup script и задайте адрес скрипта:

data:,function FindProxyForURL(u, h){return "HTTPS example.com:443";}
Войдите в полноэкранный режим Выйти из полноэкранного режима

где вместо example.com:443 вы должны использовать фактический адрес вашего HTTPS прокси.

Примечание: этот метод не будет работать с MS Edge Legacy.

Использование в Firefox

Вариант 1. Встроить файл PAC в настройки.

Откройте настройки прокси Firefox, переключите режим прокси на «Автоматическая настройка прокси URL». Укажите URL:

data:,function FindProxyForURL(u, h){return "HTTPS example.com:443";}
Войдите в полноэкранный режим Выйти из полноэкранного режима

Вариант 2. Расширение браузера.

Используйте любое расширение браузера для переключения прокси, которое поддерживает HTTPS-прокси, как это.

Использование в Chrome

Вариант 1. Вариант CLI.

Укажите прокси через командную строку:

chromium-browser --proxy-server='https://example.com:443'
Войти в полноэкранный режим Выйти из полноэкранного режима

где вместо example.com следует указать доменное имя вашего прокси.

Вариант 2. Расширение браузера.

Используйте любое расширение браузера для переключения прокси, которое поддерживает HTTPS прокси, как это.

Использование с другими приложениями

Можно использовать удаленный HTTPS-прокси как локальный простой HTTP-прокси с помощью внешнего приложения, которое осуществляет удаленную связь через TLS и открывает локальный простой сокет. steady-tun кажется наиболее подходящим для этого, потому что он поддерживает объединение соединений для скрытия задержки соединения.

Использование с Android

  1. Установите Adguard на свой Android: Руководство.
  2. Следуйте этому руководству, пропуская настройку сервера. Используйте тип прокси HTTPS, если вы установили сервер с поддержкой TLS, или используйте тип HTTP.

Оцените статью
devanswers.ru
Добавить комментарий