Skip to content

Latest commit

 

History

History
199 lines (151 loc) · 27.6 KB

README-ru.md

File metadata and controls

199 lines (151 loc) · 27.6 KB

Streisand Logo


Английский, Французский, 简体中文, Русский


Build Status

Стрейзанд

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

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

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

  • Одна-единственная команда настраивает с нуля сервер под операционной системой 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).
    • Все методы подключения (включая L2TP/IPsec и прямые соединения OpenVPN) эффективны против методов блокировки, с которыми экспериментирует Турция.
    • OpenConnect/AnyConnect, OpenSSH, OpenVPN (завернутый в stunnel), Shadowsocks и Tor (с obfsproxy и подключаемым транспортом obfs4 ) эффективны против Великого Китайского Файрволла.
  • Каждая задача тщательно документирована и снабжена детальным описанием. Стрейзанд одновременно является самым полным HOWTO об установке всего ПО, которое он включается и является страховкой от установки всего этого руками.
  • Всё ПО сознательно использует порты так, чтобы сделать простое блокирование портов невозможным без нанесения блокирующей стороной значительного сопутствующего ущерба. К примеру, OpenVPN использует не порт по умолчанию 1194, а 636, стандартный порт для LDAP/SSL соединений, часто используемый компаниями во всем мире.
    • L2TP/IPsec - существенное исключение, так как в нем невозможно поменять порты, не нарушив совместимость с клиентом

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

  • L2TP/IPsec с использованием Libreswan и xl2tpd
    • Создаются случайные ключ и пароль
    • Пользователи Windows, OS X, Android, и iOS могут подключаться с использованием встроенной поддержки VPN без установки дополнительного ПО.
  • Monit
    • Отслеживает здоровье процессов и автоматически перезапускает их , если они падают или зависают.
  • 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.
    • Несколько клиентов могут использовать один и тот же сертификат и ключ, но по умолчанию создается 5 наборов сертификат/ключ.
    • Определение адресов для клиента исползует 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 или OS X. На текущий момент Windows не поддерживается. Все указанные ниже команды должны выполняться в терминале.

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

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

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

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

    • На Debian и Ubuntu

      sudo apt-get install git
      
    • На Fedora

      sudo yum install git
      
    • На OS X (с использованием 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 yum install python-pip
      
    • На OS X

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

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

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

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

    • Amazon EC2

      sudo pip install boto
      
    • Azure

      sudo pip install msrest msrestazure azure==2.0.0rc5
      
    • DigitalOcean

      sudo pip install dopy==0.3.5
      
    • Google

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

      sudo pip install linode-python
      
    • 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/jlund/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/id_rsa и по умолчанию для подключения будет использоваться пользователь root. Если ваш хостер требует, чтобы для подключения использовался какой-то другой пользователь (например ubuntu), установите переменную среды ANSIBLE_SSH_USER (например ANSIBLE_SSH_USER=ubuntu ) перед запуском ./streisand.

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

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

  • Выбор и изоляция ролей, позволяющая вам выбрать, какие именно демоны и сервисы будут установлены.
  • Более простая установка.

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

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

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

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

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

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

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