Поиск по сайту:

Создайте свой собственный комбинированный сервер OpenVPN/WiKID для VPN со встроенной двухфакторной аутентификацией с помощью Packer.


На этой странице

  1. Создание комбинированного сервера
  2. Настройте сервер двухфакторной аутентификации WiKID.
  3. Зарегистрируйте программный токен WiKID
  4. Настройка VPN-клиента

В прошлых руководствах мы добавили одноразовые пароли в OpenVPN и создали сервер WiKID с помощью Packer. В этом руководстве мы создадим комбинированный сервер OpenVPN/WiKID с помощью Packer. Packer позволяет нам создавать образы VMware, VirtualBox, EC2, GCE, Docker и т. д. с помощью кода. Обратите внимание, что объединение вашего сервера двухфакторной аутентификации и VPN-сервера в одном устройстве может быть или не быть лучшим решением для вас. Обычно нам нравится разделение обязанностей для обеспечения безопасности и гибкости. Однако, если вам нужно что-то быстрое — аудиторы PCI прибудут в понедельник — или вы находитесь в репрессивном состоянии и просто нуждаетесь в защищенном исходящем соединении на короткий период времени. И у вас все еще есть некоторая гибкость. Вы можете добавить дополнительные услуги на сервер WiKID. Вы можете отключить сервер OpenVPN и вместо этого переключиться на другой VPN.

Создайте комбинированный сервер

Сначала скачайте и установите Packer.

Ознакомьтесь с нашими скриптами Packer на GitHub. Сценарии состоят из основного файла JSON, который сообщает Packer, что он делает, каталога http со сценариями сборки Anaconda, каталога файлов, который загружается в образ, и средств подготовки, которые запускаются после сборки образа. По сути, Packer начинает с какого-то источника, такого как ISO или AMI, собирает сервер на основе Anaconda (по крайней мере, для CentOS), загружает любые файлы, а затем запускает средства обеспечения. Packer в первую очередь ориентирован на создание идемпотентных серверов. В нашем случае мы используем его для выполнения команд, что позволяет нам запускать одну команду вместо примерно 50 (только для подготовки).

Перед сборкой нужно отредактировать несколько файлов. Сначала отредактируйте /files/vars. Это стандартный файл vars для создания сертификатов OpenVPN. Просто введите свои значения для полей сертификата.

# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="US"
export KEY_PROVINCE="GA"
export KEY_CITY="Atlanta"
export KEY_ORG="WiKID Systems Inc"
export KEY_EMAIL=""
export KEY_OU="WiKID Systems, Inc"

Далее вам нужно отредактировать общий секрет в /files/server. Этот файл сообщит PAM, какой сервер RADIUS использовать. В этом случае он напрямую обращается к серверу WiKID. Общий секрет используется для кодирования трафика радиуса. Поскольку WiKID работает на том же сервере, оставьте локальный хост в качестве сервера:

# server[:port] shared_secret      timeout (s)
127.0.0.1       secret             3
 

Этот общий секрет понадобится вам позже.

Взгляните на centos-6-x86-64.json. Вы можете запустить его как есть, но вы можете отредактировать несколько вещей. Вы должны подтвердить source_ami (перечисленный ami находится на востоке США) или переключить его на один из ваших предпочтительных AMI CentOS. Если вы строите на VMware или VirtualBox, вам нужно изменить iso_url на расположение ISO-образа CentOS на вашем жестком диске и обновить MD5Sum. Вы можете отредактировать имена и описания. Вы также можете изменить регион EC2. Самое главное, вы можете изменить ssh_password, который является корневым паролем.

Если вы довольны файлом JSON, вы можете проверить его с помощью Packer:

$packer_location/packer verify centos-6-x86-64.json

Если это работает, создайте его. Вы можете указать целевую платформу в командной строке:

$packer_location/packer build --only=virtualbox-iso centos-6-x86-64.json

Если вы выполняете сборку для EC2, укажите необходимые учетные данные в командной строке:

