Skip to content
This repository has been archived by the owner on Jun 4, 2021. It is now read-only.

Latest commit

 

History

History
207 lines (157 loc) · 27.5 KB

README-ru.md

File metadata and controls

207 lines (157 loc) · 27.5 KB

Automate the effect


English, Français, 简体中文, Русский | Зеркало


Build Status Twitter

Стрейзанд

Заставьте цензуру замолчать. Автоматизируйте эффект Стрейзанд.

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

Представляем Стрейзанд

  • Одна-единственная команда настраивает с нуля сервер под операционной системой Ubuntu 16.04 с большим набором ПО для противодействия цензуре, который может полностью скрыть и зашифровать весь ваш трафик.
  • Стрейзанд поддерживает создание новых серверов в Amazon EC2, Azure, DigitalOcean, Google Compute Engine, Linode, и Rackspace. В скором времени ожидается поддержка также и других облачных хостеров. Стрейзанд также можно запускать на любом сервере с операционной системой Ubuntu 16.04 вне зависимости от хостера, и сотни серверов могут быть одновременно сконфигурированы с применением этого метода.
  • Процесс полностью автоматизирован и занимает примерно десять минут, что довольно круто, учитывая что среднему системному администратору требуется несколько дней возни, для того, чтобы настроить малую часть того, что Стрейзанд предлагает "из коробки".
  • После того, как ваш сервер Стрейзанд запущен, вы можете раздать инструкции по подключению друзьям, членам семьи и соратникам. Инструкции по подключению содержат в себе копию SSL-сертификата, уникального для каждого сервера, так что вам нужно послать им всего один файл.
  • Каждый сервер полностью самодостаточен и содержит абсолютно всё, что нужно для того, чтобы начать использовать Стрейзанд, включая криптографически верифицированные копии основного клиентского ПО. Это позволяет обойти попытки подвергнуть цензуре соответствующее ПО.
  • Но это еще не всё...

Дополнительные особенности

  • Nginx поддерживает защищённый паролем и зашифрованный Портал, который служит отправной точкой для новых пользователей. Портал доступен с ипользованием SSL или через скрытые сервисы Tor.
    • Стрейзанд генерирует замечательные, персонализированные пошаговые инструкции по подключению для пользователей. Пользователи могут легко получить доступ к этим инструкциям через любой веб браузер. Инструкции также отлично выглядят на мобильных телефонах.
    • Неизменность копий программного обеспечения подтверждена с помощью контрольных сумм SHA-256 или с использованием криптографических подписей GPG, если конкретный проект их предоставляет. Это предотвращает загрузку испорченных файлов.
    • Все дополнительные файлы, такие как конфигурационные профили OpenVPN также доступны через Портал.
    • Пользователи Tor могут также пользоваться дополнительными сервисами, устанавливаемыми Стрейзанд, для передачи больших файлов или для использования видов трафика (например BitTorrent), для которых Tor изначально не предназначен.
    • Для каждого шлюза Стрейзанд создается уникальный пароль, SSL-сертификат и приватный ключ SSL. Инструкции и сертификат передаются через SSH в конце выполнения Стрейзанд.
  • Отдельные сервисы и множество демонов предоставляют впечатляющую гибкость. Если один из методов будет заблокирован, множество других остается доступными и большая часть из них устойчива к Deep Packet Inspection (DPI).
    • Все методы подключения (включая прямые соединения OpenVPN) эффективны против методов блокировки, с которыми экспериментирует Турция.
    • OpenConnect/AnyConnect, OpenSSH, OpenVPN (завернутый в stunnel), Shadowsocks, Tor (с obfsproxy и подключаемым транспортом obfs4 ) и WireGuard эффективны против Великого Китайского Файрволла.
  • Каждая задача тщательно документирована и снабжена детальным описанием. Стрейзанд одновременно является самым полным HOWTO об установке всего ПО, которое он включается и является страховкой от установки всего этого руками.
  • Всё ПО сознательно использует порты так, чтобы сделать простое блокирование портов невозможным без нанесения блокирующей стороной значительного сопутствующего ущерба. К примеру, OpenVPN использует не порт по умолчанию 1194, а 636, стандартный порт для LDAP/SSL соединений, часто используемый компаниями во всем мире.

