Для чего?
С ростом цензурирования интернета авторитарными режимами, блокируются все большее количество полезных интернет ресурсов и сайтов. В том числе с технической информацией.
Таким образом, становиться невозможно полноценно пользоваться интернетом и нарушается фундаментальное право на свободу слова, закрепленное во Всеобщей декларации прав человека.
Статья 19
Каждый человек имеет право на свободу убеждений и на свободное выражение их; это право включает свободу беспрепятственно придерживаться своих убеждений и свободу искать, получать и распространять информацию и идеи любыми средствами и независимо от государственных границ
В данном руководстве мы за 6 этапов развернем свой собственный бесплатный* VPN сервис на базе технологии Wireguard, в облачной инфраструктуре Amazon Web Services (AWS), с помощью бесплатного аккаунта (на 12 месяцев), на инстансе (виртуальной машине) под управлением Ubuntu Server 18.04 LTS.
Я старался сделать это пошаговое руководство как можно более дружественным к людям, далеким от ИТ. Единственное что требуется — это усидчивость в повторении описанных ниже шагов.
Примечание
- AWS предоставляет бесплатный уровень использования сроком на 12 месяцев, с ограничением на 15 гигабайт трафика в месяц.
- Наиболее актуальная версия данного руководства находится по адресу https://wireguard.isystem.io
Этапы
- Регистрация бесплатного аккаунта AWS
- Создание инстанса AWS
- Подключение к инстансу AWS
- Конфигурирование Wireguard
- Конфигурирование VPN клиентов
- Проверка корректности установки VPN
Полезные ссылки
1. Регистрация аккаунта AWS
Для регистрации бесплатного аккунта AWS требуется реальный номер телефона и платежеспособная кредитная карта Visa или Mastercard. Рекомендую воспользоваться виртуальными картами которые бесплатно предоставляет Яндекс.Деньги или Qiwi кошелек. Для проверки валидности карты, при регистрации списывается 1$ который в дальнейшем возвращается.
1.1. Открытие консоли управления AWS
Необходимо открыть браузер и перейти по адресу: https://aws.amazon.com/ru/
Нажать на кнопку "Регистрация"
1.2. Заполнение персональных данных
Заполнить данные и нажать на кнопку "Продолжить"
1.3. Заполнение контактных данных
Заполнить контактные сведения.
1.4. Указание платежной информации.
Номер карты, срок окончания и имя держателя карты.
1.5. Подтверждение аккаунта
На этом этапе идет подтверждение номера телефона и непосредственное списание 1$ с платежной карты. На экране компьютера отображается 4х значный код, и на указанный телефон поступает звонок из Amazon. Во время звонка необходимо набрать код, указанный на экране.
1.6. Выбор тарифного плана.
Выбираем — Базовый план (бесплатный)
1.7. Вход в консоль управления
1.8. Выбор расположения дата-центра
1.8.1. Тестирование скорости
Прежде чем выбирать датацентр, рекомендуется протестировать через https://speedtest.net скорость доступа к ближайшим датацентрам, в моей локации такие результаты:
- Сингапур
- Париж
- Франкфурт
- Стокгольм
- Лондон
Лучшие результаты по скорости показывает датацентр в Лондоне. Поэтому я выбрал его для дальнейшей настройки.
2. Создание инстанса AWS
2.1 Создание виртуальной машины (инстанса)
2.1.0. Запуск пошагового мастера создания инстанса
2.1.0.1. Переход на страницу запуска инстанса
2.1.0.2. Запуск пошагового мастера создания инстанса
2.1.0.3. Выбор типа операционной стистемы инстанса
2.1.1. Выбор типа инстанса
По умолчанию выбран инстанс t2.micro, он нам и нужен, просто нажимаем кнопку Next: Configure Instance Detalis
2.1.2. Настройка параметров инстанса
В дальнейшем мы подключим к нашему инстансу постоянный публичный IP, поэтму на этом этапе мы отключаем автоназначение публичного IP, и нажимаем кнопку Next: Add Storage
2.1.3. Подключение хранилища
Указываем размер "жесткого диска". Для наших целей достаточно 16 гигабайт, и нажимаем кнопку Next: Add Tags
2.1.4. Настройка тегов
Если бы мы создавали несколько инстансов, то их можно было бы группировать по тегам, для облегчения администрирования. В данном случае эта фукнциональность излишняя, сразу нажимаем кнопку Next: Configure Security Gorup
2.1.5. Открытие портов
На этом этапе мы настраиваем брандмауэр, открывая нужные порты. Набор открытых портов называется "Группа безопасности" (Security Group). Мы должны создать новую группу безопасности, дать ей имя, описание, добавить порт UDP (Custom UDP Rule), в поле Rort Range необходимо назначить номер порта, из диапазона динамических портов 49152—65535. В данном случае я выбрал номер порта 54321.
После заполнения необходимых данных, нажимаем на кнопку Review and Launch
2.1.6. Обзор всех настроек
На данной странице идет обзор всех настроек нашего инстанса, проверяем все ли настройки в порядке, и нажимаем кнопку Launch
2.1.7. Создание ключей доступа
Дальше выходит диалоговое окно, предлагающее либо создать, либо добавить существующий SSH ключ, с помощью которого мы в дальнейшем будет удаленно подключатся к нашему инстансу. Мы выбираем опцию "Create a new key pair" чтобы создать новый ключ. Задаем его имя, и нажимаем кнопку Download Key Pair, чтобы скачать созданные ключи. Сохраните их в надежное место на диске локального компьютера. После того как скачали — нажимаете кнопку Launch Instances
2.1.7.1. Сохранение ключей доступа
Здесь показан, этап сохранения созданных ключей из предыдущего шага. После того, как мы нажали кнопку Download Key Pair, ключ сохраняется в виде файла сертификата с расширением *.pem. В данном случае я дал ему имя wireguard-awskey.pem
2.1.8. Обзор результатов создания инстанса
Далее мы видим сообщение об успешном запуске только что созданного нами инстанса. Мы можем перейти к списку наших инстансов нажав на кнопку View instances
2.2. Создание внешнего IP адреса
2.2.1. Запуск создания внешнего IP
Дальше нам необходимо создать постоянный внешний IP адрес, через который мы и будем подключатся к нашему VPN серверу. Для этого в навигационной панели в левой части экрана необходимо выбрать пункт Elastic IPs из категории NETWORK & SECTURITY и нажать кнопку Allocate new address
2.2.2. Настройка создания внешнего IP
На следующем шаге нам необходима чтобы была включена опция Amazon pool (включена по умолчанию), и нажимаем на кнопку Allocate
2.2.3. Обзор результатов создания внешнего IP адреса
На следующем экране отобразится полученный нами внешний IP адрес. Рекомендуется его запомнить, а лучше даже записать. он нам еще не раз пригодиться в процессе дальнейшей настройки и использования VPN сервера. В данном руководстве в качестве примера я использую IP адрес 4.3.2.1. Как записали адрес, нажимаем на кнопку Close
2.2.4. Список внешних IP адресов
Далее нам открывается список наших постоянных публичных IP адресов (elastics IP).
2.2.5. Назначение внешнего IP инстансу
В этом списке мы выбираем полученный нами IP адрес, и нажимаем правую кнопку мыши, чтобы вызвать выпадающее меню. В нем выбираем пункт Associate address, чтобы назначить его ранее созданному нами инстансу.
2.2.6. Настройка назначения внешнего IP
На следующем шаге выбираем из выпадающего списка наш инстанс, и нажимаем кнопку Associate
2.2.7. Обзор результатов назначения внешнего IP
После этого, мы можем увидеть, к нашему постоянному публичному IP адресу привязан наш инстанс и его приватный IP адрес.
Теперь мы можем подключиться к нашему вновь созданному инстансу из вне, со своего компьютера по SSH.
3. Подключение к инстансу AWS
SSH — это безопасный протокол удаленного управления компьютерными устройствами.
3.1. Подключение по SSH c компьютера на Windows
Для подключения к компьютера с Windows, прежде необходимо скачать и установить программу Putty.
3.1.1. Импорт приватного ключа для Putty
3.1.1.1. После установки Putty, необходимо запустить утилиту PuTTYgen идущую с ней в комплекте, для импорта ключа сертификата в формате PEM, в формат, пригодный для использования в программе Putty. Для этого в верхнем меню выбираем пункт Conversions->Import Key
3.1.1.2. Выбор ключа AWS в формате PEM
Далее, выбираем ключ, который мы ранее сохранили на этапе 2.1.7.1, в нашем случае его имя wireguard-awskey.pem
3.1.1.3. Задание параметров импорта ключа
На этом шаге нам необходимо указать комментарий для этого ключа (описание) и задать для безопасности пароль и его подтверждение. Он будет запрашиваться при каждом подключении. Таким образом мы защищаем ключ паролем от не целевого использования. Пароль можно не задавать, но это менее безопасно, в случае, если ключ попадет в чужие руки. После нажимаем кнопку Save private key
3.1.1.4. Сохранение импортированного ключа
Открывается диалоговое окно сохранения файла, и мы сохраняем наш приватный ключ в виде файла с расширением .ppk
, пригодного для использования в программе Putty.
Указываем имя ключа (в нашем случае wireguard-awskey.ppk
) и нажимаем кнопку Сохранить.
3.1.2. Создание и настройка соединения в Putty
3.1.2.1. Создание соединения
Открываем программу Putty, выбираем категорию Session (она открыта по умолчанию) и в поле Host Name вводим публичный IP адрес нашего сервера, который мы получили на шаге 2.2.3. В поле Saved Session вводим произвольное название нашего соединения (в моем случае wireguard-aws-london), и далее нажимаем кнопку Save чтобы сохранить сделанные нами изменения.
3.1.2.2. Настройка автологина пользователя
Дальше в категории Connection, выбираем подкатегорию Data и в поле Auto-login username водим имя пользователя ubuntu — это стандартный пользователь инстанса на AWS с Ubuntu.
3.1.2.3. Выбор приватного ключа для соединения по SSH
Затем переходим в подкатегорию Connection/SSH/Auth и рядом с полем Private key file for authentication нажимаем на кнопку Browse... для выбора файла с сертификатом ключа.
3.1.2.4. Открытие импортированного ключа
Указываем ключ, импортированный нами ранее на этапе 3.1.1.4, в нашем случае это файл wireguard-awskey.ppk, и нажимаем кнопку Открыть.
3.1.2.5. Сохранение настроек и запуск подключения
Вернувшись на страницу категории Session нажимаем еще раз кнопку Save, для сохранения сделанных ранее нами изменений на предыдущих шагах (3.1.2.2 — 3.1.2.4). И затем нажимаем кнопку Open чтобы открыть созданное и настроенное нами удаленное подключение по SSH.
3.1.2.7. Настройка доверия между хостами
На следующем шаге, при первой попытке подключиться, нам выдается предупреждение, у нас не настроено доверие между двумя компьютерами, и спрашивает, доверять ли удаленному компьютеру. Мы нажимем кнопку Да, тем самым добавляя его в список доверенных хостов.
3.1.2.8. Ввод пароля для доступа к ключу
После этого открывается окно терминала, где запрашивается пароль к ключу, если вы его устанавливали ранее на шаге 3.1.1.3. При вводе пароля никаких действий на экране не происходит. Если ошиблись, можете использовать клавишу Backspace.
3.1.2.9. Приветственное сообщение об успешном подключении
После успешного ввода пароля, нам отображается в терминале текст приветствия, который сообщает что удаленная система готова к выполнению наших команд.
4. Конфигурирование сервера Wireguard
Наиболее актуальную инструкцию по установке и использованию Wireguard с помощью описанных ниже скриптов можно посмотреть в репозитории: https://github.com/isystem-io/wireguard-aws
4.1. Установка Wireguard
В терминале вводим следующие команды (можно копировать в буфер обмена, и вставлять в терминале нажатием правой клавиши мыши):
4.1.1. Клонирование репозитория
Клонируем репозиторий со скриптами установки Wireguard
git clone https://github.com/pprometey/wireguard_aws.git wireguard_aws
4.1.2. Переход в каталог со скриптами
Переходим в каталог с клонированным репозиторем
cd wireguard_aws
4.1.3 Запуск скрипта инициализации
Запускаем от имени администратора (root пользователя) скрипт установки Wireguard
sudo ./initial.sh
В процессе установки будут запрошены определенные данные, необходимые для настройки Wireguard
4.1.3.1. Ввод точки подключения
Введите внешний IP адрес и открытый порт Wireguard сервера. Внешний IP адрес сервера мы получили на шаге 2.2.3, а порт открыли на шаге 2.1.5. Указываем их слитно, разделяя двоеточием, например 4.3.2.1:54321
, и после этого нажимает клавишу Enter
Пример вывода:
Enter the endpoint (external ip and port) in format [ipv4:port] (e.g. 4.3.2.1:54321): 4.3.2.1:54321
4.1.3.2. Ввод внутреннего IP адреса
Введите IP адрес сервера Wireguard в защищенной VPN подсети, если не знаете что это такое, просто нажмите клавишу Enter для установки значения по умолчанию (10.50.0.1
)
Пример вывода:
Enter the server address in the VPN subnet (CIDR format) ([ENTER] set to default: 10.50.0.1):
4.1.3.3. Указание сервера DNS
Введите IP адрес DNS сервера, или просто нажмите клавишу Enter для установки значения по умолчанию 1.1.1.1
(Cloudflare public DNS)
Пример вывода:
Enter the ip address of the server DNS (CIDR format) ([ENTER] set to default: 1.1.1.1):
4.1.3.4. Указание WAN интерфейса
Дальше требуется ввести имя внешнего сетевого интерфейса, который будет прослушивать внутренний сетевой интерфейс VPN. Просто нажмите Enter, чтобы установить значение по умолчанию для AWS (eth0
)
Пример вывода:
Enter the name of the WAN network interface ([ENTER] set to default: eth0):
4.1.3.5. Указание имени клиента
Введите имя VPN пользователя. Дело в том, что VPN сервер Wireguard не сможет запуститься, пока не добавлен хотя бы один клиент. В данном случае я ввел имя Alex@mobile
Пример вывода:
Enter VPN user name: Alex@mobile
После этого на экране должен отобразится QR код с конфигурацией только что добавленного клиента, который надо считать с помощью мобильного клиента Wireguard на Android либо iOS, для его настройки. А также ниже QR кода отобразится текст конфигурационного файла в случае ручной конфигурации клиентов. Как это сделать будет сказано ниже.
4.2. Добавление нового VPN пользователя
Чтобы добавить нового пользователя, необходимо в терминале выполнить скрипт add-client.sh
sudo ./add-client.sh
Скрипт запрашивает имя пользователя:
Пример вывода:
Enter VPN user name:
Также, имя пользователям можно передать в качестве параметра скрипта (в данном случае Alex@mobile
):
sudo ./add-client.sh Alex@mobile
В результате выполнения скрипта, в каталоге с именем клиента по пути /etc/wireguard/clients/{ИмяКлиента}
будет создан файл с конфигурацией клиента /etc/wireguard/clients/{ИмяКлиента}/{ИмяКлиента}.conf
, а на экране терминала отобразится QR код для настройки мобильных клиентов и содержимое файла конфигурации.
4.2.1. Файл пользовательской конфигурации
Показать на экране содержимое файла .conf, для ручной настройки клиента, можно с помощью команды cat
sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf
результат выполнения:
[Interface]
PrivateKey = oDMWr0toPVCvgKt5oncLLRfHRit+jbzT5cshNUi8zlM=
Address = 10.50.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = mLnd+mul15U0EP6jCH5MRhIAjsfKYuIU/j5ml8Z2SEk=
PresharedKey = wjXdcf8CG29Scmnl5D97N46PhVn1jecioaXjdvrEkAc=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 4.3.2.1:54321
Описание файла конфигурации клиента:
[Interface]
PrivateKey = Приватный ключ клиента
Address = IP адрес клиента
DNS = ДНС используемый клиентом
[Peer]
PublicKey = Публичный ключ сервера
PresharedKey = Общи ключ сервера и клиента
AllowedIPs = Разрешенные адреса для подключения (все - 0.0.0.0/0, ::/0)
Endpoint = IP адрес и порт для подключения
4.2.2. QR код конфигурации клиента
Показать на экране терминала QR код конфигурации для ранее созданного клиента можно с помощью команды qrencode -t ansiutf8
(в данном примере используется клиент с именем Alex@mobile):
sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf | qrencode -t ansiutf8
5. Конфигурирование VPN клиентов
5.1. Настройка мобильного клиента Андроид
Официальный клиент Wireguard для Андроид можно установить из официального магазина GooglePlay
После чего, необходимо импортировать конфигурацию, считав QR код с конфигурацией клиента (см. пункт 4.2.2) и дать ему имя:
После успешного импорта конфигурации, можно включить VPN тоннель. Об успешном подключении скажет заначок ключика в системной панели Андроид
5.2. Настройка клиента Windows
Первоначально необходимо скачать и установить программу TunSafe for Windows — это клиент Wireguard для Windows.
5.2.1. Создание файла конфигурации для импорта
Правой кнопкой мышки создаем текстовый файл на рабочем столе.
5.2.2. Копирование содержимого файла конфигурации с сервера
Дальше возвращаемся к терминалу Putty и отображаем содержимое конфигурационного файла нужного пользователя, как это описано на шаге 4.2.1.
Далее выделяем правой кнопкой мыши текст конфигурации в терминале Putty, по окончании выделения он автоматически скопируется в буфер обмена.
5.2.3. Копирование конфигурации в локальный файл конфигурации
Поле этого возвращаемся к созданному нами ранее на рабочем столе текстовому файлу, и вставляем в него из буфера обмена текст конфигурации.
5.2.4. Сохранение локального файла конфигурации
Сохраняем файл, с расширением .conf (в данном случае с именем london.conf
)
5.2.5. Импорт локального файла конфигурации
Далее необходимо импортировать файл конфигурации в программу TunSafe.
5.2.6. Установка VPN соединения
Выбрать этот файл конфигурации и подключиться, нажав кнопку Connect.
6. Проверка успешности подключения
Чтобы проверить успешность подключения через VPN тоннель, необходимо открыть браузер и перейти на сайт https://2ip.ua/ru/
Отображаемый IP адрес должен совпадать с тем, который мы получили на этапе 2.2.3.
Если это так, значит VPN тоннель работает успешно.
Из терминала в Linux можно проверить свой IP адрес, введя команду:
curl http://zx2c4.com/ip
Или можно просто зайти на порнохаб, если вы находитесь в Казахстане.
Комментарии (125)
constb
18.04.2019 08:51+5добавлю насчёт амазона, что назначение elastic ip здесь несколько излишне – амазон будет брать за него деньги если машинку остановить, не освободив адрес. автоназначенные IP ничем не хуже, только амазон сразу заберёт его обратно если машинку остановить (ребут не считается остановкой) – и не будет брать денег… так что мой совет на 2.1.2 оставить настройки по умолчанию и полностью пропустить 2.2…
второй совет – полученный айпишник сразу проверить на телеграмовском боте @rknblockbot – хоть подсети амазона и разблокировали, отдельных айпишников в блоке осталось огромное множество, и время от времени они пользователям выпадают. если айпишник был автоназначен – достаточно остановить и снова запустить машинку. если используется elastic ip – его надо release-нуть и выделить заново…
третий совет – история показывает, что амазон могут заблокировать целиком или частично в любой момент, и особенно подвержены блокировкам как раз регионы, которые удобны для размещения VPN пользователей из России – Лондон и Франкфурт. кроме того часто влетают в блок адреса из стандартного региона – Северной Вирджинии и почему-то Огайо. я бы вообще не пользовался для VPN амазоном – для него подойдёт любой самый дешёвый KVM. можно подобрать на lowendbox.com любой в Европе с достаточно большим лимитом на трафик – и настроить его точно таким же образом…
pprometey Автор
18.04.2019 09:07+1Вот за что люблю Хабр, за то, что всегда тут дадут дельные советы. Спасибо.
Учту ваши замечания в следующей версии скрипта и документации. Или ссылку дам на этот комментарий.begemoth3663
18.04.2019 17:01лучше уже не скрипт + картинки + документация, а terraform || cloudformation || ansible || etc.
darken99
18.04.2019 19:31Деньги за EIP берутся только в случае если он не прикреплен к инстансу
Stas911
19.04.2019 23:32aws.amazon.com/premiumsupport/knowledge-center/elastic-ip-charges если инстанс не запущен, то тоже
gosdep
18.04.2019 08:59+2Чем хуже Outline от Google? Можно также создать инстанс в AWS и развернуть Outline всего лишь одной командой.
pprometey Автор
18.04.2019 09:03Да думаю ничем не хуже, только регулярно надо платить, 5$ в месяц, если я не ошибаюсь. А тут на год бесплатно. Особо изворотливые могут зарегистрировать еще аккаунт по истечении года на другую виртуальную карту. Хотя это конечно противоречит соглашению об использовании сервисов AWS, и так делать нехорошо. Ну либо перенести Wireguard на Google Cloud, Azure, там схожие условия бесплатного использования на 1 год.
gosdep
18.04.2019 09:10Так AWS ведь предоставляет бесплатный инстанс сроком на 12 месяцев, как Вы и написали в этой статье.
AlxDr
19.04.2019 10:55Outline предназначен только для выхода в Интернет, т.е. работает как обычный коммерческий VPN — и всё.
Wireguard позволяет клиентам общаться друг с другом, т.е. можно построить защищённую виртуальную сеть и иметь удалённый доступ одновременно ко всем своим хостам, можно разграничить её (например, чтобы ноутбук мог ходить на рабочий компьютер и домашний сервер, а рабочий компьютер домашний сервер не видел).
tarandro
18.04.2019 09:01У wireguard'а есть одна проблема: если указать на сервере пиру в AllowedIps 0.0.0.0/0, то будет ходить мультикаст, но остальные клиенты не смогут подключиться, а если указать конкретный IP, то подключиться сможет много клиентов, но к ним не будет ходить мультикаст.
На своем сервере пришлось создать два интерфейса: один для домашнего роутера, чтобы ospf работал, другой — для телефонов/ноутбуков.pprometey Автор
18.04.2019 09:05Благодарю, полезное уточнение. Хотя надо еще «поиграться» с этим конечно. Поднять несколько тестовых конфигураций. Я лично еще не сталкивался с такими ограничениями.
begemoth3663
18.04.2019 16:59У wireguard'а есть одна проблема: если указать на сервере пиру в AllowedIps 0.0.0.0/0, то будет ходить мультикаст
мультикаст?
в амазоне?
вы шутите?
tuxi
18.04.2019 09:28+2Спасибо за подробное толковое описание настроек.
Будем надеяться, что нам не отключат оплату картами. Это будет один из самых действенных методов по части борьбы с VPN имхо.
Evgenym
18.04.2019 09:43-1Если вы пишете статью, ориентированную на людей «далеких от ИТ», то было бы здорово добавить информацию о том, как защитить свой аккаунт, как добавить двухфакторную аутентификацию, роли, политику паролей, как настроить мониторинг счета, чтобы оперативно получить письмо о том, что вам выставляют счет за что-то. Иначе есть риск в один прекрасный день обнаружить на своем аккаунте кучу машин и получить за это немаленький счет, как это было в статье
Опять же, то, что при регистрации говорится, что аккаунт бесплатный — это не значит, что бесплатно будет все. Об этом тоже стоит сказать. Я в свое время забыл отключить два белых IP-адреса, на которых тестил работу. За ночь, пока они висели, пришлось заплатить пару долларов.
По поводу подтверждения аккаунта добавлю немного от себя. Год назад регил также бесплатный аккаунт для учебы. Спустя пару минут его заблокировали и попросили прислать в качестве подтверждения адреса фото какого-нибудь документа, где видно мое имя и мой почтовый адрес. Я отправил им фото квитанции за коммунальные услуги) После этого аккаунт разблокировали. Спрашивал потом у ребят в группе, у всех было примерно то же самое.vconst
18.04.2019 10:25+2Если вы пишете статью, ориентированную на людей «далеких от ИТ», то было бы здорово добавить информацию о том…
Мне кажется, это совсем отдельная тема и лучше найти мануал конкретно по ней, чем превращать эту статью в глобальный справочник по AWS.
pvsur
18.04.2019 12:02Иначе есть риск в один прекрасный день обнаружить на своем аккаунте кучу машин и получить за это немаленький счет, как это было в статье
Вопрос безопасности осветить нужно обязательно, 12к$ не шутки.
Vinchi
18.04.2019 17:21Эта статья точно не для людей далеких от ИТ, скорее для опытных пользователей. Далеким точно не стоит свой разворачивать а просто купить или найти бесплатный.
samhuawey
18.04.2019 09:56-4> git clone github.com/pprometey/wireguard_aws.git wireguard_aws
Как легко поднять ферму по майнингу биткоинов. Или сайт по распространению наркотиков. И главное полностью безопасно — прищемят органы того, кто карточку засветил, а автор репозитория как бы и не при чём.
Статья написана таким языком что ясно что домохозяйка в исходниках копаться точно не будет. Если там конечно исходники, а не заобфусцированный бинарник.pprometey Автор
18.04.2019 10:02Таких целей не преследую. Да и майнинг нынче дело неблагодарное. Да даже если бы и благодарное было бы. Тем и хорош opensource что всегда можно проинспектировать код. Шила в мешке не утаишь.
pprometey Автор
18.04.2019 10:05Кстати, спасибо что помогли найти ошибку. Тут другой репозиторий должен быть github.com/isystem-io/wireguard-aws. Забыл исправить.
GritsanY
18.04.2019 10:11Ни у кого не возникло проблем с оплатой? У меня Visa Virtuon, которой давно оплачиваю всё в интернете, интернет-транзакции на ней открыты. Пробные 1-долларовые снятия в Плэй маркете или Апп сторе проходят всегда. А AWS не смог снять.
vconst
18.04.2019 10:24+1Почему именно Wireguard? Чем он лучше обычного и привычного OpenVPN? Хоть в двух словах расскажите об особенностях этого сервиса.
Не понял, зачем надо было клонировать git? На сайте проекта есть репозиторий, его можно подключить и устанавливать обычным способом, через apt-get.
Рекомендую все до 4 пункта — убрать под спойлер, ибо там все совсем для домохозяек. Ясное дело, это тоже полезно, но на этом ресурсе, скорее не обязательно. Если кто даст ссылку на статью далекому от всего этого человеку — то подробный мануал он найдет под спойлером, а если человек в теме, он не будет скроллить простыню скринов.
Ну или сделайте оглавление и расставьте якоря по статье.tarandro
18.04.2019 10:56+4Я для себя решил использовать wireguard вместо openvpn, потому что нет долгого хендшейка.
То есть при переходе с LTE на WiFi и обратно телефон просто продолжает работать.
В случае с OpenVPN получается соединение секунд на 15.
Да, еще значительно меньшая нагрузка на проц. После подключения wireguard телефон стал разряжаться на 10% в день больше. OpenVPN отжирал 30-40%vconst
18.04.2019 10:59Странно… Я на разных виртуалках поднимал ОпенВПН, в разных странах и разных системах. 15 секунд это очень долго, проблема не в ОпенВПН, надо искать в другом месте.
Только что проверил на смарте. К DO, в данный момент, коннектится секунды 4 и это долго по моему, к ITLDC меньше секунды и это нормально.tarandro
18.04.2019 11:02Может быть настройка у меня не оптимальна, но wireguard даже секунды не дает :)
Плюс скорость все же чуток повыше, чем через ovpn (хоть и не в разы)vconst
18.04.2019 11:05Так я же написал, что коннект меньше чем за секунду — это норма для ОпенВПН. Скорость больше всего на Shadowsocks, там сервис меньше грузит процессор.
Вопщем, выбор странный и мне, как не специалисту — непонятен. Клиент для ОпенВПН откуда угодно можно скачать, все привычно и стандартно.tarandro
18.04.2019 11:15А можно клиентский конфиг ovpn? У меня вот такой
dev tap
tls-client
client
resolv-retry infinite
redirect-gateway def1
nobind
ca ca.crt
cert cert.crt
key cert.key
tls-auth ta.key 1
comp-lzo
ns-cert-type server
verb 3
cipher AES-128-CBC
vconst
18.04.2019 11:20Как-то так:
Заголовок спойлераclient
dev tun
proto udp
sndbuf 0
rcvbuf 0
remote 195.***.***.*** 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
comp-lzo
setenv opt block-outside-dns
key-direction 1
verb 3
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=ChangeMe
Validity
Not Before: Apr 20 10:02:29 2018 GMT
Not After : Apr 17 10:02:29 2028 GMT
Subject: CN=itlds-01
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
X509v3 Authority Key Identifier:
DirName:/CN=ChangeMe
X509v3 Extended Key Usage:
TLS Web Client Authentication
X509v3 Key Usage:
Digital Signature
Signature Algorithm: sha256WithRSAEncryption
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----
<tls-auth>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
-----END OpenVPN
Static key V1-----
</tls-auth>
tarandro
18.04.2019 11:28На телефоне сейчас не настроено, на ноуте подключение шло 9 секунд. Судя по логу подключения дольше всего выполняется client.up скрипт (7 секунд).
vconst
18.04.2019 11:31А не настоящий сварщик, вот конкретно этот конфиг сгенерен одним из скриптов, которые разворачивают ОпенВПН в Докере. Образ и скрипт качал с Гитхаба. Коннектится меньше секунды, детальные логи не смотрел.
Teomit
18.04.2019 11:31+1Почему именно Wireguard? Чем он лучше обычного и привычного OpenVPN?
Тут есть ответы: https://habr.com/en/post/432686/
md_pitbul
18.04.2019 10:28-1Мне кажется, что люди, далекие от ИТ, ничего не смогут сделать по этому ману, да все понятно и подробно, но слишком он большой и нифига не юзерфрендли.
Я бы предложил, для людей далеких от ИТ, использовать protonVPN.
Бесплатный, рекламы нет, в плане проблем с безопасностью пока не засветился, ну и для работы надо просто поставить приложение и нажать кнопку Connect.
это действительно юзерфрендли.vconst
18.04.2019 10:41Проблема в том, что подобные публичные сервисы уже кошмарят во всю. А свой собственный VPN крутится на виртуалке и никто к нему не докопается. У меня один VPN на DO еще с 12 года работает, все лишнее там закрыто, система и сервис не обновлялся уже несколько лет — но пашет без единой проблемы.
caveeagle
18.04.2019 10:49Ну, заблокировать proton крайне просто — он на узком диапазон ip сидит, и нигде кроме vpn и шифрованных мейлов не используется. Как только появится достаточное количество клиентов, его просто заблочат вместе с protonmail. А амазон — наоборот, заблочить не получилось — разблокировали после жалоб.
md_pitbul
18.04.2019 10:51полностью с вами согласен, но я говорил о том что для людей далеких от ИТ этот ман, к сожалению, ничем не поможет.
dragoangel
19.04.2019 16:28Далёкие люди не сидят на хабре.
vconst
19.04.2019 16:37Человек не с Хабра — может нагуглить этот мануал. Индексируется он только в путь и ранжируется в выдаче высоко.
dragoangel
21.04.2019 00:35+1Далекие люди не будут гуглить как поднять свой VPN, а если все таки нагуглят, то наверное это реально самый простой мануал по настройке VPN сервера.
akokarev
18.04.2019 10:59-3Как уже выше писали, заблокируют амазон и опять это вас не спасет от блокировок. Так что решение сомнительное. К тому же вы палите все свои персональные данные амазону. Где гарантия, что амазон не предоставит их по запросу правоохранительных органов РФ?
Скорость даже до 20Мбит не дотягивает… смешно! Ну а чего вы хотели за бесплатно?
Не те цели вы себе поставили. Хотите бороться с блокировками? — вступайте в Пиратскую Партию России (вход бесплатный), участвуйте в митингах, да хоть в спорт-лото пишите… хоть как-то проявляйте свою гражданскую позицию!
На счет способов обхода блокировок РКН: сам по себе обход блокировки уже является противозаконным действием и за это могут привлечь (статью ищите сами, если не найдете, ожидайте что привлекут за создание и распространение вредоносного ПО, как это уже было с разработчиком хака для 1С). Так что если уж нарушать, так нарушать — качай
[удалено], ломай забугорные роутеры, включай VPN на них — скорость, анонимность, бесплатно, не попадает в массовые блокировки, проще чем поднять AWS. Кстати обойтись можно и без хак-утилит, уже все взломано на 3wifi и Shodan.begemoth3663
18.04.2019 17:05К тому же вы палите все свои персональные данные амазону.
ув. кул-хацкер уверен, или просто так: абы набросить?
akokarev
18.04.2019 19:02Уверен. Скрин морды регистрации для ленивых:
А так же советую почитать agreement по ссылке из чекбокса, который всегда надо отмечать не читая.
За обращение «ув.» я так и быть переведу для вас первые два подпункта гугл-переводчиком:
1.1 Основное. Вы можете получить доступ и использовать услуги в соответствии с настоящим Соглашением. Соглашения об уровне обслуживания и условия обслуживания применяются к определенным предложениям услуг. Вы обязуетесь соблюдать условия данного соглашения и все законы, правила и положения, применимые к использованию предлагаемых услуг.
1.2 Ваш аккаунт. Для доступа к сервисам необходимо иметь учетную запись AWS, связанную с действительным адресом электронной почты и действительной платежной формой. Если это явно не разрешено условиями обслуживания, вы создадите только одну учетную запись на адрес электронной почты.
Под законами может пониматься в том числе местное законодательство (обрати внимание на п.4.2). Под платежной формой понимается счет в банке, по которому вас смогут идентифицировать.
Еще советую обратить внимание на п.7.2b(ii)C, исходя из которого можно сделать вывод, что с правительствами они сотрудничают, в отличае от Telegram.akokarev
18.04.2019 19:07Для минусующих советую прочитать таки agreement хотя бы раз в жизни, чтоб иметь хотябы предсталение о чем там пишут.
После прочтения задайте себе пару вопросов:
1. Может ли AWS получить доступ к ключам шифрования и вскрыть весь траффик?
2. Может ли AWS передать полученные данные по запросу правоохранительных органов?samhuawey
19.04.2019 11:21Да им бесполезно объяснять, я уже говорил, что пользуясь советами топикстатера товарищи выставят всё своё грязное бельё на рассмотрение компетентными органами, тоже заминусовали. Амазон ссориться с властями не будет, если конечно его бизнес в Казахстане интересует, и успешно сольёт все логи, если до этого бравый программист из отдела К не пропатчит репозиторий с продуктом :)
hMartin
18.04.2019 11:04Я где-то слышал, что AWS и GCP могут чарджнуть по факту выжранных ресурсов по самое не хочу. От их использования останавливало только это. Можно как-то залимитить, чтобы с меня не могли списать лишнего? что если я привяжу виртуалку с небольшим балансом?
vconst
18.04.2019 11:06Можно настроить алерты по куче параметров, я настроил на бабло, если у меня расходы на AWS превышают 5 баксов — он мне кричит в мейл.
akokarev
18.04.2019 11:12Если расходы превышают 5 баксов на 995 баксов алерт будет бесполезен.
vconst
18.04.2019 11:14-2И каким образом можно попасть на килобакс при работе в бесплатных лимитах ФриТир? Конечно аккаунт могут мзломать и повесить туда майнера на ГПУ, но реально то что должно произойти в ВПС?
akokarev
18.04.2019 19:17И каким образом можно попасть на килобакс при работе в бесплатных лимитах ФриТир?
Вы карту привязали при регистрации? Чекбокс на agreement поставили?
Вариант 1, на карте есть килобакс: Списание производится не сразу, а например раз в сутки. За сутки набежало траффика/нагрузки на килобакс, списали. Виртуалок на одном аккаунте может быть много.
Вариант 2, на карте нет килобакса, но он есть на соседнем счету: Подадут в суд Люксембурга, выиграют дело, претензию передадут ваш банк, банк спишет в их пользу.
lev
18.04.2019 19:30+1В AWS платный трафик, так что даже «бесплатная» виртуалка может накачать неплохо. Ломанут, утекут ключи или ещё какая-нить беда может приключиться.
pvsur
18.04.2019 11:04Еще хочу сказать, что в метрошном wifi (Москва) после рекламного переподключения любой vpn кроме как через tcp 80/443 отваливается минут через 10. Да и в публичных wifi разных организаций часто блочат все порты кроме 80 и 443.
vconst
18.04.2019 11:07После того, как Мегафон сделал стабильный коннект по тоннелям где я обычно езжу — я больше не вижу смысла в этом метрошном вайфае.
ss-nopol
18.04.2019 12:15+1А можно ещё подробно написать, где и как можно попасть на деньги при этом подходе? Не снимут ли деньги по истечении года? Какие ещё могут быть засады?
pprometey Автор
18.04.2019 12:19Да, я видимо не уделил должного внимания этому вопросу. Так как сам во время использования AWS заплатил непредвиденные затраты на сумму чуть меньше доллара.
Как уже сказали выше, зарезервировал Elastic IP для второго инстанса, а машину остановил. И за простой Elastic IP пришлось заплатить несколько центов. Плюс иногда забывал отключать на телевизионной приставке соединение (в Казахстане частенько Youtube и Facebook по вечерам блочат) и в итоге превышал к концу месяца лимит в 15 Gb, и пару центов тоже счета выставляли.
pprometey Автор
18.04.2019 12:21Тут такой подход — включил — попользовался и отключил. Тогда все будет хорошо, и лимиты не превысишь.
Чтобы не заботиться о лимитах, можно арендовать какой-нибудь VPS недорогой с безлимитным трафиком — установить этим же скриптом, и забыть об ограничениях.vconst
18.04.2019 12:42Тут такой подход — включил — попользовался и отключил
Пробовал так делать, но постоянно куда-то лазить и дергать инстанс туда-сюда — настолько быстро надоедает, что проще оставить постоянно включенным и пользоваться им разумно, выключая клиент, а не сервер.pprometey Автор
18.04.2019 13:43Я про клиент и имел ввиду. Инстанс останавливать нельзя, иначе пойдут счета за аренду неиспользуемого Elastic IP
Bonio
18.04.2019 15:58Нафиг такую халяву. Всего на год, с ограничениями, с палевом своих данных еще и с риском попасть на деньги. Проще нормальный недорогой vps найти.
pprometey Автор
19.04.2019 14:48Ну тут уж каждый решает сам, что ему проще и выгоднее. Мне вот проще оказалось поднять бесплатный инстанс на AWS, чем покупать VPS.
vconst
19.04.2019 15:13Это только кажется, что бесплатный год — долго. На самом деле пойдёт он достаточно быстро и начнётся поиск, где ближе и дешевле. Причём, Амазон не так давно снизил цены, а 5-6 при назад их самый простой инстанс стоил дороже, чем у DO.
pprometey Автор
19.04.2019 17:59Да, согласен. Год пролетит и не заметишь. Так и произошло. Вроде недавно настроил. А уже год к концу подходит. Но у меня есть еще Google Cloud и Azure. Еще 2 года в запасе.
samhuawey
18.04.2019 12:54-5Не знаю, почему минусуют, но статья очень похожа на работу современного отдела профилактики правонарушений одной из среднеазиатских стран. По сути весь трафик пользователя, который ему хотелось бы скрыть, пойдёт через софт никому не известного происхождения, выложенный на публичный хост. Что может быть проще внедрить пару зависимостей хотя бы как патч — и забирай домохозяйку прямо в фартуке готовенькую, дела шить не надо, достаточно логов и карточки.
Если и говорить о безопасном способе уходить от ответственности, то этот код должен быть написан человеком уровня Столлмена. А ещё лучше — целиком образ системы или докер без возможности исправления людьми оттуда. Иначе подобные статьи по сути являются либо троянскими конями, либо вредными советами — типа, сделай так, и сможешь нарушать закон как угодно.jryj
18.04.2019 13:14типа, сделай так, и сможешь нарушать закон как угодно
Обход блокировки не считается нарушением закона.
А нарушать закон не стоит в любом случае. С ВПН или без него.
pprometey Автор
18.04.2019 13:44Wireguard написал известный профессионал в области информационной безопасности. Прочитай про это него.
lyadnov
18.04.2019 13:341. Могу еще добавить, что в качестве карты лучше использовать виртуальную на которой небольшая сумма денег (100руб), и в случае ошибки больше этой суммы — не спишется.
2. Через год финт с бесплатным vpn можно повторить. Для этого:
— я перевыпустил виртуальную карту, чтобы номер изменился (в яндекс-деньгах это бесплатно, но аккаунт должен быть идентифицированный)
— зарегистрировал новый аккаунт в amazon (c новой симки + новый e-mail, но не факт что новая симка необходима)
3. Чтобы меньше зависеть от elastic-ip адреса, который меняется как минимум раз в год, можно зарегать бесплатный домен в tk-зоне (dot.tk) и раздавать друзьям\родственникам vpn\proxy по доменному имени, а не ip-адресу. Эти tk-домены бесплатны 1 год, но за 2 недели до окончания срока, можно заходить в личный кабинет и продливать еще на год бесплатно.
isqwonder
18.04.2019 13:44Удобный образ готового OpenVPN:
www.turnkeylinux.org/openvpnpprometey Автор
18.04.2019 13:48У меня раньше на AWS именно OpenVPN крутился. Но он менее удобен и быстр чем Wireguard. К тому же поехал в Египет — а там его детектят на раз, и блокируют. После этого и решил перейти на Wireguard.
Можно сказать даже что OpenVPN — это устаревшая технология. Но если и использовать, то уж лучше тогда не образ, я поднимал так же автоматически с помощью скрипта github.com/redgeoff/openvpn-server-vagrantdartraiden
18.04.2019 15:50Клиент Wireguard ещё очень хорош на мобильных устройствах (если ядро собрано с его поддержкой). Он меньше расходует заряд аккумулятора.
jahr
18.04.2019 16:18+1Почему не использовать streisand? Он позволяет запустить WireGuard, OpenConnect, OpenSSH, OpenVPN, Shadowsocks, sslh, Stunnel, Tor bridge на Amazon Web Services (AWS), Microsoft Azure, Digital Ocean, Google Compute Engine (GCE), Linode, Rackspace, добавлять и удалять пользователей, показывать пользователям инструкции по настройке подключения к конкретным сервисам и т.п.)
aborouhin
18.04.2019 17:19Какие-то у Вас совсем грустные пинги до Европы… Но в любом случае, из Ваших speedtest'ов я выбрал бы Франкфурт, а не Лондон, т.к. с ним latency меньше, а при увеличении latency скорость внутри тоннеля падает просто катастрофически.
В Вашем случае, т.к. скорость до VPN-сервера сама по себе не велика, это может быть незаметно, но если условия позволяют рассчитывать хотя бы на 50-100 Мбит/с — то тут каждые 10 мс пинга очень сильно меняют картинку. Хотя Wireguard в этом случае заметно лучше OpenVPN справляется, да.
roller
18.04.2019 18:05Какая-то жесть. github.com/trailofbits/algo для кого сделали? Все заработает из каропки, в том числе профили IPSec для windows 10
dormin
18.04.2019 18:37Использование wg-quick не кошерно для информационной безопасности. И если есть постоянный IP дома, то лучше указать его при настройках открытия портов вместо 0.0.0.0/0. При наличии доступа к аккаунту AWS при необходимости это легко меняется.
Лучше все реализовывать через Ansible, как это сделали в Streisand.
Про ElasticIP уже написали, но не упомянули про хороший сервис AWS Instance Scheduler позволяющий настроить запуск и остановку инстанса. При этом Вы можете держать до 3 инстансов в бесплатной версии AWS, запуская их с соблюдением условия общего времени работы 750 час. в месяц. Ну и еще один плюс при выключении и включении IP адрес AWS инстанса меняется, но доменное имя остается.
Igorjan
Цитируйте полностью
Свобода слова не значит вседозволенность.
pprometey Автор
Согласен. Свобода одного заканчивается там, где начинается свобода другого. Но не там, где чекистская хунта узурпировавшая власть в стране создает свой чебурнет.
nicholas_k
Очень забавно, когда вы хотите соблюдения правил в отношении вас, но не хотите соблюдать правил в отношении их. Да и лозунги у вас сомнительные.
pprometey Автор
Это не лозунги, а личное мнение, на которое имею полное право.
nicholas_k
Причем имеете не только право, но и возможность его высказать совершенно безопасно, несмотря на то, что чекистскую хунту обвиняют в покушении на свободу слова не первый десяток лет.
pprometey Автор
Расскажите об этом Немцову.
nicholas_k
То есть заштатный и забытый всеми Немцов — жертва чекистской хунты, а куда более яркий и деятельный Навальный даже катается по миру несмотря на непогашенную судимость, собирает митинги, занимается успешной пропагандой.
Удивительная непоследовательность чекистской хунты и удивительная нетребовательность к обоснованиям у вас.
pprometey Автор
А ты на мост Немцова сходи, посмотри какой он забытый. Как ни стараются власти, не получается замять память об этом преступлении nemtsov-most.org
nicholas_k
Ну да, только после того, как его объявили невинно убиенным мучеником его и вспомнили. Очень удобно получилось.
А впрочем и сейчас его снова забыли, и это конечно же проделки хунты, которая борется с его памятью иза всех сил.
erty
Какая ещё свобода «их»? Автор запрещает кому-то из «них» выходить в интернет?
Свобода заканчивается там, где начинается насилие над другими людьми. Укажите пожалуйста, в каком месте статьи автор насилует кого-либо?
Vinchi
А это уже конституция а не декларация.
2PAE
Вы зря апеллируете к закону.
Самые большие злодеяния в истории человечества, были совершенно законны.
Я понимаю что декларация прав человека это как бы не закон, но всё одно зря.
Что-бы человечество не написало в законах, реальный мир, от этого не изменится.