Как открыть порты через openvpn
Какие порты открывать для VPN PPTP, L2TP, IPsec, OpenVPN и WireGuard
Сегодня общественные сети Wi-Fi широко используются, их можно использовать, но это не значит, что нам не нужно принимать крайние меры предосторожности. В этом смысле мы никогда не должны забывать о нашей безопасности, и мы всегда должны иметь VPN связь. Иногда бывает такое время года, как летние каникулы, Пасха или длинные выходные, когда такая услуга очень необходима. Для дополнительного спокойствия мы должны выбрать платный VPN, потому что бесплатные иногда в конечном итоге продают часть наших данных. Другой безопасной и бесплатной альтернативой является создание VPN-сервера дома. В этом руководстве мы поговорим о том, какие порты открывать для VPN, если вы используете PPTP, L2TP, OpenVPN, IPsec и WireGuard протоколы.
Во многих случаях, даже если мы хотим отключиться и расслабиться, будь то отпуск или досуг, наш смартфон всегда с нами. Таким образом, куда бы мы ни пошли, наверняка во многих случаях у нас есть доступная общедоступная сеть Wi-Fi, которую мы можем использовать. Либо для нашей собственной безопасности, либо для безопасности компании, в которой мы работаем, мы должны использовать их с осторожностью и быть защищенными.
Первое, что мы собираемся сделать, это объяснить причины, по которым необходим собственный сервер. Затем мы увидим, какие порты для VPN я должен открыть на маршрутизаторе в зависимости от используемого протокола VPN.
Причины иметь в нашем доме VPN-сервер
Здесь мы должны поговорить о внешние VPN-серверы, Это те, которые позволяют нам подключаться к их сети, чтобы иметь возможность перемещаться с большей конфиденциальностью и безопасностью, зашифровывая наши данные. В этом случае это будет открытие портов для VPN, которые мы разместим в нашей домашней сети. Целью использования этого типа сервера является повышение безопасности и конфиденциальности нашего интернет-соединения, поскольку все наши зашифрованные данные передаются. Таким образом, наша информация выглядит так, как если бы она путешествовала в защищенном туннеле благодаря шифрованию, которое не позволяет киберпреступникам получить к ней доступ.
Таким образом, наличие собственного VPN-сервера даст нам следующие преимущества.
Еще один очень важный аспект, когда у нас есть VPN-сервер в нашем доме, заключается в том, что мы можем получить доступ ко всем общим ресурсам, как если бы мы были физически подключены, поэтому мы должны это учитывать.
Какие порты мы должны открыть на нашем роутере
Если мы хотим настроить VPN-сервер на компьютере, нам нужно будет открыть определенные порты TCP или UDP. У каждого маршрутизатора своя прошивка со своими опциями, как в случае с Raspberry Pi или NAS. Это делает процедуру для каждого из них уникальной. Если мы возьмем в качестве примера случай с сетевым хранилищем QNAP, процесс его настройки очень прост. С другой стороны, если мы посмотрим на Raspberry Pi, процедура обычно будет более сложной, потому что установка, настройка и запуск гораздо более «ручные».
Как только мы узнаем, какие порты используют разные протоколы VPN, мы покажем вам практический пример открытия портов для сервера VPN.
Практический пример открытия портов для VPN
В этом случае это будет обсуждаться в Разрешить доступ раздел, нам нужно будет назвать правило, выбрать протокол TCP и добавить порт 1701.
Применительно к выбранному нами оборудованию, которому уже назначен локальный фиксированный IP-адрес, мы сможем увидеть полное правило, готовое к использованию нашим VPN-сервером.
В настоящее время, если у нас есть наш VPN-сервер, правильно настроенный с использованием протокола L2TP и ему назначен локальный IP-адрес 192.168.1.3, мы можем начать работать с ним из-за границы, то есть из Интернета. Помните, что для правильного функционирования вашего VPN-сервера существуют разные типы протоколов в зависимости от используемой нами VPN, и что каждый из них использует свой порт TCP или UDP.
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Настройка OpenVPN-сервера для доступа в интернет
Кроме общественных сетей в последние годы стала приобретать повышенную актуальность проблема ограничения доступа к некоторым ресурсам исходя из географического расположения клиента. Это могут быть как ограничения регионального характера, например, популярный поставщик видеоконтента Netflix, так и блокировки со стороны органов власти, как яркий пример которых «ковровые блокировки» РКН в его борьбе с Телеграм, когда под ограничения попало большое количество совершенно легальных ресурсов.
Что нужно для создания собственного VPN-сервиса? Прежде всего потребуется VPS (виртуальный выделенный сервер) расположенный в регионе, из которого возможен неограниченный доступ к требуемым ресурсам. В большинстве случаев можно выбирать Европу или Штаты, но во втором случае задержки будут выше. На наш взгляд, выбирать Штаты имеет смысл, если вам требуется доступ к американским ресурсам, тому же Netflix или покупкам у американских продавцов на Amazon и Ebay.
Для поиска недорогих VPS можно воспользоваться специальными сайтами, такими как Low End Box или бесплатными предложениями от облачных провайдеров. Так у Amazon и Microsoft можно бесплатно получить виртуальную машину на год, а Oracle предлагает две VPS бесплатно и навсегда.
В нашем примере мы будем использовать бесплатный VPS от Oracle с Ubuntu 18.04, но данная инструкция подойдет для любых deb-based систем и с некоторыми поправками для любого другого Linux-дистрибутива.
Настройка сервера OpenVPN
Прежде всего установим OpenVPN и Easy-RSA для управления ключами:
Скопируем файлы easy-rsa в конфигурационную директорию OpenVPN и создадим символическую ссылку на файл настроек OpenSSL:
Затем откроем файл /etc/openvpn/easy-rsa/vars и изменим в нем следующие строки, указав собственные данные для сертификатов, например, так:
Сохраним файл и перейдем к созданию собственного центра сертификации (CA). Для этого перейдем в директорию нашего CA и загрузим переменные:
Очистим любые имеющиеся данные и инициализируем центр сертификации:
В процессе создания ключей вам будут задаваться вопросы, ответы по умолчанию на которые берутся из файла vars и помещены в квадратных скобках, поэтому можно просто подтверждать их нажатием Enter.
После чего в директории /etc/openvpn/easy-rsa/keys появится сертификат CA, содержащий публичный ключ, ca.crt, который должен присутствовать на каждом VPN-клиенте, и закрытый ключ центра сертификации ca.key, этот файл является секретным и не должен покидать пределы сервера.
Затем создадим файл параметров Диффи-Хеллмана, который нужен для формирования уникального сеансового ключа и обеспечения режима совершенной прямой секретности:
Данная операция, в зависимости от производительности вашего VPS, может занять достаточно много времени.
И, наконец, создадим ключевую пару для сервера:
На этом формирование необходимых ключей и сертификатов закончено, перейдем к настройке OpenVPN, прежде всего создадим директорию для хранения ключей. Можно, конечно, использовать ключи прямо из директории easy-rsa, но лучше отделить CA от остальных служб.
Теперь скопируем туда необходимые серверу ключи и сертификаты:
Распакуем и скопируем в директорию /etc/openvpn шаблон серверной конфигурации:
Откроем файл /etc/openvpn/server.conf и внесем в него необходимые изменения, в большинстве случаев вам придется раскомментировать нужны строки или убедиться в их наличии. Опции указаны в порядке их следования в файле:
Данные опции указывают порт, протокол и тип туннеля, менять их не следует, однако в ряде случаев может потребоваться использовать протокол tcp, но в силу более высоких накладных расходов этой ситуации желательно избегать.
Затем зададим топологию сети:
Укажем пути к ключам и сертификатам, допускаются относительные пути, в этом случае корнем будет считаться директория /etc/openvpn:
Зададим диапазон OpenVPN-сети:
И укажем файл для хранения адресов клиентов, которые будут автоматически выдаваться сервером:
Автоматически сконфигурируем клиентов на доступ в интернет через OpenVPN-подключение:
И передадим им собственные DNS-сервера:
Укажем параметры проверки активности:
Сервер будет проверять клиента каждые 10 секунд и при отсутствии ответа через 120 секунд клиент будет считаться неактивным.
Обязательно закомментируйте строку:
Для сценария доступа в интернет дополнительная TLS-аутентификация будет излишней.
В последних версиях OpenVPN включен механизм автоматического согласования протоколов шифрования между клиентом и сервером, по умолчанию будет выбран шифр AES-256-GCM, но так как вычислительные возможности VPS обычно ограничены и большого смысла шифровать канал доступа в интернет сложными шифрами нет, то отключим соглассование и укажем достаточно простой AES-шифр:
Также в новых версиях доступен новый механизм компрессии, для его включения укажем:
Данная опция будет автоматически отправлена на клиент, что облегчает его конфигурирование.
Если у вас есть старые версии клиентов (ниже 2.4), то можно использовать простое lzo-сжатие, для этого закомментируйте вышеприведенные строки и добавьте:
Эту опцию также потребуется добавить в конфигурационные файлы клиентов.
В целях безопасности понизим права запущенного сервера:
После чего проконтролируем наличие опций, отвечающих за правильные права к некоторым ресурсам после их понижения:
Укажем путь к файлам логов:
И укажем его подробность:
Во время отладки можно поднять уровень логов до 5-6.
Настройка брандмауэра и маршрутизации
Основной задачей нашего сервера является обеспечение выхода в интернет и будет разумно обеспечить минимальный набор правил безопасности, во многом они будут повторять те правила, которые мы использовали для наших роутеров на базе Linux.
Создадим файл правил:
и внесем в него следующие строки, обратите внимание на имя сетевого интерфейса вашего VPS, в нашем случае это ens3:
Не забудем сделать файл исполняемым:
Данный файл требуется запускать после создания туннельного интерфейса tun0, поэтому откроем конфигурационный файл сервера OpenVPN /etc/openvpn/server.conf и в его конце добавим опцию:
Перезагрузим сервер и убедимся, что OpenVPN сервер автоматически запустился и создал туннельный интерфейс, это можно сделать командой:
Также проверим применение правил брандмауэра:
Следующий шаг касается только виртуальных машин в облаке Oracle Cloud, вам потребуется дополнительно разрешить входящий трафик на порт OpenVPN. Для этого перейдите в Сети » Виртуальные облачные сети » VirtualCloudNetwork-20191008-0144 » Сведения о списках безопасности, где вместо VirtualCloudNetwork-20191008-0144 будет имя вашей виртуальной сети. Затем добавьте новое правило для входящего трафика:
Настройка клиентов OpenVPN
Настройка клиента начинается на сервере с получения ключей и сертификатов клиента, для этого перейдем в директорию центра сертификации и загрузим переменные:
Затем создадим ключевую пару клиента командой:
Помните, что закрытый ключ клиента client.key является секретным и следует избегать его передачи по открытым каналам связи.
Также не будет лишним сразу скопировать шаблон клиентской конфигурации:
После чего скопируйте все эти файлы на клиент и установите на нем OpenVPN, в Windows системах советуем изменить путь установки OpenVPN на более короткий и без пробелов, скажем, C:\OpenVPN.
Затем откроем файл client.ovpn, который в Windows системах должен быть расположен в C:\OpenVPN\config, а в Linux в /etc/openvpn, и внесем в него следующие изменения:
Данные опции задают клиентский режим работы, тип туннеля и используемый протокол UDP.
Затем укажем адрес сервера:
Следующая опция предписывает клиенту постоянно разрешать имя OpenVPN-сервера, имеет смысл если мы указываем сервер по FQDN-имени, а не IP-адресу.
Для Linux систем обязательно укажите:
В Windows данные опции следует обязательно закомментировать.
Проконтролируем наличие следующих опций:
Укажем пути к ключам и сертификатам, для Linux систем подразумеваем их нахождение в /etc/openvpn/keys:
Для Windows систем предположим их нахождение в C:\OpenVPN\keys:
Также обязательно закомментируем опцию:
Включим защиту от атак типа «человек посередине»:
И укажем используемый шифр, он должен совпадать с указанным на сервере:
Остальные опции можно оставить без изменений. Сохраним файл и запустим OpenVPN-клиент.
Убедиться, что вы выходите в интернет через VPN-канал можно при помощи любого сервиса, показывающего ваш IP-адрес, например, 2ip.ru:
Обращаем внимание на национальную принадлежность адреса, в данном случае мы выходим в интернет из Штатов.
Самое время провести замер скорости доступа, мы будем использовать для этого популярный сервис SpeedTest. Первый замер без VPN:
Второй через OpenVPN-канал:
Напоследок затронем еще один момент. Мы настроили сервер таким образом, что он автоматически конфигурирует клиента на доступ в интернет через OpenVPN-подключение, но бывают случаи, когда это не нужно. Допустим вы хотите пустить через VPN только некоторые ресурсы, а остальной доступ должен осуществляться через локального провайдера. В таком случае добавьте в конфигурационный файл клиента опцию:
После чего клиент будет игнорировать передаваемые с сервера опции маршрутизации и DHCP-опции, такие как DNS-сервера и т.п.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Доступ повышенной проходимости.
Не секрет, что своевременный доступ к информации, в том числе хранящейся внутри корпоративной сети компании, может оказаться решающим фактором успешной работы сотрудников. Речь о виртуальных частных сетях (VPN). Иногда предоставить доступ оказывается не так-то просто.
Доступ всегда и везде.
Обеспечивая удалённый доступ во внутреннюю сеть компании приходится учитывать множество факторов. Среди которых встречается и невозможность установления соединения между клиентом и серверном. Причина может быть проста – системные администраторы гостевой сети, из которой сотрудник фирмы пытается произвести подключение, закрыли возможность всех исходящих соединений, а доступ к веб ресурсам осуществляется через «прозрачный» прокси-сервер. В такой ситуации установить VPN соединение используя стандартные решения типа pptp и IPsec попросту не возможно.
Второй большой неприятностью для любого мобильного пользователя может оказаться банальная потеря(или кража) ноутбука. Излишне объяснять, чем обернётся для компании доступ чужого человека в корпоративную сеть, если нашедшему ноутбук вздумается воспользоваться этой возможностью. Разумеется, мобильные пользователи обязаны (как правило на уровне корпоративного стандарта) не ставить опцию хранения пароля на учётную запись доступа VPN, но… вы много таких пользователей видели? Мне пока не довелось ни одного. Поэтому предпочтительно ввести дополнительные средства безопасности доступа к внутренней сети компании. Другими словами, использовать двухфакторную авторизацию пользователей – программным и аппаратным способом. Речь идёт о ключах eToken, которые могут использоваться для безопасного хранения сертификатов для шифрования и дешифрования данных или авторизации в различных системах.
И последнее (по счёту, но не по важности), что хотелось бы упомянуть – возможность получения доступа не только к файлам на серверах компании, но и к другим ресурсам. Например, к почтовому серверу (во многих компаниях использование внешних соединений по pop3, imap и smtp протоколам запрещено). Проблема может заключаться в том, что почтовый сервер находится, например, вне локальной сети компании. Далее, мы рассмотрим комплексное решение всех обозначенных проблем.
Как мы будем решать задачу.
Мы воспользуемся следующими программными и аппаратными средствами:
• OpenVPN, работающим под Linux, в качестве поставщика защищённого частного канала связи;
• htc и hts программами для организации http тунеля через прокси сервера;
• eToken PRO от компании Alladin.
Вы можете использовать аналогичные ключи любых других производителей, ключ этой компании просто оказался у меня под рукой.
Итак, рассмотрим каждый пункт отдельно.
OpenVPN.
Система OpenVPN [1] выбрана для реализации решения не случайно. Это программное обеспечение весьма активно обновляется разработчиками. OpenVPN позволяет реализовать практически любые задачи по организации VPN каналов.
Среди достоинств системы:
• поддержка практически всех возможных операционных систем — Linux, Windows версий 2000/XP и выше, OpenBSD, FreeBSD, NetBSD, Mac OS X, Solaris;
• возможность использовать все доступные OpenSSL методы шифрования, аутентификации и сертификатов для защиты вашего частного канала;
• возможность создавать целые фермы серверов с балансировкой нагрузки тысяч входящих VPN соединений;
• использование статического ключа для шифрования или систему открытых ключей;
• возможность создавать безопасное подключение типа «мост» (ethernet bridges);
• возможность использования как udp, так и tcp для VPN канала.
И это далеко не полное перечисление функционала OpenVPN. Система постоянно дорабатывается, количество возможностей увеличивается.
Туннель http с использованием htc и hts.
Это маленькие программки одна из которых запускается на сервере, а другая соответственно на клиенте. Они не нуждаются в особых настройках и запускаются простой командной строкой. Ниже мы рассмотрим их более подробно.
eToken ключ.
Для наших целей подойдёт любой аппаратный ключ, предназначенный для безопасного хранения цифровых сертификатов. eToken PRO представляет собой защищенное устройство, предназначенное для строгой аутентификации, безопасного хранения секретных данных, выполнения криптографических вычислений и работы с асимметричными ключами и цифровыми сертификатами. USB-ключ архитектурно реализован как USB карт-ридер с встроенной в него микросхемой (чипом) смарт-карты. Ключ выполнен в виде брелка и напрямую подключается к USB порту компьютера, при этом не требует для своей работы каких-либо дополнительных устройств.
Подобных аппаратных средств на рынке представлено огромное множество и каждый может выбрать наиболее оптимальное для своих целей устройство. Приятная особенность ключей состоит в том, что вы не обязаны использовать их для решения только одной задачи. Один и тот же ключ может позволять производить авторизацию для доступа по Wi-Fi в сеть, для установления VPN соединения и для шифрования данных на жёстком диске.
Вам потребуется только сам ключ и свободно распространяющаяся утилита для работы с ним.
Итак, перейдём к решению поставленной задачи.
Установка OpenVPN сервера.
Воспользуемся Gentoo Linux для установки системы OpenVPN. Но прежде, чем мы приступим к установке, убедимся, что ядро Linux содержит все необходимые модули. Для этого зайдём в конфигуратор нашего ядра и обратим внимание на запись, относящуюся к TUN/TAP драйверам.
Если поддержка установлена, то всё в порядке и можно продолжать. Если нет –установите необходимое значение и перекомпилируйте ядро вашей системы.
Если вы не планируете в дальнейшем использовать аппаратные ключи для двухфакторной аутентификации, то установка самой системы OpenVPN крайне проста и выполняется одной командой.
С текущей версией ebuild’а система установит вам OpenVPN версии 2.0.6 Для использования eToken придётся пройти по дереву портов и принудительно установить более новую версию (на данный момент 2.1_beta14).
# echo net-misc/openvpn >> /etc/portage/package.keywords
# USE=«ssl example» emerge openvpn
Кроме того, может потребоваться установка необходимых дополнительных пакетов. Поэтому я рекомендую на время установки системы просто раскомментировать в вашем /etc/make.conf опцию ACCEPT_KEYWORDS нужной архитектуры (в моём случае это «
x86»), позволив системе установить всё необходимое.
Опция SSL необходима для поддержки OpenSSL, а examples установит примеры конфигурационных файлов OpenVPN. В противном случае, никаких примеров не будет и файлы настроек прийдётся писать, что называется, с чистого листа.
Создание ключей сервера и клиентов.
После того, как скомпилируется система потребуется (для удобства) скопировать примеры конфигурационных файлов в /etc/openvpn и туда же скопировать скрипты, для формирования ключей и сертификатов.
И то, и другое находится в директории /usr/share/openvpn. В поддиректории easy-rsa содержатся скрипты на все случаи жизни, позволяющие создавать:
корневой сертификат (build-ca);
ключ и сертификат сервера (build-key-server);
простые ключи для клиентов (build-key);
ключи для клиентов, защищённые паролем (build-key-pass);
ключи PKCS для необходимой нам возможности использовать eToken (build-key-pkcs12).
Первоначально создадим все необходимые сертификаты и ключи для сервера.
Последняя команда создаёт PKCS12 ключи для пользователя. Где client1, это пример имени пользователя. Команда должна быть выполнена для каждого предполагаемого клиента. Обратите внимание, что при создании ключа вы можете защитить его дополнительно паролем.
Настройка OpenVPN.
Конфигурационный файл OpenVPN (называющийся по-умолчанию server.conf) снабжён весьма подробными комментариями и позволяет без проблем выставить все необходимые настройки практически без использования какой-либо дополнительной документации.
Сначала укажем по какому адресу и на каком порту будет работать наш сервер:
local Х.Х.Х.Х
port 443
Выбор порта не случаен почему, я поясню позже когда будем настраивать клиентскую и серверную часть http тунеля.
Второе, что надо выбрать — по tcp или udp будет работать наш VPN. Для этого есть соответствующая опция:
proto tcp
или
proto udp
Так как мы собираемся сделать возможным доступ через веб прокси сервер гостевой системы, то выберем proto tcp.
Далее, выберите тип сетевого устройства, которое будет использоваться.
dev tun0 – в случае организации обычного VPN, или
dev tap0 – если вы хотите использовать подключение типа «мост».
Используя второй вариант помните о необходимости достаточного пула свободных сетевых адресов в вашей локальной сети, которые будут время от времени заниматься удалёнными пользователями при подключении по VPN.
В секции описания ключей напишем полный путь до нашего ключа:
pkcs12 /etc/openvpn/easy-rsa/keys/server.p12
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
Обратите внимание, что одновременно может использоваться только либо ключ pkcs12, либо «стандартные» ca, cert и key. Если будут выставлены пересекающиеся опции, система откажется запускаться.
Если вы решили использовать обычный VPN, укажите адресное пространство, в котором он будет работать и из которого будет назначать их клиентам.
server 192.168.4.0 255.255.255.0
Если вы собираетесь использовать подключение типа «мост», то потребуется другая опция (параметр server необходимо закомментировать, так как сервер может единовременно работать только в одном качестве):
server-bridge 192.168.1.73 255.255.255.0 192.168.1.61 192.168.1.63
• первый и второй параметры — адрес и маска локальной сетевой карты сервера;
• третий и четвёртый параметры – пул адресов для выдачи внешним клиентам.
Опция, которую мы пропустили
содержит имя файла, в котором будут храниться соответствия клиентов (по именам их ключей) и их внутренним адресам, которые им выдаёт система OpenVPN.
Следующие весьма важные опции указывают, какие адресные пространства будут доступны для клиентов и при подключении автоматически добавятся в таблицу маршрутизации.
push «route 192.168.1.0 255.255.255.0»
push «route Х.Х.Х.Х 255.255.255.255»
Первая опция добавляет возможность использовать нашу локальную сеть, а вторая добавляет один внешний адрес, на котором находится наш почтовый сервер, куда клиенты так же должны иметь доступ при любых обстоятельствах.
Большинство опций, которые следуют дальше необходимы для реализации возможностей, выходящих за рамки данного материала.
Опции
push «dhcp-option DNS 192.168.1.1»
client-to-client
Указывают какой DNS использовать клиентам для преобразования имён в ip адреса внутри нашей локальной сети, а так же позволять ли клиентам VPN взаимодействовать между собой. Это может быть полезно, если есть необходимость обмена файлами между двумя пользователями.
Если вам по какой-то причине необходимо позволить двум независимым клиентам VPN использовать одновременно идентичные сертификаты — раскомментируйте опцию duplicate-cn.
Последнее, на что сейчас стоит обратить внимание – это название файла и путь к нему, куда будет писать журнальный файл OpenVPN, а так же на количество допустимых пользователей системы одновременно.
Настройка шлюза локальной сети.
Если ваш сервер OpenVPN не является основным шлюзом локальной сети – потребуется добавить маршрутизацию для VPN подсети. Так как в моей сети используется Cisco 2621 в качестве основного шлюза, я добавил маршрут на ней следующей командой:
ip route 192.168.4.0 255.255.255.0 192.168.1.73
где первый и второй параметр — адрес и маска виртуальной подсети, а последний — адрес внутреннего интерфейса OpenVPN сервера. (Не забывайте о необходимости включения интерактивного режима на cisco перед вводом команды, а так же записи изменений в память устройства после добавления маршрута.)
Добавление маршрута на Linux шлюзе производится командой:
где первый адрес, это наша виртуальная подсеть, а второй – адрес внутреннего интерфейса сервера OpenVPN.
Если не сделать вышеописанных действий, пакеты из локальной сети не смогут найти «дорогу» до VPN клиента.
Обеспечение доступа к внешнему ресурсу для VPN клиентов.
Для того, чтобы позволить VPN клиентам попадать на наш почтовый сервер, находящийся во внешнем мире относительно нашей рабочей сети, воспользуемся услугами iptables.
Я, создавая правило, не стал указывать допустимые порты соединения по той простой причине, что на внешнем сервере помимо почтового сервиса находятся другие сервисы, работающие на нестандартных портах, которые часто закрыты в гостевых системах для соединения. Вы можете указать, какие порты будут доступны для соединений клиентам VPN.
Кроме того, если правила на вашем файрволе настроены по принципу «всё запретить, нужное разрешить», то не забудьте добавить разрешения на пересылку пакетов с интерфейса tun0.
Запускаем сервер
После того, как были произведены все необходимые настройки, пришло время запустить OpenVPN сервер и посмотреть, что будет в журнальном файле. Обратите внимание, что по-умолчанию скрипт /etc/init.d/openvpn настроен на работу с конфигурационным файлом /etc/openvpn/openvpn.conf, а вовсе не server.conf, который идёт в примерах. Итак, запускаем наш сервер:
В журнальном файле вы должны увидеть нечто вроде:
Так же стоит обратить внимание на вывод команды ifconfig, который должен показать, что в системе появилось новое сетевое устройство tun0.
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.4.1 P-t-P:192.168.4.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Если устройство не появилось, то внимательно просмотрите журнал и файл конфигурации.
Не забудьте добавить сервис OpenVPN в список автоматически запускаемых, а так же сохранить новые правила iptables в вашем списке.
Установка и настройка клиента OpenVPN.
Теперь, когда первая половина настройки нашей системы завершена, самое время приступить к установке клиентской части программы. Я рассмотрю клиентов для Linux и Windows систем.
Установка Linux VPN клиента.
Клиент на Linux системе может потребоваться вот в каком случае. Допустим, у вас есть удалённые интранет сервера, ресурсы которых вы хотели бы использовать в своей локальной сети. Нет ничего проще! Мы просто подключаем эти системы к нашей VPN и пользуемся. Особенно это может оказаться полезным, если сервер является локальным для какой-нибудь удалённой сети.
Как и в случае с настройкой серверной системы убедитесь в наличии необходимых модулей в ядре.
В Linux клиентская часть от серверной отличается только конфигурационным файлом. Этот файл значительно короче и так же снабжён весьма подробными комментариями.
Первые же параметры указывают сервису OpenVPN, что в системе он является клиентом. Какое сетевое устройство и протокол используются, а так же какой ip адрес у сервера и какой порт используется сервисом OpenVPN.
client
dev tun
proto tcp
remote openvpn.domain.ru 443
Скопируем на клиентскую систему необходимые для работы ключи и сертификаты:
ca.crt, client1.crt, client1.key
и укажем их в конфигурационном файле
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/client1.crt
key /etc/openvpn/easy-rsa/keys/client1.key
На этом настройка нашей клиентской системы завершена и мы можем её использовать. Запускать можно просто переименовав файл из client.conf в openvpn.conf или же командной сторокой
Первый раз я рекомендовал бы запустить из командной строки. Так как протокол будет выводиться непосредственно на экран, это поможет убедиться, что всё нормально.
Если всё прошло нормально, то в конце вывода вы увидите что-то вроде:
Не забудьте добавить сервис в список автоматически запускаемых.
Установка Windows OpenVPN клиента.
OpenVPN в Windows системе обладает графическим интерфейсом (GUI), что значительно упрощает работу с ним для пользователей. По адресу [2] всегда можно найти свежую версию программы. Рекомендую хотя бы первый раз скачать полный инсталяционный пакет (на данный момент это openvpn-2.0.7-gui-1.0.3-install.exe), так как в нём содержатся драйвера для TUN/TAP интерфейсов. В последствии, можно скачивать обновления только самой программы. (Application only по ссылке.)
Среди достоинств и удобств клиента можно выделить:
• отображение иконки программы в системном трее;
• свертывание окна журнала соединения сразу после установления сессии;
• просмотр журнал соединения (вызов из контектстного меню);
• изменение настроек конфигурационного файла (вызов из контекстного меню);
• использование OpenVPN в качестве системного сервиса;
• окно ввода пароля на цифровой сертификат для аутентификации на сервере;
• дополнительная защита программы на операцию соединения (свой собственный пароль);
• изменение пароля на защищённый ключ (в том числе PKCS # 12);
• настройка используемого прокси сервера;
• использование настроек прокси сервера из опций Internet Explorer;
• выполнение скрипта (bat) перед и/или после соединения с сервером OpenVPN;
• индикация статуса соединения в системном трее.
Помните, что в версиях Windows младше 2000/XP OpenVPN клиент работать не будет. Но думаю в наше время такие версии операционных встречаются редко.
После установки клиента в меню программ появляется пункт OpenVPN с богатым выбором:
• ссылка на папку с конфигурационными файлами;
• на папку с примерами;
• программа формирования статического ключа;
• программа создания сертификата и формирования запроса на его подпись;
• собственно программа клиент OpenVPN;
• ссылки на различную документацию.
Конфигурационный файл, как и все предыдущие, снабжен комментариями и ничем не отличается от файла для клиента Linux системы. Разница только в расширении файла. Если в Linux оно было «conf», то в Windows – opvpn. Поэтому описывать настройки смысла не имеет, можно смело заимствовать их из предыдущего примера.
Остановимся только на описании ключей и сертификатов. Как вы помните, мы решили использовать двухфакторную аутентификацию мобильных пользователей. Для этого скопируем на клиентскую систему с серверной только два файла – ca.crt и сертификат соответствующий (по имени) данному клиенту с раширением p12.
Теперь нам необходимо импортировать наш сертификат в имеющийся в нашем расположении Alladin eToken. Для этого скачаем (если ещё не установлено) программное обеспечение по работе с ключом RTE по ссылке [3].
После установки полученной программы, у нас в меню программ появится папка eToken с единственной ссылкой на программу eToken properties.

Рис 1. Программа для работы с ключом.
Вставив наш ключ в USB порт, мы увидим его в окне программы. Перейдя на иконку ключа и выбрав «Дополнительно», введем PIN код для доступа к ключу. Это даст возможность импортировать сертификат.

Рис 2. Окно импорта сертификата.
Если при создании сертификата на сервере был использован пароль (сразу после его подписывания), то здесь нас попросят ввести его еще раз и можете распоряжаться данным сертификатом.
Теперь мы можем убедиться, что сертификат известен нашей Windows системе, а заодно узнать, как к нему будет обращаться клиент OpenVPN. Для этого проследуем в «Панель управления», где выберем «Свойства обозревателя». В этом окне нас интересует только вкладка «Содержание» и кнопка «Сертификаты».

Рис 3. Список доступных сертификатов.
Выделим наш сертфикат и кликнем на «Просмотр», в открывшемся окне выбирем «Состав». Здесь нас интересует поле «Отпечаток», которое скопируем в буфер обмена.
Полученную информацию об отпечатке сертификата внесём в конфигурационный файл нашего OpenVPN клиента.
cryptoapicert «THUMB:ed 38 ac 63 …»
ca ca.crt
Теперь, когда первоначальное конфигурирование клиента завершено пришло время опробовать его в действии. Для этого достаточно в контекстном меню выбрать коннект. Если обращение к eToken прошло корректно, появится окно ввода PIN кода для доступа к ключу.

Рис 4, 5. Удача и поражение.
В случае ошибки, убедитесь, что ключ вставлен в USB порт, а предыдущие шаги выполнены верно.
После подтверждения доступа к ключу в том же окне ввода будет отображаться журнал соединения с сервером. Окно автоматически скроется, как только соединение будет успешно установлено. Вернуться к журналу всегда можно, выбрав в контекстном меню «View log». Осталось попробовать выполнить ping до какого-нибудь из компьютеров удалённой локальной сети и убедиться, что всё работает правильно.
Теперь, когда всё уже настроено и работает пора вернуться к ситуации, когда доступ во внешний мир ограничен веб ресурсами. А для его предоставления используется прозрачное проксирование.
hts и htc.
Как уже было сказано выше, эти две программки легко устанавливаются и ещё проще используются. Суть их работы состоит в том, что первая «слушает» указанный ей порт (в нашем случае это будет 80, доступ к которому есть везде) и в случае инициации соединения создаёт http тунель.
Вторая же наоборот слушает 443 порт и инициирует с удалённой htc соединение через 80 порт.
Установка htc в Gentoo Linux на сервере выполняется простой командой:
Для Windows систем скачать httptunnel можно с страницы проекта по ссылке [4].
Использовать httptunnel весьма и весьма просто. Для запуска на сервере достаточно команды:
Где указан ip адрес и порт, на которые должен быть установлен туннель в случае обращение на порт 80. Команда выполняется без какого-либо вывода на экран. О результатах её выполнения можно узнать только из системного журнала. (Например, /var/log/messages.)
Jun 18 01:47:28 admin hts[27389]: hts (httptunnel) 3.3 started with arguments:
Jun 18 01:47:28 admin hts[27389]: me = hts
Jun 18 01:47:28 admin hts[27389]: device = (null)
Jun 18 01:47:28 admin hts[27389]: port = 80
Jun 18 01:47:28 admin hts[27389]: forward_port = 443
Jun 18 01:47:28 admin hts[27389]: forward_host = Х.Х.Х.Х
Jun 18 01:47:28 admin hts[27389]: content_length = 102400
Jun 18 01:47:28 admin hts[27389]: strict_content_length = 0
Jun 18 01:47:28 admin hts[27389]: use_std = 0
Jun 18 01:47:28 admin hts[27389]: debug_level = 0
Jun 18 01:47:28 admin hts[27389]: pid_filename = (null)
Команда netstat подтверждает нам, что hts действительно работает и «слушает» 80 порт.
Осталось сделать windows скрипт (bat) для запуска клиентской части httptunnel. Этот файл мы создадим в папке c:\program files\openvpn\config и назовём hts_pre.bat. А в сам файл добавим только одну строку:
Где:
-F 443 указывает порт, являющийся итоговым получаетелем.
-P 192.168.1.1:3128 ip адрес и порт прокси сервера гостевой системы.
X.X.X.X:80 собственно адрес серверной части httptunnel.
Выбор места создания и имени файла для скрипта не случаен. Как было уже сказано выше, OpenVPN для Windows умеет выполнять bat файлы до соединения, сразу после соединения и после завершения сессии. Для этого достаточно выполнить всего два условия. Создать bat файл в директории конфигурационных файлов OpenVPN и назвать файл по следующей схеме:
• Назвать файл xxx_pre.bat для выполнения скрипта непосредственно перед соединением.
• Назвать xxx_up.bat для выполнения сразу после установления соединения.
• Назвать ххх_down.bat для завершающего сессию скрипта.
Нас интересует первый тип скрипта. К слову сказать, выполнив команду из нашего bat файла, система не закроет окно и это прийдётся сделать вручную. Это не остановит наш туннель, но избавит от лишнего открытого окна на рабочем столе. Предполагаю, есть средство, позволяющее избежать этого «вечно открытого» окна, но сходу я его не обнаружил (может быть потому что не силён в написании скриптов для Windows). Если вам способ известен – тем лучше.
Как вы заметили, для установления тунеля нам потребовалось знать ip адрес и порт, на которых работает прокси сервер гостевой системы. Эта информация, конечно, не написана крупным шрифтом при входе в здание, но тем не менее (обычно) легко узнаётся у системного администратора. Случаев, когда сисадмин отказывался сообщать параметры прокси мне (возможно пока) не известны.
Теперь наша система полностью настроена и готова работать в практически любых условиях. Этакий максимально защищённый «вседорожник» на просторах интернета!
Насколько мобильным может быть OpenVPN.
Как уже было сказано выше, система OpenVPN позволяет использовать удалённую локальную сеть практически в любых условиях. Но помимо компьютеров (в том числе и ноутбуков), как вам известно, существуют ещё более «мобильные» устройства. Я говорю о коммуникаторах и наладонниках (КПК). В большинстве из них (например, в устройствах на базе Windows Mobile или Symbian) есть либо встроенное средство установления VPN соединения, либо можно установить программное обеспечение стороннего производителя.
Однако, из-за использования в системе OpenVPN TUN/TAP простые средства соединения не подойдут. И найти их для устройств данного класса, увы, пока не возможно. Изыскания в интернете дали только информацию о ведущихся разработках реализации возможности использования OpenVPN. (Сейчас ссылка на информацию об этом есть уже и на главной странице проекта. [5])
Правда, есть одно исключение. Если вы обладатель КПК Sharp Zaurus и давно собирались установить на него Linux, то вполне сможете использовать ваш VPN. Драйвера и необходимый софт для этого можно найти на просторах интернета. Он используется многими людьми. Необходимые файлы можно взять, например, здесь [6].
Заключительное слово.
Устанавливая и настраивая клиент OpenVPN помните, что средства встроенной защиты уже самой Windows программы никто не отменял и ввод ещё одного пароля не будет лишним, если того требует строгая политика информационной безопасности вашей компании. Использование же сертификатов без eToken, как мы помним, так же нам доступно. Например, на домашних компьютерах аппаратные ключи использовать совершенно не обязательно. А вот мобильным пользователям ПК eToken явно не будет лишним. Особенно, если вспомнить, что этот же ключ можно использовать для авторизации в самой Windows системе (и не только).
(с) akeeperКоршунов Алексей.
Впервые опубликовано в журнале «Системный администратор.