Предоставляемые сервисы

  • OpenSSH
    • Создается непривилегированный пользователь и пара ключей для sshuttle и SOCKS.
    • Поддерживаются также SSH-туннели Windows и Android, создается копия пары ключей в .ppk формате для PuTTY
    • Установлен Tinyproxy и подключен к localhost. Программы, которые не поддерживают SOCKS и требуют наличия HTTP proxy, такие как Twitter для Android, могу подключиться к нему через SSH-туннель.
  • OpenConnect / Cisco AnyConnect
    • OpenConnect (ocserv) - высокопроизводительный и легковесный VPN-сервер полностью совместимый с официальными клиентами Cisco AnyConnect.
    • Его протокол построен на классических стандартах, таких как HTTP, TLS и DTLS и является одним из самых популярных и широко используемых мультинациональными корпорациями VPN технологий.
      • Это означает, что кроме своей простоты и скорости, OpenConnect также устойчив к цензуре и практически никогда не блокируется.
  • OpenVPN
    • Для каждого клиента создаются унифицированные .ovpn профили для простой настройки клиента с использованием только одного файла.
    • Поддерживаются соединения TCP и UDP.
    • Определение адресов для клиента исползует Dnsmasq для предотвращения утечек DNS-запросов.
    • Включена TLS Authentication для защиты от зондирующих атак. Трафик не имеющий корректного HMAC будет попросту проигнорирован.
  • Shadowsocks
    • Установлен высокопроизводительный вариант libev. Эта версия обрабатывает тысячи одновременных соединений.
    • Создается QR код который можно использовать для автоматической настройки Android и iOS клиентов. Вы можете написать '8.8.8.8' на бетонной стене, или вы можете наклеить инструкции для Shadowsocks и QR коды на ту же стену.
    • Включена поддержка AEAD с ChaCha20 и Poly1305 для усиленной безопасности и уклонения от GFW.
  • sslh
    • Sslh - демультиплексор протоколов, позволяющий Nginx, OpenSSH и OpenVPN совместно использовать порт 443. Это предоставляет альтернативный метод подключения и означает, что вы можете перенаправлять трафик через OpenSSH и OpenVPN даже если вы находитесь в сети с очень строгими правилами, которая блокирует все соединения не с HTTP.
  • Stunnel
    • Слушает и упаковывает соединения OpenVPN. Это заставляет их выглядеть как стандартный SSL трафик и позволяет OpenVPN клиентам устанавливать туннели даже в случае использования Deep Packet Inspection.
    • Создаются как профили для прямых соединений, так и унифицированные профили для соединений OpenVPN через stunnel. И подробные инструкции тоже.
    • Сертификат stunnel и ключ экспортируются в формате PKCS #12 для совместимости с другими приложениями для туннелирования SSL. В частности , это позволяет OpenVPN for Android туннелировать свой трафик через SSLDroid. OpenVPN в Китае на мобильном устройстве? Да!
  • Tor
    • Настроен bridge relay со случайно сгенерированным именем.
    • Установлен Obfsproxy и настроен с поддержкой подключаемого транспорта obfs4.
    • Сгенерирован код BridgeQR для автоматического конфигурирования Orbot для Android.
  • UFW
    • Для каждого сервиса настроены правила файрвола, так что любой трафик отправленный на запрещенный порт будет заблокирован.
  • unattended-upgrades
    • Ваш Стрейзанд сервер настроен для автоматической установки обновлений, связанных с безопасностью.
  • WireGuard
    • Пользователи Linux могут насладиться простым и прекрасным VPN, который также является сказочно быстрым и использует современные криптографические принципы, отсутствующие в других высокоскоростных VPN решениях

Установка

Пожалуйста, внимательно прочитайте инструкции по установке перед тем, как продолжать.

Важное разъяснение

Стрейзанд основан на Ansible, инструменте автоматизации, который обычно используется для установки и настройки файлов и пакетов на удалённых серверах. Стрейзанд автоматически создает новый удалённый сервер с пакетами и конфигурационными файлами VPN.

Когда вы запустите Стрейзанд на вашей домашней машине (например на вашем лэптопе), он создаст и запустит новый отдельный сервер у хостера по вашему выбору. Обычно, вам не надо запускать Стрейзанд на удалённом сервере , так как по умолчанию это приведет к созданию нового сервера с вашего текущего сервера и первый сервер будет излишним. (фух!).

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

Необходимые условия

Выполните все указанные ниже шаги на вашем домашнем компьютере.

  • Стрейзанд требует BSD, Linux или macOS. На текущий момент Windows не поддерживается. Все указанные ниже команды должны выполняться в терминале.

  • Требуется наличие Python 2.7. Он присутствует в стандартной поставке macOS и практически во всех Linux и BSD дистрибутивах. Если в вашем дистрибутиве установлен Python 3, вам потребуется также установить Python 2.7 , чтобы Стрейзанд работал нормально.

  • Убедитесь, что открытый SSH ключ присутствует в файле ~/.ssh/id_rsa.pub.

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

    • Для того, чтобы проверить, есть ли у вас открытый SSH ключ, введите следущую комманду:

      ls ~/.ssh
      
    • Если вы видите файл id_rsa.pub, значит у вас есть открытый SSH ключ.

    • Если у вас нет пары SSH ключей, вы можете ее сгенерировать с использованием следующей команды и выбирая значения по умолчанию:

      ssh-keygen
      
    • Если вы хотите использовать SSH ключи с другим именем или в другом местоположении, введите 'yes' когда установщик спросит хотите ли вы настроить сервер.

    • Обратите внимание: Эти ключи будут вам нужны для доступа к серверу Стрейзанд по SSH. Пожалуйста, сохраняйте их на протяжении всей жизни сервера.

  • Установите Git.

    • На Debian и Ubuntu

      sudo apt-get install git
      
    • На Fedora

      sudo dnf install git
      
    • На macOS (с использованием Homebrew)

      brew install git
      
  • Установите pip - систему управления пакетами для Python.

    • На Debian и Ubuntu (также устанавливает зависимости. необходимые для сборки Ansible и работы некоторых других модулей)

      sudo apt-get install python-paramiko python-pip python-pycurl python-dev build-essential
      
    • На Fedora

      sudo dnf install python-pip
      
    • На macOS

      sudo easy_install pip
      sudo pip install pycurl
      
  • Установите Ansible.

    • На macOS (с использованием Homebrew)

      brew install ansible
      
    • На BSD или Linux (с использованием pip)

      sudo pip install ansible markupsafe
      
  • Установите необходимые библиотеки Python для вашего облачного хостера. Если вы настраиваете локальный или существующий сервер, вы можете пропустить этот шаг.

    • Amazon EC2

      sudo pip install boto boto3
      
    • Azure

      sudo pip install ansible[azure]
      
    • Google

      sudo pip install "apache-libcloud>=1.17.0"
      
    • Linode

      sudo pip install linode-api4
      
    • Rackspace Cloud

      sudo pip install pyrax
      
    • Важное замечание: если вы используете Python , установленный через Homebrew то вы должны также выполнить следующие команды чтобы быть уверенным, что Python сможет найти необходимые библиотеки:

      mkdir -p ~/Library/Python/2.7/lib/python/site-packages
      echo '/usr/local/lib/python2.7/site-packages' > ~/Library/Python/2.7/lib/python/site-packages/homebrew.pth
      

