pfSense: The Definitive Guide
The Definitive Guide to the pfSense Open
Source Firewall and Router Distribution
Christopher M. Buechler
Jim Pingle
перевод: Михайлов Алексей ака iboxjo
20-08-2012
e-mail: iboxjo@yandex.ru
blog: iboxjo.livejournal.com
Глава 15 OpenVPN
[Все права на исходный текст принадлежат авторам и издательству]
OpenVPN является ещё одним решением SSL VPN с открытым исходным кодом, которое может использоваться для удалённого доступа клиента, так и для подключения site-to-site. Клиенты OpenVPN поддерживаются широким спектром операционных систем, в том числе, все BSD, Linux, Mac OS X, Solaris, Windows 2000 и новее. Каждое соединение OpenVPN, будь то удалённый доступ или соединение site-to-site, состоит из сторон сервера и клиента. В случает VPN site-to-site, один брандмауэр выступает в качестве сервера, а другой в качестве клиента. Не имеет значения, какой именно брандмауэр выступает в какой роли. Как правило, центральный брандмауэр обеспечивает подключения к серверу для всех удалённых мест, брандмауэры которых настраиваются в качестве клиентов. Эта функциональность эквивалентна противоположной конфигурации - центральный брандмауэр сконфигурирован как клиент соединяющийся с сервером запущенном на брандмауэре в удалённой локации.
Существует два типа методов аутентификации, которые могут использоваться в OpenVPN: общие ключи (shared keys) и X.509. Для использования общих ключей, вы генерируете ключ который будет использоваться на обеих сторонах. X.509 подробно описывается далее в этом разделе.
Обратите внимание, что хотя OpenVPN является SSL VPN, это не "clienless" SSL VPN, в том смысле, в котором его понимают производители коммерческих брандмауэров. Вам необходимо установить клиент OpenVPN на всех ваших клиентских устройствах. В действительности, не существует никакого VPN решения "без клиента", и терминология "clientless" - не более чем маркетинговый ход. Более подробную информацию по обсуждению SSL VPN предоставляет сообщение Мэтью Грумса (Matthew Grooms), разработчика pfSense и
инструментов IPsec: http://marc.info/?l=pfsense-support&m=121556491024595&w=2. По вопросу общего рассмотрения различных типов VPN доступных в pfSense, их плюсов и минусов, обратитесь к главе 12, "Виртуальные частные сети".
15.1.Базовое введение в инфраструктуру открытых ключей X.509
Один из вариантов аутентификации OpenVPN позволяет использование ключей X.509. Подробное обсуждение X.509 и PKI выходит за рамки данной книги и является темой целого ряда специализированных изданий. Этот раздел содержит очень общее описание, которое необходимо для настройки OpenVPN. X.509 является предпочтительным методом запуска удалённого доступа VPN, поскольку позволяет ограничивать доступ индивидуальных машин.
При использовании общих ключей, вам необходимо либо создать уникальный сервер или порт для каждого клиента, либо передать один и тот же ключ всем клиентам. Первый способ является кошмаром в плане управления, а второй позволяет получить множество проблем в случае компрометации ключа. Если одна клиентская машина оказалась скомпрометирована или требуется отменить доступ
конкретного человека, придётся создавать новый ключ и изменять ключи на всех клиентских машинах. При развёртывании инфраструктуры открытого ключа, в случае компрометации клиента или при отзыве его доступа, можно просто отменить сертификат клиента. Другие клиенты при этом не пострадают.
При использовании PKI сначала создаётся Certificate Authority (CA). Затем, CA подписывает все индивидуальные сертификаты в вашем PKI. Сертификат CA используется на серверах OpenVPN и клиентах для проверки подлинности используемых сертификатов. CA можно использовать для проверки подписи сертификатов, но не для подписания сертификатов. Подписание сертификатов требует закрытый ключ CA (ca.key при использовании простых RSA, обсуждаемый далее в данной главе). Конфиденциальность закрытого ключа CA обеспечивает безопасность вашего PKI. Любой человек, имеющий доступ к закрытому ключу CA может создать сертификаты для использования на вашей PKI, и следовательно закрытые ключи должны быть хорошо защищены. Эти ключи никогда не распространяются на клиенты или сервера.
Убедитесь, что вы никогда не копируете клиенту больше файлов чем ему необходимо, так как это может привести к взлому вашей PKI. В последующих главах описывается, какие файлы требуются клиентам для подключения и как создавать сертификаты.
15.2.Генерация ключей и сертификатов OpenVPN
OpenVPN использует сертификаты и общие ключи для шифрования и де шифрования трафика. Этот раздел показывает, как генерировать общий ключ или сертификат используемый в OpenVPN. Последний раздел описывает, как использовать эти ключи и сертификаты.
15.2.1.Генерация общих ключей
Общие ключи - предпочтительный метод для соединения site-to-site с помощью OpenVPN. Для генерации общего ключа, перейдите на вкладку Diagnostics -> Command и выполните следующую команду:
# openvpn --genkey --secret /tmp/shared.key
Для отображения ключа выполните:
# cat /tmp/shared.key
Ключ будет выглядеть примерно следующим образом:
#
#2048 bit OpenVPN static key
-----BEGIN OpenVPN Static key V1-----
6ade12d55caacbbc5e086ccb552bfe14
4ca7f08230b7e24992685feba9842a03
44ee824c6ac4a30466aa85c0361c7d50
19878c55e6f3e7b552e03a807b21bad5
ce0ca22d911f08d16b21ea1114e69627
f9e8a6cd277ad13b794eef5e1862ea53
e7b0cba91e8f120fa983bdd8091281f6
610bf8c7eb4fed46875a67a30d25896f
0010d6d128ad607f3cbe81e2e257a48a
82abfca3f8f85c8530b975dca34bcfe4
69f0066a8abd114f0e2fbc077d0ea234
34093e7d72cc603d2f47207585f2bdec
ed663ad17db9841e881340c2b1f86d0a
45dc5b24823f47cc565196ceff4a46ca
34fc074959aa1ef988969cfdd6d37533
e5623222373d762a60e47165b04091c2
-----END OpenVPN Static key V1-----
Скопируйте ключ и вставьте его в вашу конфигурацию OpenVPN.
После копирования ключа, вам следует удалить его. Для этого выполните:
# rm /tmp/shared.key
15.2.2.Создание сертификатов
Для конфигурации OpenVPN с X.509, первоначально, необходимо сгенерировать сертификаты. Если у вас уже есть существующая PKI, и вы хотите её использовать, информация этого раздела к вам не относится. Большинство пользователей pfSense не имеют существующей PKI X.509, и простым средством её настройки является easy-rsa скрипт предоставляемый OpenVPN.
15.2.2.1.Местоположение easy-rsa
Если у вас есть система BSD или Linux, вы можете скачать последнюю версию OpenVPN для этой системы, распаковать дистрибутив и найти папку easy-rsa в извлечённой папке OpenVPN. Аналогично, для Windows, OpenVPN по умолчанию устанавливает easy-rsa в C:\Program Files\OpenVPN\easy-rsa. Кроме того, вы можете использовать easy-rsa непосредственно на pfSense.
Если вы предпочитаете запуск на виртуальной машине, pfSense Tools virtual appliance [http://www.pfsense.org/toolsvm], включает скрипт easy-rsa.
Наиболее серьёзные развертывания PKI обычно работают на выделенных системах находящихся в безопасной локации. В большинстве малых и средних сред большинство действий связанных с безопасностью PKI может оказаться непрактичными и редко применяются. Однако имейте в виду, что компрометация вашей PKI ставит под угрозу целостность всей инфраструктуры OpenVPN, а следовательно поддерживайте требуемый уровень безопасности.
15.2.2.2.Создание сертификатов с использованием pfSense
Вы можете использовать easy-rsa на pfSense для генерации ключей OpenVPN. Файлы easy-rsa, включённые в OpenVPN подразумевают наличие оболочки bash, которая не включается по умолчанию в системы BSD, поэтому требуется специальный пакет easy-rsa, предоставляемый разработчиками pfSense. Вам необходимо включить ssh на вашем брандмауэре, чтобы получить возможность использовать easy-rsa. Для установки просто выполните следующую команду в ssh сессии:
# fetch -o - http://files.pfsense.org/misc/easyrsa-setup.txt | /bin/sh
Команда позволит загрузить требуемые файлы. Распакуйте их и удалите загруженный файл. Затем, вам будет предложено выполнить следующий шаг вручную. Скопируйте и вставьте последнюю отображённую строку для генерации ваших сертификатов.
Замечание
Если вы выполняли этот процесс раньше, повтор приведёт к уничтожению всех существующих сертификатов!
# cd /root/easyrsa4pfsense && ./PFSENSE_RUN_ME_FIRST
Сначала вам предложат ввести ваше местоположение (location) и информацию о организации (organization information), которые будут использовать в дальнейшем по умолчанию при создании дополнительных сертификатов. Будет создан ваш CA, сертификат сервера и один клиентский сертификат. Эти файлы могут быть найдены в директории /root/easyrsa4pfsense/keys/.
15.2.2.2.1.Создание клиентских ключей
Для создания нового ключа клиента, выполните следующие команды, где username - имя клиента (замените username на соответствующее имя).