Безопасный OpenVPN на VPS за несколько минут

Введение


В связи с последними событиями и возможной блокировкой публичных VPN сервисов созрела идея облегчить жизнь людям и сделать скрипт для быстрой установки OpenVPN со всеми настройками и легким выпуском сертификатов.

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

Скрипт создавался для машин с CentOS 7.x или Ubuntu Server 17.x, использование на Ubuntu 16.x. возможно, но там OpenVPN 2.3.x в репозиториях. При необходимости можно добавить другие дистрибутивы, но обычно при покупке VPS можно выбрать систему и это не так важно.

Скрипт написан на bash за пару часов, возможны ошибки и наверняка что-то можно было реализовать проще и лучше.

Запускайте скрипт на свежей машине, он перезаписывает правила iptables и конфигурацию OpenVPN. И да, в правилах iptables разрешен порт ssh 22, если вы поменяли его на другой, не забудьте поменять порт в скрипте.

Особенности


  1. По умолчанию рекомендуется cipher AES-256-GCM (что достаточно безопасно на данный момент);
  2. По умолчанию используется auth SHA256 (вместо дефолтного SHA1);
  3. По умолчанию для OpenVPN 2.4.x используется tls-crypt (что усложняет обнаружение трафика OpenVPN);
  4. По умолчанию использует Google DNS и блокировку локальных DNS (setenv opt block-outside-dns) для предотвращения DNS Leak;
  5. Создаются все нужные правила в iptables и ip6tables;
  6. Есть поддержка IPv6.

Как пользоваться


Использовать скрипт очень просто, скачайте файл openvpnsetup.sh на ваш VPS, дайте ему права на запуск chmod +x openvpnsetup.sh и запустите ./openvpnsetup.sh. В результате вы получаете настроенный сервер, готовый к работе на выбранном вами порту.

В папке /etc/openvpn создается скрипт newclient.sh, который нужен для создания файлов конфигурации клиентской части, использовать его так же просто — ./newclient.sh clientname. Результатом будет файл /etc/openvpn/bundles/clientname.ovpn, который сразу можно использовать на клиенте, просто положите его в папку config (в случае использования на Windows) на вашей машине.

Если вы захотите пересоздать сервер, просто удалите все из папки /etc/openvpn и запустите скрипт заново (естественно, клиентские сертификаты надо будет перевыпустить).

Советы по выбору VPS для OpenVPN


  1. В первую очередь смотрим на цену, можно найти предложения за $3-4 в месяц, что дешевле многих VPN сервисов;
  2. Выбирайте VPS ближе к вам географически, если хотите иметь приемлемую скорость через VPN. Чем меньше пинг от вас до VPS, тем лучше скорость;
  3. Выбирайте минимальную конфигурацию. OpenVPN не использует больше одного ядра и может работать на 256MB памяти. Минимального дискового пространства в 3-5GB так же вполне достаточно;
  4. Некоторые VPS ограничены по трафику, но обычно это 1TB в месяц, если вы планируете использовать больше, рассмотрите другие тарифные планы;
  5. Перед тем как оформить заказ на VPS, уточните разрешена ли загрузка торрентов (при условии, что они вам нужны, конечно);
  6. Так же можно уточнить включены ли TUN/TAP устройства в системе. В скрипте есть проверка на это, но лучше уточнить до покупки, возможно их и нельзя будет включить через поддержку провайдера VPS;
  7. Наличие IPv6 адреса, скрипт позволяет настроить сервер с поддержкой IPv6 и возможно вы захотите иметь возможность посещать IPv6 ресурсы через VPN.

Скрипт доступен на GitHub.

Бонус: результат проверки анонимности на 2ip.ru:

image

Проверка на WITCH?:

image

Проверка на DNS Leak:

