Дополнительные материалы по Freebsd
Онлайн курс «DevOps практики и инструменты»
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите программу детальнее по .
Рекомендую полезные материалы по Freebsd: |
Описание установки Freebsd 11 на одиночный диск, либо на софтовый raid1, сделанный средствами zfs, которые поддерживает стандартный установщик. Базовая настройка Freebsd, которую можно выполнить после установки сервера общего назначения. Представлены некоторые рекомендации по повышению удобства пользования и безопасности. Описание и нюансы обновления системы Freebsd с помощью утилиты freebsd-update. Показано пошагово на конкретном примере обновления. Настройка Freebsd шлюза для обеспечения выхода в интернет. Используется ipfw и ядерный нат, dnsmasq в качестве dhcp и dns сервера. Мониторинг сетевой активности с помощью iftop. Подробная настройка на Freebsd прокси сервера squid + sams2 — панели управления для удобного администрирования. Настройка максимально быстрого web сервера на базе Freebsd и nginx + php-fpm. Существенный прирост производительности по сравнению с классическим apache. Настройка web сервера на Freebsd в связке с apache, nginx, php и mysql. Пошаговая установка и настройка каждого компонента. |
Несколько конфигурационных файлов
Позволит держать несколько конфигураций для подключения к различным VPN-серверам. Между последними можно переключаться из клиентской программы.
Для Windows:
В каталоге config создаем для каждого сервера свою папку и помещаем в нее рабочие файлы (файл конфигурации, сертификаты и так далее). В каждой папке называем конфигурационные файлы ovpn своими именами (даже если файлы будут находиться в разных папках, но с одинаковыми именами, клиент OpenVPN будет воспринимать их как один конфиг).
Пример каталога config:
Пример файлов в одном из каталогов:
Теперь при подключении клиентом к можно выбрать конкретный VPN-сервер:
Для Linux:
Также как для Windows, создаем для каждого сервера свой каталог, куда скопируем рабочие файлы:
mkdir /etc/openvpn/server1
А в каталоге /etc/openvpn создаем для каждого подключения свой конфиг:
vi /etc/openvpn/client1.conf
* в конфигурационном файле все пути до файлов должны вести в соответствующий каталог (в нашем примере, /etc/openvpn/server1).
Запускаем OpenVPN:
openvpn —config /etc/openvpn/server1/client.conf
Для автоматического запуска мы уже ранее применяли команду:
systemctl enable openvpn@client
… где @client — указатель на использование конфигурационного файла client внутри папки openvpn (/etc/openvpn). Таким образом, если мы создали 2 файла client1.conf и client2.conf, команды для разрешения автозапуска бelen такие:
systemctl enable openvpn@client1
systemctl enable openvpn@client2
Introduction
It is important in these steps to understand how the web services work and where and how they can be reached. Therefore there is going to be some explanation first before we get to the troubleshooting parts. The OpenVPN Access Server comes with a web interface that exists of 2 main components:
The Admin UI web interface is the web interface that lets the administrator of the Access Server see and change the configuration of the Access Server. You can for example use it to change the authentication system it is using, and if you’re using the local authentication system you can add new users through the web interface, set passwords for them, define access rules to configure which IP address(es) these users have access to through the VPN server, and change which ports the Access Server listens to, and so on. This is your first stop when it comes to setting up and configuring your Access Server. For advanced settings not configured in the Admin UI, or for complete control of the Access Server without ever using the web interface, we also have command line tools available.
The Client UI web interface is the web interface that lets users that wish to make a VPN connection to the Access Server to see and download their unique connection profiles and software required to make a connection. The web interface will offer the option to download and install the OpenVPN Connect Client for Windows or the OpenVPN Connect Client for macOS, and also offers information for other platforms on how to make a connection. It also offers connection profiles like a user-locked profile or an auto-login type profile that can be used with compatible OpenVPN client software. While the OpenVPN Connect Client for Windows and macOS is also available on this website for download separately, it is generally advisable to download and install the version your Access Server offers, as it then comes preconfigured for a connection to your server, whereas our generic version is completely blank and without any configuration.
How to access the web interface
In order to make a connection to the web interface you obviously need a suitable browser like Google Chrome, Opera, Firefox, Internet Explorer, Microsoft Edge, etcetera. Really old browsers will generally have problems accessing an HTTPS secured website, for example if you’re still on Windows XP you will likely need to use a more modern system to access it. By default the Access Server web interface is reachable on the address of your server. If your server has only an IP address, then use that in your browser. For example if your OpenVPN Access Server has the IP address 123.45.67.89 then by default the Access Server should listen on that address. By default the OpenVPN Access Server installs the web interfaces on port TCP 943, and also makes them available at port TCP 443. The reason why this is present on two ports is technically complicated and is explained in a separate section further down on this page.
If your Access Server has IP address 123.45.67.89 then you should be able to open the web interface by pointing your web browser at the addresses mentioned below:
- Admin UI: https://123.45.67.89/admin/
- Admin UI: https://123.45.67.89:943/admin/
- Client UI: https://123.45.67.89/
- Client UI: https://123.45.67.89:943/
If you have already set up your Access Server but have simply forgotten your access codes, see these steps to . However if this is your first time setting up Access Server please read on.
When you first start out it is very likely that your server does not have a DNS name set up yet and that it uses a self-signed certificate. There is no possible way to ensure that a freshly setup Access Server has a properly validated SSL certificate immediately out of the box in all situations. Therefore the server starts out with a self-signed certificate which cannot be automatically validated by your web browser. You will therefore receive warnings that look like the screenshots shown below. You should override the warning or add an exception to continue with accessing your server’s web interface. This is normal in this situation and can be rectified later by setting up a DNS host name that resolves to the public IP address of your Access Server, and installing a valid SSL certificate that corresponds to that DNS host name, and then always using that name to access your server instead of by IP address directly.
The Admin UI web interface is protected with a username and password. The username by default is openvpn (unless you have been given the option to change it, and did change it). But there is no password set on the account by default. An account without password cannot be used to log on, so you will need to set a password first. You can do so on the command line of the Access Server as root user.
Set password for openvpn administrative user:
You can then access the Admin UI web interface and log on with username openvpn installation instructions for your chosen platform and the password you just set. We recommend you read the documentation to finish up configuration properly, and to also check the security recommendations page on how to properly secure your Access Server.The Client UI web interface can be reached with a valid user account that is created on the Access Server in LOCAL authentication mode or in the chosen authentication backend (LDAP, RADIUS, PAM). It can also be reached and use with an administrative user account but we advise against that, and we advise that you create standard unprivileged user accounts for VPN tunnel access instead.
Once you have access to the web interface you can find more information here on how to configure the Access Server using the web interface.
Настройка VPN клиента на компьютере под управлением Windows
19) Копируем в папку C:Program filesOpenVPNconfig
из C:Program filesOpenVPNeasy-rsakeys следующие файлы ca.crt, client.crt, client.key.
из C:Program filesOpenVPNsimple-config client.ovpn
Создадим текстовый файл pass, где укажем логин и пароль от созданного VPN клиента на сервере. В нашем случае это ovpn_user1
20) Откроем файл client.ovpn с помощью блокнота или notepad++ Изменяем следующие строки: #Протокол proto tcp #Адрес и порт сервера remote ваш.ip.адрес.сервера 1194
#Проверяем правильность названия ключей ca ca.crt cert client.crt key client.key
И в самом конце добавим строчку auth-user-pass «C:\Program files\OpenVPN\config\pass.txt» В итоге у нас получатся следующие настройки в этом файле: client dev tun proto tcp remote адрес_сервера 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert user.crt key user.key remote-cert-tls server cipher AES-128-CBC verb 3 auth-user-pass «c:\Program Files\OpenVPN\config\pass.txt»
Остальные настройки закомментированы решеткой «#» или точкой с запятой «;»
21) Сохраняем файл. Если сохранить в папку не получается — сохраняем на рабочий стол, а затем копируем с заменой.
Запускаем OpenVPN и подключаемся.
После подключения можем увидеть, что нам назначен IP из диапазона, который ранее указали на сервере.
Проблемы и ограничения
-
Не у всех поднимается доступ по SSH. Тут, к сожалению, ничего сказать не могу, потому что мне такой кейс отлаживать не приходилось. Рекомендовать могу только на втором этапе выше тщательно проверить, что вставился правильный публичный ключ. Имя пользователя при этом выводится в том же разделе «Доступ к экземпляру».
-
Нужно помнить, что это не просто виртуальная машина, а инстанс в облаке, закрытый сетевыми настройками не только внутри инстанса (чаще всего там уже заточенный iptables), но и снаружи его — в NetworkSecurityGroup, назначенной на виртуальную облачную сеть (VCN) инстанса. Поэтому если нужно открыть какие-то нестандартные порты — это может потребоваться делать в нескольких местах.
-
OpenVPN Access Server без лицензии позволяет не более двух одновременных подключений. Поэтому решение подходит для персонального VPN. Но в целом, конечно, ничто не мешает не ставить его из маркетплейса, а поднять пустой инстанс в Оракле (или не Оракле) и установить OpenVPN (или не OpenVPN) на этот инстанс самостоятельно из консоли. Это уже просто будет другая история.
-
Важный апдейт от @osipov_dv — в сервисе бесплатны только 10 ТБ исходящего трафика в месяц (в случае VPN получается суммирование вашего входящего и исходящего), а потом он будет вам стоить $0.0085/GB. Впрочем, на практике дотянуться до 10 ТБ потребления — это надо очень, очень постараться. По моим логам более 2 ТБ за месяц общего потребления моя семья никогда не осиливала, несмотря на немаленькую домашнюю ферму виртуализации. Но никогда не помешает оценить свои объемы потребления, прежде чем подписываться.
Установка OpenVPN клиента на CentOS/RedHat/Fedora
Недавно я рассказывал в своей статье «Установка openvpn на RedHat/CentOS/Fedora» как установить OpenVPN сервер для CentOS, Fedora или RedHat, а сейчас, в своей новой статье «Установка OpenVPN клиента на CentOS/RedHat/Fedora» я хотел бы рассказать как же установить OpenVPN клиент и подключиться к серверу.
1. Для начала стоит прочитать и установить OpenVPN сервер, вот вам хороший и подробный мануал:Установка openvpn на RedHat/CentOS/Fedora
2. Введите следующую команду из терминала для установки OpenVPN пакета для вашей машины:
# yum install openvpn
Как говорилось в статье о настройке и установке OpenVPN, что нужно скопировать ключи, НЕ ЗАБЫВАЕМ ЭТО СДЕЛАТЬ:
# sudo scp [email protected]:/etc/openvpn/easy-rsa/keys/ca.key /etc/openvpn/
Эти сертификаты тоже необходимо скачать на машину клиента:
# sudo scp [email protected]:/etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/ # sudo scp [email protected]:/etc/openvpn/easy-rsa/keys/client.crt /etc/openvpn/
Качаем ключ для клиента ( мы его генерировали, когда устанавливали сервер с OpenVPN):
# sudo scp [email protected]:/etc/openvpn/easy-rsa/keys/client.key /etc/openvpn/
Тек же скачиваем и сам конфиг с клиентом:
# sudo scp [email protected]:/etc/openvpn/client.key /etc/openvpn/
Проверяем его на ошибки:
# sudo openvpn --config /etc/openvpn/client.conf
Если все хорошо, то он начнет проверять все и выдаст много информации, а если у вас будут ошибки, то читаем в интернете и фиксим. Думаю что их не должно быть, я же все проверял на своей машине =)
После установки OpenVPN, запустите службу и сделайте так чтобы для автоматически она запускалась при каждой перезагрузке вашей ОС:
# service openvpn start # chkconfig openvpn on
Теперь проверьте, tun0 (интерфейс VPN) создается:
# ifconfig
Смотрим что нам выдаст, если все хорошо, то должен появится сетевой интерфейс tun ( у меня это tun0 с таким вот ИП адресом 10.8.0.6, собственно на сервере у меня 10.8.0.1). Чтобы окончательно проверить работу клиент-сервера, то выполните пинг:
# ping 10.8.0.1 PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data. 64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=123 ms 64 bytes from 10.8.0.1: icmp_req=2 ttl=64 time=80.5 ms ........................................................................................
ПРИМЕЧАНИЕ! Не забываем скопировать все нужные файлы на вашу машину ( я описывал что нужно скопировать в статье об установке OpenVPN).
После того как убедитесь что нормально вывелось в ifconfig-е, попробуйте пингануть OpenVPN сервер.
Вот такая простая вышла у меня тема «Установка OpenVPN клиента на CentOS/RedHat/Fedora», если есть вопросы или пожелание по поводу моих статей или моего сайта https://linux-notes.org пишите мне.
Делитесь с родными и друзьями
Чисто технически, вы можете создать множество профилей, как для разных устройств, так и для разных людей. Вдвоем цена для каждого уже будет $2.5, впятером — $1.
Важно, что по каждому профилю может быть только одно одновременное подключение. Так что, как минимум, нужно создавать отдельные профили для разных устройств
UPD
1 мая 2018 начали появляться комментарии, что некоторые российские провайдеры блокируют Digital Ocean. Есть отличная альтернатива — Linode (сравнение).
- Регистрируемся на главной странице.
- После ввода e-mail, логина и пароля (нужно придумать), придет письмо со ссылкой для подтверждения, переходим по ней
- Откроется расширенная форма регистрации, нужно ввести фамилию, имя, адрес, промо код и данные карты
- промокод на $10 или $20 легко ищется в google, 01.05.2018 работал на $20
- карта подойдет любая, нет особых требований как у DigitalOcean
- в самом низу выбираем первоначальное пополнение, минимум $5
- После оправки формы, сразу попадаем на страницу создания сервера, в самом низу выбираем Linode 1024 (стоит те же $5 в месяц), ниже выбираем локацию, для Европейской части России ближе всего Frankfurt, DE
- После создания сервера, выбираем его из списка и нажимаем Deploy an Image
- выбираем дистрибутив, например Fedora 27 или Debian 9
- придумываем, запоминаем и вводим пароль сервера
- жмем Deploy
- Нажимаем кнопку Boot чтобы запустить сервер
- Переключаемся на вкладку Remote Access копируем самый первый Public IP, например
- Запускаем SSHeller, нажимаем Add
- придумываем и вводим Name
- в Host вставляем скопированный IP
- в User вводим
- в Password вводим пароль, придуманный на шаге 5
- Сервер грузится не мгновенно, если быстро ввели параметры доступа к серверу, то придется подождать секунд 30
3: Генерирование ключей и сертификатов
Для создания ключей и сертификатов Easy RSA использует набор сценариев, которые устанавливаются вместе с программой. Чтобы избежать повторной настройки при создании каждого сертификата, вы определить в Easy RSA значения по умолчанию, которые будут использоваться в полях сертификата (включая страну, город и адрес электронной почты).
Для начала создайте каталог для хранения ключей и сертификатов.
По умолчанию переменные сертификатов хранятся в файле vars в каталоге /etc/openvpn/easy-rsa:
Перейдите в конец файла и измените значения, начинающиеся с export KEY_, в них нужно указать ваши данные. Наиболее важными из них являются:
- KEY_CN: введите домен или поддомен, который разрешается на ваш сервер.
- KEY_NAME: введите сюда server. Если вы введете другое имя, вам придется обновлять файлы конфигурации, которые ссылаются на server.key и server.crt.
Также в файле есть другие переменные, которые вы захотите поменять:
- KEY_COUNTRY: введите двухбуквенную аббревиатуру страны проживания.
- KEY_PROVINCE: штат/область/регион.
- KEY_CITY: город.
- KEY_ORG: название вашей организации.
- KEY_EMAIL: электронная почта, которая будет привязана к сертификату.
- KEY_OU: Organizational Unit – название команды и отдела, для которого предназначен сертификат.
Остальные переменные можно просто проигнорировать. После редактирования файл выглядит так:
Сохраните и закройте файл.
Чтобы сгенерировать ключи и сертификаты, перейдите в каталог easy-rsa и запустите source, чтобы использовать новые переменные, заданные в файле vars:
Запустите скрипт Easy RSA clean-all для удаления всех ключей и сертификатов, которые уже есть в папке:
Затем создайте центр сертификации с помощью скрипта build-ca. Вам будет предложено заполнить поля сертификата, но если вы ранее установили параметры в файле vars, все ваши параметры уже будут установлены по умолчанию. Вы можете нажать Enter, чтобы принять значения по умолчанию для каждого параметра:
Этот скрипт сгенерирует файл ca.key. Это закрытый ключ, используемый для подписания сертификатов сервера и клиентов. Если вы потеряете его, вы больше не сможете доверять сертификатам этого ЦС; если злоумышленник сможет получить доступ к этому файлу, он сможет подписывать новые сертификаты и получит доступ к VPN без вашего ведома. По этой причине OpenVPN рекомендует хранить ca.key в расположении оффлайн (его следует активировать только при создании новых сертификатов).
Теперь создайте ключ и сертификат сервера с помощью сценария build-key-server:
Как и при создании CA, вы увидите значения по умолчанию, которые можно принять, просто нажав Ввод. Кроме того, вам будет предложено ввести пароль и опционально название компании. Если вы введете пароль для ключей и сертификатов, его будут запрашивать у клиента при подключении к VPN. Если вы не хотите устанавливать такой пароль, просто оставьте эту строку пустой и нажмите Enter и Y, чтобы зафиксировать изменения.
Теперь нужно сгенерировать ключ Диффи-Хеллмана.
Эта процедура займет несколько минут.
Теперь скопируйте ключи и сертификаты сервера в каталог openvpn:
Каждому клиенту также потребуется сертификат, чтобы сервер OpenVPN мог проверить их подлинность. Эти ключи и сертификаты нужно создать на сервере, а затем скопировать их на клиенты. Рекомендуется использовать индивидуальные ключи и сертификаты для каждого клиента, которого вы собираетесь подключить к VPN.
Скопируйте версированный файл конфигурации OpenSSL, openssl-1.0.0.cnf, в файл openssl.cnf, убрав версию. В противном случае может произойти ошибка: OpenSSL не сможет загрузить конфигурацию, поскольку не сможет обнаружить ее версию:
Делай раз — регистрируемся
Из тонких моментов — да, платежная карта нужна. На ней должен быть минимум 1 евро, который снимется при проверке карты. Но если вы будете пользоваться только always free ресурсами, никаких других денег с вас не снимут. По отзывам, далеко не все карты российских банков работают, я для подобных сервисов обычно использую карты из партнерских программ с Золотой Короной (Кукуруза от Связного, Озон.Кард — десятки их), с ними никаких проблем при регистрации в Оракле не возникало. Та же озоновская карта делается за единицы минут без изменения положения тела в пространстве.
Еще может быть непонятным момент выбора региона — тут, разумеется, вы выбираете, исходя из ваших целей, но я бы рекомендовал рассматривать наиболее географически к вам близкие регионы. Нужно помнить, что для VPN-сервиса задержка передачи пакета от клиента до сервера и назад добавляется к общей задержке, даже если вы пытаетесь подключиться к серверу в соседней с вами комнате. Также имеет смысл учитывать жесткость законодательства по авторским правам в конкретной стране — вдруг у вас торренты через этот канал польются. Вероятность проблем, конечно, невысока, но зачем потенциально усложнять ситуацию. Для себя я выбираю Нидерланды — там и AMS-IX рядом, да и в принципе страна хорошая. Но, повторюсь, вы можете выбрать любой регион из доступных и повлияет это только на задержку.
The Client UI
OpenVPN Access Server provides web services to run both the Admin Web UI and the Client UI. The Client UI provides your users with pre-configured VPN clients, which simplifies the process of connecting to your VPN server.
To access the Client UI, use either the IP address or hostname of your Access Server. For example:
- https://123.456.78.90/
- https://vpn.businessname.com/
The IP address is the external IP address of your server. A custom hostname can be set up using the Admin Web UI and a DNS ‘A’ record. You can follow the steps to set up a custom hostname here: Setting up your OpenVPN Access Server hostname.
This Client UI provides an interface for your users to sign in and retrieve pre-configured downloads of OpenVPN Connect. Each user can download and install OpenVPN Connect with a personalized and bundled user profile configuration, or they can download a configuration profile to import into any VPN client that supports .ovpn.
Как это работает ?
При инициализации плагина в OpenVPN, плагин возвращает масочный список всех функций, которые может обслужить. При наступлении очередной фазы подключения или внутреннего события, OpenVPN вызывает соответствующие функции из плагина. Плагин преобразует переменное окружение и параметры переданные функции в структуру, инициализирует python и передаёт структуру в соответствующую процедуру python модуля. Процедура возвращает плагину один из трёх ответов (0 — Success, 1 — Error, 2 — Deferred). Ответ транформируется и возвращается OpenVPN.
Обратите внимание, что все вызовы модуля являются «stateless», это означает, что процедуры не помнят и не знают, что происходило ранее в других вызовах. Ориентироваться можно только на переменное окружение передаваемое плагину из OpenVPN
Внутри python модуля вы можете реализовать любую логику, подключая нужные библиотеки и ресурсы. Если вы не уверены в скорости выполнения проверок, то используйте «отложенные» подтверждения.
Используя группировку пользователей подключаемых к сервису, через pf_file можно довольно тонко настроить сетевое взаимодействие между пользователями и другими ресурсами. В свою очередь подключив плагин на мониторинг, всегда можно будет через management интерфейс OpenVPN управлять сессиями клиентов.
Во время тестирования проекта был разработан механизм генерации паролей, аналогичный jwt токенам, но имеющим меньший размер.
Суть проста. Токен содержит в себе идентификатор клиента и срок окончания доступа. Для подписи токена используется HMAC_SHA1 с закрытым ключом. После подписи токена, текстовое содержимое ксорится подписью и конвертится в base64. Таким образом получается «запечатывание» токена. «Запечатанный» токен используется в качестве пароля пользователя. При несанкционированном изменении блока с данными, поломается xor, если поломается xor, значит поломается проверка подписи. Без закрытого ключа подпись изменить не получится.
Если вы не хотите руками контролировать время действия пароля, то генерируете такой токен, и проверяете его на валидность внутри плагина, не вызывая внешние сервисы. Данная схема очень удобна для сессионной генерации паролей на определенное время. При этом вы можете во внешнюю систему управления передать содержимое токена и она сама настроится на отключение пользователя по окончании действия токена.
Надеюсь информация в данной статье была вам полезна.
Спасибо за потраченное на её прочтение время.
Если есть вопросы, попробую ответить на что смогу.
Создание сертификатов
Новая версия OpenVPN позволяет создавать сертификаты на основе Easy RSA 3, старая работает на базе 2-й версии. Наши действия будут различаться в зависимости от данной версии. Рассмотрим процесс формирования сертификата с использованием как RSA3, так и RSA2.
а) Создание сертификатов с RSA 3
1. Переходим в папку установки OpenVPN (по умолчанию, C:\Program Files\OpenVPN) и создаем каталог ssl.
2. После переходим в папку C:\Program Files\OpenVPN\easy-rsa, переименовываем файл vars.bat.example в vars.bat, открываем его на редактирование и правим одну строку:
set_var EASYRSA_TEMP_DIR «$EASYRSA_PKI/temp»
* мы снимаем комментарий и добавляем temp в конце $EASYRSA_PKI. Если это не сделать, то при попытке сформировать корневого сертификата мы получим ошибку Failed create CA private key.
3. Запускаем командную строку от имени администратора:
4. Переходим в каталог easy-rsa:
cd %ProgramFiles%\OpenVPN\easy-rsa
5. Запускаем команду:
EasyRSA-Start.bat
Мы окажемся в среде EasyRSA Shell.
6. Инициализируем PKI:
./easyrsa init-pki
Мы должны увидеть:
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: C:/Program Files/OpenVPN/easy-rsa/pki
7. Генерируем корневой сертификат (CA):
./easyrsa build-ca
… после ввода Enter обязательно задаем пароль дважды. На запрос ввести Common Name можно просто нажать ввод или написать свое имя:
Common Name (eg: your user, host, or server name) :
8. Создаем ключ Диффи-Хеллмана:
./easyrsa gen-dh
9. Для создания сертификата сервера необходимо сначала создать файл запроса:
./easyrsa gen-req cert nopass
* на запрос ввода Common Name просто вводим Enter.
… и на его основе — сам сертификат:
./easyrsa sign-req server cert
После ввода команды подтверждаем правильность данных, введя yes:
Confirm request details: yes
… и вводим пароль, который указывали при создании корневого сертификата.
10. Для создания ta ключа используем команду:
openvpn —genkey —secret pki/ta.key
11. Сертификаты сервера готовы и находятся в каталоге pki. Переносим в C:\Program Files\OpenVPN\ssl следующие файлы:
- ca.crt
- issued/cert.crt
- private/cert.key
- dh.pem
- ta.key
б) Создание сертификатов с RSA 2
1. Переходим в папку установки OpenVPN (по умолчанию, C:\Program Files\OpenVPN) и создаем каталог ssl.
2. После переходим в папку C:\Program Files\OpenVPN\easy-rsa, создаем файл vars.bat, открываем его на редактирование и приводим к следующему виду:
* в каталоге easy-rsa уже есть файл vars.bat.sample — можно переименовать и использовать его.
** значение HOME не меняем, если оставили путь установки программы по умолчанию; KEY_DIR — каталог, куда будут генерироваться сертификаты; KEY_CONFIG может быть разным — его лучше посмотреть в файле vars.bat.sample или по названию соответствующего файла в папке easy-rsa; KEY_NAME желательно, чтобы соответствовал полному имени VPN-сервера; остальные опции можно заполнить произвольно.
3. Запускаем командную строку от имени администратора:
4. Переходим в каталог easy-rsa:
cd %ProgramFiles%\OpenVPN\easy-rsa
4. Запускаем vars.bat:
vars.bat
5. Чистим каталоги от устаревшей информации:
clean-all.bat
* данная команда выполняется один раз, когда на сервере нет информации по ранее созданным сертификатам.
6. Снова запускаем vars.bat (после clean переопределяются некоторые переменные):
vars.bat
Переходим к созданию ключей.
7. Генерируем последовательность центра сертификации:
build-ca.bat
На все запросы нажимаем Enter.
8. Запускаем build-dh.bat (сертификат с использованием алгоритма Диффи-Хеллмана):
openssl dhparam -out keys\dh.pem 2048
* команда может выполняться долго — это нормально.
9. Генерируем сертификат для сервера:
build-key-server.bat cert
* где cert — имя сертификата; на все запросы нажимаем Enter. В конце подтверждаем два раза корректность информации вводом y.
10. После переносим из папки C:\Program Files\OpenVPN\easy-rsa\keys в C:\Program Files\OpenVPN\ssl следующие файлы:
- ca.crt
- cert.crt
- cert.key
- dh.pem
Установка и настройка webmin
Ставим webmin:
# cd /usr/ports/sysutils/webmin # make install clean
Добавляем webmin в автозагрузку:
# echo 'webmin_enable="YES"' >> /etc/rc.conf
После установки запускаем настройку. Я сразу же меняю стандартный порт webmin на что-то экзотическое. Это пусть и не сильно, но повышает безопасность сервера.
# /usr/local/lib/webmin/setup.sh
Я все настройки оставляю по-умолчанию, только, как уже сказал, меняю порт, например на 11111 и в конце на вопрос:
Use SSL (y/n): y
отвечаю положительно.
После настройки, запускаем webmin:
# /usr/local/etc/rc.d/webmin start
Чтобы зайти в панель управления, вводим в браузере адрес:
https://ip-adress:11111/
Настройка сервера
Переходим в папку C:\Program Files\OpenVPN\config-auto (или для старой версии C:\Program Files\OpenVPN\config) и создаем файл server.ovpn. Открываем его на редактирование и приводим к следующему виду:
port 443
proto udp
dev tun
dev-node «VPN Server»
dh «C:\\Program Files\\OpenVPN\\ssl\\dh.pem»
ca «C:\\Program Files\\OpenVPN\\ssl\\ca.crt»
cert «C:\\Program Files\\OpenVPN\\ssl\\cert.crt»
key «C:\\Program Files\\OpenVPN\\ssl\\cert.key»
server 172.16.10.0 255.255.255.0
max-clients 32
keepalive 10 120
client-to-client
compress
ncp-disable
fast-io
cipher AES-256-CBC
persist-key
persist-tun
status «C:\\Program Files\\OpenVPN\\log\\status.log»
log «C:\\Program Files\\OpenVPN\\log\\openvpn.log»
verb 4
mute 20
* где port — сетевой порт (443 позволит избежать проблем при использовании Интернета в общественных местах, но может быть любым из свободных, например 1194, занятые порты в Windows можно посмотреть командой netstat -a); dev-node — название сетевого интерфейса; server — подсеть, в которой будут работать как сам сервер, так и подключенные к нему клиенты.
** так как в некоторых путях есть пробелы, параметр заносится в кавычках.
*** при использовании другого порта необходимо проверить, что он открыт в брандмауэре или на время тестирования отключить его.
В сетевых подключениях Windows открываем управление адаптерами — TAP-адаптер переименовываем в «VPN Server» (как у нас указано в конфигурационном файле, разделе dev-node):
Теперь открываем службы Windows и находим «OpenVpnService». Открываем ее, настраиваем на автозапуск и включаем:
Ранее переименованный сетевой интерфейс должен включиться:
VPN-сервер работает. Проверьте, что сетевой адаптер VPN Server получил IP 172.16.10.1. Если он получает что-то, на подобие, 169.254…, выключаем сетевой адаптер — перезапускаем службу OpenVpnService и снова включаем сетевой адаптер.