Выполнение

  1. Склонируйте репозиторий Стрейзанд и перейдите в директорию

    git clone https://github.com/StreisandEffect/streisand.git && cd streisand
    
  2. Запустите скрипт Стрейзанд.

    ./streisand
    
  3. Следуйте инструкциям для выбора вашего хостера, региона, где будет запущен сервер и его имени. Вам также потребуется ввести информацию об API.

  4. После того, как логины и API ключи предоставлены, Стрейзанд начинает создавать новый удалённый сервер.

  5. Подождите, пока установка будет завершена (это обычно занимает примерно десять минут) и вы найдете файл в папке 'generated-docs' в директории репозитория Стрейзанд. HTML файл содержит инструкции как подключиться к шлюзу через SSL или через Tor. Все инструкции, файлы, копии клиентского ПО и ключ для нового сервера расположены на портале. Всё готово!

Использование Стрейзанд для настройки локального сервера (Для продвинутых)

Для случаев, когда вы не можете запустить Стрейзанд как обычно (с вашего домашнего компьютера или лэптопа), с тем, чтобы сконфигурировать удалённый сервер, Стрейзанд поддерживает локальный метод настройки. Просто выберите "Localhost (Advanced)" из меню, после того, как запустили ./streisand.

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

Использование Стрейзанд для других хостеров (Для продвинутых)

Вы также можете запустить Стрейзанд на любом сервере Ubuntu 16.04. Выделенный сервер? Отлично! Странный облачный хостер? Замечательно! Чтобы это сделать, просто выберите "Existing Server (Advanced)" из меню после запуска ./streisand и введите IP адрес существующего сервера , когда скрипт запросит эти данные.

Этот сервер должен разрешать подключение с SSH-ключом $HOME/.ssh/id_rsa и по умолчанию для подключения будет использоваться пользователь root. Если ваш хостер требует, чтобы для подключения использовался какой-то другой пользователь (например ubuntu), установите переменную среды ANSIBLE_SSH_USER (например ANSIBLE_SSH_USER=ubuntu ) перед запуском ./streisand.

Замечание: Запуск Стрейзанд для настройки существующего сервера может что-нибудь испортить. Возможно, вы перезапишете конфигурационные файлы, поэтому будьте уверены, что вы настраиваете правильный сервер.

Будущие возможности

  • Более простая установка.

Если у вас есть идея, что ещё может делать Стрейзанд или вы нашли баг в документации или коде, пожалуйста, оставьте сообщение в Issue Tracker.

Ключевые разработчики

  • Jay Carlson (@nopdotcom)
  • Nick Clarke (@nickolasclarke)
  • Joshua Lund (@jlund)
  • Ali Makki (@alimakki)
  • Daniel McCarney (@cpu)
  • Corban Raun (@CorbanR)

Благодарности

Jason A. Donenfeld заслуживает множество благодарностей за смелое представление о том, как может выглядеть современный VPN и за то, что он создал такую отличную штуку как WireGuard. Искреннее спасибо за его терпеливую помощь и отличную обратную связь.

Мы благодарны Trevor Smith за его огромный вклад в проект. Он предложил подход с использованием портала, дал множество бесценных комментариев. С его помощью всё стало выглядеть лучше, он создал шаблон HTML, который вдохновил меня поднять всё на новый уровень перед официальным запуском.

Огромное спасибо Paul Wouters из The Libreswan Project за его великодушную помощь в отладке инсталляции L2TP/IPsec.

Альбом 'Sunset Blood' группы Starcadian's был прослушан примерно 300 раз в цикле в течение первых месяцев работы над этим проектом в начале 2014 года.