
Настройте личный VPN в облаке
Algo VPN — это набор сценариев Ansible, которые упрощают настройку личного VPN на основе WireGuard и IPsec. Он использует самые безопасные настройки по умолчанию и работает с распространёнными облачными провайдерами.
Дополнительную информацию см. в анонсе релиза.
Самый простой способ запустить сервер Algo — запустить его на вашей локальной системе или из Google Cloud Shell и позволить ему автоматически создать новую виртуальную машину в облаке.
Зарегистрируйте аккаунт у облачного хостинг-провайдера. Algo поддерживает DigitalOcean (наиболее дружелюбный к пользователю), Amazon Lightsail, Amazon EC2, Vultr, Microsoft Azure, Google Compute Engine, Scaleway, DreamCompute, Linode, другие облачные хостинги на базе OpenStack, облачный хостинг на базе CloudStack или Hetzner Cloud.
Получите копию Algo. Сценарии Algo будут запускаться с вашей локальной системы. Есть два способа получить копию:
Скачайте ZIP-файл. Распакуйте файл, чтобы создать каталог с именем algo-master, содержащий сценарии Algo.
Используйте git clone, чтобы создать каталог с именем algo, содержащий сценарии Algo:
git clone https://github.com/trailofbits/algo.git
Настройте параметры конфигурации. Откройте config.cfg в вашем любимом текстовом редакторе. Укажите пользователей, которых вы хотите создать, в списке users. Создайте уникального пользователя для каждого устройства, которое вы планируете подключать к вашему VPN. Также перед развёртыванием следует просмотреть другие опции, так как изменение мнения о них позже .
Вот и всё! Теперь вы можете настраивать клиенты для подключения к вашему VPN. Перейдите к разделу Настройка VPN-клиентов ниже.
"# Congratulations! #"
"# Your Algo server is running. #"
"# Config files and certificates are in the ./configs/ directory. #"
"# Go to https://whoer.net/ after connecting #"
"# and ensure that all your traffic passes through the VPN. #"
"# Local DNS resolver 172.16.0.1 #"
"# The p12 and SSH keys password for new users is XXXXXXXX #"
"# The CA key password is XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX #"
"# Shell access: ssh -F configs/<server_ip>/ssh_config <hostname> #"
Сертификаты и файлы конфигурации, необходимые пользователям, помещаются в каталог configs. Убедитесь, что эти файлы защищены, так как многие из них содержат закрытые ключи. Все файлы сохраняются в подкаталоге, названном по IP-адресу вашего нового VPN-сервера Algo.
Важно для пользователей IPsec: Если вы хотите позже добавлять или удалять пользователей, вы должны выбрать yes на запрос Do you want to retain the keys (PKI)? во время развёртывания сервера. Это сохранит центр сертификации, необходимый для управления пользователями.
WireGuard используется для предоставления VPN-услуг на устройствах Apple. Algo генерирует файл конфигурации WireGuard, wireguard/<username>.conf, и QR-код, wireguard/<username>.png, для каждого пользователя, определённого в config.cfg.
На iOS установите приложение WireGuard из App Store. Затем используйте приложение WireGuard для сканирования QR-кода или отправки файла конфигурации через AirDrop на устройство.
На macOS установите приложение WireGuard из Mac App Store. После запуска приложения WireGuard появится в строке меню. Нажмите на значок WireGuard, выберите Import tunnel(s) from file..., затем выберите соответствующий файл конфигурации WireGuard.
На iOS или macOS вы можете включить «Подключаться по требованию» и/или исключить определённые доверенные Wi-Fi сети (например, домашнюю или рабочую), отредактировав конфигурацию туннеля в приложении WireGuard. (Algo не может сделать это автоматически.)
Если вы предпочитаете использовать встроенный IPsec VPN на устройствах Apple или вам нужно автоматически настраивать «Подключаться по требованию» или исключённые Wi-Fi сети, см. руководство по настройке IPsec-клиента Apple для подробных инструкций.
WireGuard используется для предоставления VPN-услуг на Android. Установите VPN-клиент WireGuard. Импортируйте соответствующий файл wireguard/<name>.conf на ваше устройство, затем настройте с его помощью новое подключение. См. руководство по настройке Android для подробных инструкций по установке и настройке.
WireGuard используется для предоставления VPN-услуг на Windows. Algo генерирует файл конфигурации WireGuard, wireguard/<username>.conf, для каждого пользователя, определённого в config.cfg.
Установите VPN-клиент WireGuard. Импортируйте сгенерированный файл wireguard/<username>.conf на ваше устройство, затем настройте с его помощью новое подключение. См. инструкции по настройке Windows для более подробного пошагового руководства и устранения неполадок.
Клиенты Linux могут использовать как WireGuard, так и IPsec:
WireGuard: WireGuard отлично работает с клиентами Linux. См. руководство по настройке WireGuard на Linux для пошаговых инструкций по настройке WireGuard на Ubuntu и других дистрибутивах.
IPsec: Для клиентов strongSwan IPsec (включая OpenWrt, Ubuntu Server и другие дистрибутивы) см. руководство по настройке IPsec на Linux для подробных инструкций.
Для маршрутизаторов OpenWrt, использующих WireGuard, см. руководство по настройке WireGuard на OpenWrt для специфических инструкций по настройке маршрутизатора.
Для устройств, не указанных выше, или для ручной настройки вам понадобятся определённые сертификаты и файлы конфигурации. Необходимые файлы зависят от платформы вашего устройства и протокола VPN (WireGuard или IPsec).
Если вы включили опциональную роль SSH-туннелирования, для каждого пользователя из config.cfg будут созданы локальные учётные записи, а файлы authorized_key для них будут находиться в каталоге configs (user.pem). Учётные записи SSH не имеют доступа к оболочке, не могут аутентифицироваться по паролю и имеют ограниченные возможности туннелирования (например, требуется ssh -N). Это гарантирует, что пользователи SSH имеют минимальные права, необходимые для настройки туннеля, и не могут выполнять никаких других действий на сервере Algo.
Используйте пример команды ниже для запуска SSH-туннеля, заменив <user> и <ip> на свои. После настройки туннеля вы можете настроить браузер или другое приложение на использование 127.0.0.1:1080 в качестве SOCKS-прокси для маршрутизации трафика через сервер Algo:
ssh -D 127.0.0.1:1080 -f -q -C -N <user>@algo -i configs/<ip>/ssh-tunnel/<user>.pem -F configs/<ip>/ssh_config
Ваш сервер Algo настроен на доступ по SSH только по ключу для административных целей. Откройте приложение «Терминал», перейдите в каталог algo-master, куда вы изначально загрузили Algo, а затем используйте команду, указанную в сообщении об успехе:
ssh -F configs/<ip>/ssh_config <hostname>
где <ip> — это IP-адрес вашего сервера Algo. Если вы регулярно входите на сервер, будет полезно автоматически загружать ваш SSH-ключ Algo. Добавьте следующий фрагмент в конец файла ~/.bash_profile, чтобы навсегда добавить его в ваше окружение оболочки:
ssh-add ~/.ssh/algo > /dev/null 2>&1
Кроме того, вы можете решить включить сгенерированную конфигурацию для любых созданных серверов Algo в ваш SSH-конфиг. Отредактируйте файл ~/.ssh/config, добавив в начало следующую директиву:
Include <algodirectory>/configs/*/ssh_config
где <algodirectory> — это каталог, в который вы клонировали Algo.
Algo упрощает добавление или удаление пользователей с вашего VPN-сервера после первоначального развёртывания.
Для пользователей IPsec: Вы должны были выбрать yes на запрос Do you want to retain the keys (PKI)? во время первоначального развёртывания сервера. Это сохранит центр сертификации, необходимый для управления пользователями. Также следует сохранить пароли ключей p12 и CA, показанные во время развёртывания, так как они отображаются только один раз.
Чтобы добавить или удалить пользователей, сначала отредактируйте список users в вашем файле config.cfg. Добавьте новые имена пользователей или удалите существующие по мере необходимости. Затем перейдите в каталог algo в вашем терминале и выполните:
macOS/Linux:
./algo update-users
Windows:
.\algo.ps1 update-users
После завершения процесса для новых пользователей будут сгенерированы новые файлы конфигурации в каталоге configs. Сервер VPN Algo будет обновлён так, чтобы содержать только пользователей, перечисленных в файле config.cfg. Удалённые пользователи больше не смогут подключаться, а новые пользователи получат свежие сертификаты и файлы конфигурации, готовые к использованию.
Algo использует прагматичный подход к конфиденциальности. По умолчанию мы минимизируем журналирование, сохраняя при этом достаточно информации для обеспечения безопасности и устранения неисправностей.
Что регистрируется по умолчанию:
sudo wg — показывает последнюю конечную точку и время рукопожатия)Конфиденциальность контролируется двумя основными настройками в config.cfg:
strongswan_log_level: -1 — управляет журналированием подключений StrongSwan (-1 = отключено, 2 = отладка)privacy_enhancements_enabled: true — главный переключатель для ротации логов, очистки истории, фильтрации логов и очисткиЧтобы включить полную отладку при устранении неисправностей, установите оба параметра: strongswan_log_level: 2 и privacy_enhancements_enabled: false. Это зафиксирует подробные логи подключений и отключит все функции конфиденциальности. Не забудьте отменить эти изменения после отладки.
После развёртывания проверьте настройки конфиденциальности:
ssh -F configs/<server_ip>/ssh_config <hostname>
sudo /usr/local/bin/privacy-monitor.sh
Идеальная конфиденциальность невозможна с любым VPN-решением. Ваш облачный провайдер видит и регистрирует метаданные сетевого трафика независимо от конфигурации вашего сервера. И, конечно, ваш интернет-провайдер знает, что вы подключаетесь к VPN-серверу, даже если не видит, что вы через него делаете.
Для максимального уровня конфиденциальности относитесь к своим серверам Algo как к одноразовым. Запускайте новый экземпляр, когда он вам нужен, используйте его для конкретной цели, а затем полностью уничтожайте. Эфемерная природа облачной инфраструктуры может быть функцией конфиденциальности, если использовать её осознанно.
Если вы прочитали всю документацию и у вас остались вопросы, создайте новое обсуждение.
Я долго жаловался на плачевное состояние VPN-сервисов, вероятно, пора сделать надлежащий доклад на эту тему. TL;DR: используйте Algo.
-- Kenn White
Прежде чем выбирать VPN-провайдера/приложение, убедитесь, что вы провели исследование https://research.csiro.au/ng/wp-content/uploads/sites/106/2016/08/paper-1.pdf ... – или рассмотрите Algo
-- The Register
Algo действительно прост и безопасен.
-- the grugq
Я поигрался с Algo VPN, набором скриптов, которые позволяют настроить VPN в облаке за очень короткое время, даже если вы мало что знаете о разработке. Должен сказать, что подход Trail of Bits меня впечатлил.
-- Romain Dillet для TechCrunch
Если вам некомфортно платить анонимному случайному VPN-провайдеру, это лучшее решение.
-- Thorin Klosowski для Lifehacker
См. наше Руководство по разработке для получения информации о:
Все пожертвования поддерживают дальнейшее развитие. Спасибо!
Algo лицензирован и распространяется под лицензией AGPLv3. Если вы хотите распространять модификацию с закрытым исходным кодом или сервис на основе Algo, пожалуйста, рассмотрите возможность приобретения исключения. Как и методы, описанные выше, это поможет поддержать дальнейшее развитие.
Запустите развёртывание. Вернитесь в терминал. В каталоге Algo выполните соответствующий сценарий для вашей платформы:
macOS/Linux:
./algo
Windows:
.\algo.ps1
При первом запуске сценарий автоматически установит необходимое окружение Python (Python 3.11+). При последующих запусках он запускается немедленно и работает на всех платформах (macOS, Linux, Windows через WSL). Сценарий Windows PowerShell автоматически использует WSL при необходимости, так как Ansible требует Unix-подобного окружения. Доступно несколько опциональных функций, ни одна из которых не требуется для полностью функционального VPN-сервера. Эти опциональные функции описаны в документации по развёртыванию.