image
Поделиться публикацией
Похожие публикации
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама
Комментарии 56
  • +4

    Стопервый пост о том, как развернуть VPN на DigitalOcean. На этот раз без упоминания DigitalOcean.

    • 0
      согласен на все сто, и предлагаю автору поста тему для публикации — быстрый и стабильный vpn
    • +1
      Плюсую предыдущего оратора. А слабо написать такое же, но чтобы IKEv2, чтобы на той же винде и смартфонах всё искаропки заработало без стороннего софта?
      • 0
        Кстати, хоршая идея, слышал что с клиентом в Windows 10 какие-то проблемы есть, буду тестировать.
        • 0
          https://github.com/trailofbits/algo
          • 0
            Спасибо за ссылочку. С strongswan, kernel-libipsec раза 3 пытался воевать, не осилил.
            • 0
              а на чем засыпались?
              при наличии kernel-libipsec кмк там только на генерации сертификатов можно встрять, если руками их делать.
          • +1
            у IKEv2 есть два минуса — его видно, и его режут. а так в принципе ставим strongswan, kernel-libipsec и вперед. там все простенько, реально.
            • 0
              Лучше вот это: http://ocserv.gitlab.io/www/index.html
            • +1
              • 0
                Да, увидел скрипт от Nyr после того как написал свой :) Но в моем добавлен IPv6, так что пусть будет.
                • 0

                  Ставил этим скриптом, 2ip.ru показывает следующее. Кто-нибудь знает, почему так?

                  • 0
                    Они определяют VPN по MTU, плюс адрес в их статик-листе хостинг провайдеров. Тут можно почитать
              • 0
                а где дают vps за 3 бакса в месяц?
                • 0
                  Смотрите на lowendbox, рекламные ссылки давать не буду. Можно найти и за $2.25 в месяц, видел акции по $8 в год как-то.
                  • –1
                    Hostodo VZ-256 — $10 в год.
                    • 0
                      далековато находится, скорость будет не очень
                      • 0
                        Торенты может и не покачать, но для серфинга — не испытывал проблем. Кроме того через США работают многие сервисы, которые не работают через Европу — Pandora и т.п…
                    • 0

                      Сейчас можно поискать на сайтах вроде lowendbox. или poiskvps.ru
                      В свое время у yourserver был план с 256мб за €2 в месяц, и даже 30% скидку предлагали на старте.

                      • +1
                        И ближе к черной пятнице там можно поймать копеечные предложения.
                      • 0
                        https://www.arubacloud.com/ но там ограничение по траффику
                        • 0
                          scaleway
                          • 0
                            У них отдельно оплачиваются диск и айпи адрес (еще по евро), вместе получается 5 евро. Что дороже даже 5 долларов у конкурентов
                            • +1

                              У Вас, наверное, остался ip от удаленной виртуалки. Его можно удалить вручную. А так — честно 2,99 евро

                              • 0
                                Пересмотрел счета, вы правы, спасибо. Действительно самый дешевый инстанс получается 3 евро уже с диском и адресом
                          • 0
                            Например, Time4VPS.
                            • 0
                              wishosting (есть отзывы на lowendtalk) план OpenVZ Mini за 3$ в год (получается 0.25$ в месяц, но заказывать надо на год), но там NAT (есть 20 портов) и вообще куча ограничений (постоянно нельзя использовать более 15% ресурсов т.н. fair use policy), зато 256 МБ RAM, 40 GB HDD, и трафик без ограничений (но не более 15% пропускной способности — т.е. не более 37 Мбит/с постоянно), сервер во Франции (пинг около 50 мс). Можно выбрать Ubuntu или Debian или CentOS
                              Мне хватает на крохотный личный Django проект для сбора информации с ESP и подключенных датчиков и довольно редкого VPN (сам сервер VPN запущен постоянно)
                              Пользую с мая месяца, и очень доволен, думал собирать информацию с датчиков на старый нетбук, но даже только по затратам на электричество (в час около 15 Вт) выходит вдвое дороже.
                              • 0
                                Я проклял все, час пытаясь оплатить их через payza.com (других вариантов с кредитками нет).
                                К самому сервису пока нет претензий, но payza это какое-то адовое бажное адище.
                                UPD: используйте 2Checkout, так хоть и написано paypal, карты берут. На все ушло 2 минуты, блин.
                              • +1
                                OVH за 3.5 доллара дает 2 гигабайта оперативки, 10 гигабайт ссд и 100 мегабит безлимитный трафик.
                                • 0
                                  у них же нет ограничений на VPN и торренты?
                                  А то там в Terms тыщща файлов, вроде в common и VPS нет никаких запретов.
                                • +2

                                  Подборочка дешевых vps http://lowendstock.com/

                                  • 0
                                    Использую для этих целей hyperhost.
                                    • +2
                                      Поищите тут: https://poiskvps.ru или https://vds.menu
                                    • 0
                                      Наша организация обслуживает IoT с debian. Так вот, почти везде openvpn для этого хватает. Но есть места, где местной сетью или провайдером просто рубится TLS Handshake. При этом порты формально доступны. Возможно скоро нас ожидает подобное повсеместно. Пока выкручивались пропуская openvpn внутри ssh-туннеля или kcptun.
                                      • 0

                                        Static Key mode поможет.

                                      • 0

                                        Может я что-то не так настроил (хотя маловероятно поскольку настроек нет)? У меня утекают DNS. Ubuntu 16.04, но версия OpenVPN 2.4.3

                                        • 0

                                          Надо в клиентском конфиге прописать


                                          script-security 2
                                          up /etc/openvpn/update-resolv-conf
                                          down /etc/openvpn/update-resolv-conf
                                          • 0
                                            Зависит от клиента, setenv opt block-outside-dns работает только на Windows (начиная с 7-ки).
                                            • 0

                                              это я уже понял, тогда может в скрипте спрашивать под какую систему нужен конфиг? и как будет на Android?

                                              • 0
                                                Начал тестировать и узнал интересную вещь — auth SHA256 не поддерживатся OpenVPN Connect на Android… (тестировал на 4.3 и 7).

                                                /etc/openvpn/update-resolv-conf — этого скрипта нет в поставке клиента на RHEL клонах насколько я знаю, тоже надо подумать что можно сделать.
                                                • 0
                                                  auth SHA256 на iphone то-же не работает
                                          • +1
                                            Есть еще вариант быстрого подъема VPN с помощью SoftEther и Docker https://t.me/darkfox_info/48

                                            Тут вообще одной строчкой можно поднять сервис и подрубатьсяк нему с посощью разных протоколов. Еще на телеграм канале https://t.me/distributed разные варианты обсуждали (в т.ч. поболее легковесные). Но сам не помню. Можно у парней спрашивать способы.
                                            • +1
                                              Думаю, вам стоит написать статью, чем больше способов обхода тем лучше. SoftEther хорошая штука, жалко под свой протокол нет мобильных клиентов у них. За один http://www.vpngate.net/en/ можно им огромное спасибо сказать.
                                              • 0
                                                По работе понадобился доступ к LinkedIn на уровне api, и только на одной машине с макосью., т.е. не браузер. Чего почитать из статеек чтобы только этот траф шел через vpn? В остальном штатными средствами обхожу этот {роскомнадзор}.
                                                Раскурив солюшен, хочу его на orange pi за натом перевесить, чтоб и удаленно с мобилы проблем тоже не знать. Но это вторично.
                                                Спасибо!
                                                • +1
                                                  Тот же OpenVPN умеет поднимать маршруты только до нужных ресурсов, убираете в конфигурации сервера:
                                                  push «redirect-gateway def1 bypass-dhcp» (редирект всего трафика) и добавляете push «route 108.174.10.10 255.255.255.255» (маршрут до linkedin.com).
                                                • 0
                                                  Есть еще неплхой vpn сервер с конфигурацией из веб гуев и и другими приятными штуками: pritunl
                                                  Минус — нужна монга для работы
                                                  • 0
                                                    Как обойти «Определение туннеля (двусторонний пинг)» кроме покупки сервера в одной стране / городе?
                                                    • 0
                                                      Достаточно закрыть ICMP на VPN сервере.
                                                    • 0
                                                      а почему ограничились только CentOS и Ubuntu?
                                                      На Debian/testing тоже сработало, только пришлось чуть-чуть поколдовать из-за несоответствий версий easy-rsa и openssl (у второго уже 1.1, а первый о таком не знает).
                                                      • 0

                                                        Вот образы Docker для впн, с инструкцией, работают давно и стабильно
                                                        OpenVPN (для компа):
                                                        https://github.com/scf37/docker-openvpn


                                                        L2TP/IpSec (для домашнего роутера):
                                                        https://github.com/scf37/docker-l2tp

                                                        • 0
                                                          Сделал по вашей статье. С Windows не подключается:
                                                          Thu Aug 17 18:14:31 2017 VERIFY ERROR: depth=1, error=certificate is not yet valid: C=US, ST=CA, L=SanFrancisco, O=Fort-Funston, OU=MyVPN, CN=Fort-Funston CA, name=EasyRSA, emailAddress=my@vpn.net
                                                          Thu Aug 17 18:14:31 2017 OpenSSL: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
                                                          Thu Aug 17 18:14:31 2017 TLS_ERROR: BIO read tls_read_plaintext error
                                                          Thu Aug 17 18:14:31 2017 TLS Error: TLS object -> incoming plaintext read error
                                                          Thu Aug 17 18:14:31 2017 TLS Error: TLS handshake failed
                                                          Thu Aug 17 18:14:31 2017 Fatal TLS error (check_tls_errors_co), restarting
                                                          Thu Aug 17 18:14:31 2017 SIGUSR1[soft,tls-error] received, process restarting
                                                          Thu Aug 17 18:14:31 2017 MANAGEMENT: >STATE:1502982871,RECONNECTING,tls-error,,,,,
                                                          • 0
                                                            Надо проверить дату на VPS и на локальной машине — error=certificate is not yet valid (т.е. срок действия сертификата еще не наступил). Возможно это из-за разницы во времени между VPS и вашей системой.
                                                            • 0
                                                              так и было, спасибо
                                                              в остальном всё работает чётко
                                                          • 0
                                                            vpn-install (pptp, ipsec, openvpn)

                                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.