$packer_location/packer build -var 'aws_access_key=XXXXXXXXXXXXXXXXXXXX' -var 'aws_secret_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' --only=amazon-ebs centos66.json

Если вы посмотрите, как выполняются команды, вы увидите, что сервер OpenVPN строится со свежими сертификатами!

Настройте сервер двухфакторной аутентификации WiKID.

После создания вам нужно будет запустить AMI или импортировать виртуальную машину. Запустите VirtBox и выберите «Файл», «Импорт устройства». Укажите его на каталог output-virtualbox-iso, созданный командой сборки, и откройте файл OVF. Внесите необходимые изменения в виртуальную машину (например, память или сеть) и запустите сервер.

Войдите в систему, используя root/wikid или что-то еще, что вы, возможно, установили в качестве пароля root, как в файле JSON. Мы будем настраивать сервер WiKID, используя опцию быстрой настройки. Скопируйте файл в текущий каталог:

cp /opt/WiKID/conf/sample-quick-setup.properties wikid.conf

Отредактируйте wikid.conf в соответствии с этими инструкциями. Используйте внешний IP-адрес вашего сервера или экземпляра EC2, дополненный нулями, в качестве кода домена. Таким образом, 54.163.165.73 становится 054163165073. Для хоста RADIUS используйте локальный хост и общий секрет, который вы создали в /files/server выше:

information for setting up a RADIUS host
radiushostip=127.0.0.1
radiushostsecret=secret
; *NOTE*: YOU SHOULD REMOVE THIS SETTING AFTER CONFIGURATION FOR SECURITY
  

Если вы находитесь на виртуальной машине, вы можете настроить сеть, запустив:

wikidctl setup

В EC2 вы можете просто настроить сервер WiKID:

wikidctl quick-setup configfile=wikid.conf

Вы увидите прокручиваемую информацию о конфигурации. Запустите сервер WiKID:

wikidctl start

Вам будет предложено ввести парольную фразу, которую вы установили в wikid.conf. Перейдите к интерфейсу WIKIDAdmin по адресу https://yourserver.com/WiKIDAdmin/, и вы должны увидеть, что ваш домен создан, ваш сетевой клиент настроен и все необходимые сертификаты завершены.

Прежде чем покинуть сервер, вы должны добавить свое имя пользователя в качестве учетной записи на сервере с помощью useradd $username. Нет необходимости добавлять пароль.

Зарегистрируйте программный токен WiKID

Загрузите iOS или market://search?q=pname:com.wikidsystems.android для Android из магазинов приложений.

Запустите токен и выберите «Добавить домен». Введите код идентификатора домена, который вы установили в wikid.conf, и вам дважды будет предложено установить свой PIN-код. Сделайте это, и вы получите обратно регистрационный код. Перейдите в веб-интерфейс WiKIDAdmin и щелкните вкладку «Пользователи», затем «Проверить пользователя вручную». Нажмите на свой регистрационный код и введите свое имя пользователя. Этот процесс связывает токен (и обмененные ключи) с пользователем.

Настройте VPN-клиент

Загрузите ca.crt в клиент:

scp -i ~/Downloads/wikid.pem :/etc/openvpn/ca.crt .

Отредактируйте файл OpenVPN client.conf. Установите удаленный сервер в качестве комбинированного сервера WiKID/OpenVPN:

# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote yourserver.com 1194
   

Закомментируйте строки для сертификата и ключа. Оставил только ЦС. Поскольку мы используем WiKID для аутентификации и идентификации пользователя, они не нужны.

ca ca.crt
#cert client.crt
#key client.key
 

В нижней части файла скажите клиенту запросить пароль:

auth-user-pass

Теперь запустите клиент OpenVPN:

sudo openvpn client.conf

Вам будет предложено ввести имя пользователя и пароль. Запросите код доступа из вашего токена WiKID и введите его в поле пароля. Вам должны быть предоставлены доступы.

Связанный:

  • WiKID — сервер двухфакторной аутентификации
  • Открытый VPN
  • Упаковщик

Статьи по данной тематике: