-ru/vpn-gateway-howto-point-to-site-classic-azure-portal.md at master · -ru · GitHub

IKE VPN

3.1) Pool:Клиентам VPN лучше всегда давать отдельные IP-адреса, отличные от основного диапазона. Создадим пул адресов для VPN:

В терминале:

/ip pool add name=”ike_vpn_pool” ranges=”10.0.100.2-10.0.100.30″

3.2) Modeconfig:

В терминале:

/ip ipsec mode-config add name=”modeconfig_ikev2″ address-pool=”ike_vpn_pool” address-prefix-length=32 split-include=0.0.0.0/0 static-dns=10.0.100.1 system-dns=no

Вариации:

/ip ipsec mode-config add address-pool=”ike_vpn_pool” address-prefix-length=32 name=”modeconfig_ikev2″ split-include=192.168.88.0/24 static-dns=10.0.100.1 system-dns=no

где 192.168.88.0/24 – сеть, маршрут к которой будет передан клиенту. Т.е. после установки VPN соединения клиент сможет сразу обращаться к ресурсам этой сети.

Если клиенты после подключения к удаленной сети должны иметь возможность обращаться к ресурсам удаленной сети не по IP, а по имени (например, server.office.local, а не 192.168.88.146), то надо передать клиенту не только маршрут до сети, но и сообщить ему адрес DNS сервера, отвечающего за разрешение имен в удаленной сети:

/ip ipsec mode-config add address-pool=”ike_vpn_pool” address-prefix-length=32 name=”modeconfig_ikev2″ split-include=192.168.88.0/24 static-dns=192.168.88.1 system-dns=no

где 192.168.88.1 – IP-адрес DNS-сервера (в данном случае, это IP самого микротика).

3.3) Profile:

Касается т.н. фазы 1 (Phase 1, Security Association, SA), на которой согласовываются тип аутентификации, группа Diffie-Hellman, алгоритм шифрования. SA (фазы 1) существует определенное время, в течение которого устройства должны завершить вторую фазу. Если не успевают, то повторяется фаза 1. 

В терминале:

/ip ipsec profile add name=”profile_ikev2″ dh-group=modp1024,modp1536,modp2048 enc-algorithm=aes-128,aes-192,aes-256 hash-algorithm=sha256 nat-traversal=yes proposal-check=obey

3.4) Peer (кого и куда принимаем):

В терминале:

/ip ipsec peer add name=”peer_ikev2″ exchange-mode=ike2 address=0.0.0.0/0 local-address=1.2.3.4 passive=yes send-initial-contact=yes profile=”profile_ikev2″

– принимаем всех (0.0.0.0/0) на внешний адрес микротика (1.2.3.4) – адресов-то может быть много и не обязательно это будет публичный IP.

3.5) Proposal:

В терминале:

/ip ipsec proposal add name=”proposal_ikev2″ auth-algorithms=sha1,sha256,sha512 enc-algorithms=aes-128-cbc,aes-128-ctr,aes-128-gcm,aes-192-ctr,aes-192-gcm,aes-256-cbc,aes-256-ctr,aes-256-gcm lifetime=1h pfs-group=none

Относится к так называемой второй фазе (Phase 2, IPSec SA), когда устанавливается, как будет проходить шифрование и аутентификация (проверка, что получены именно те данные, которые были отправлены) данных, а также частота обновления ключей. По-умолчанию, ключи обновляются каждые 8 часов (это время можно менять параметром lifetime).

3.6) Policy group:

В терминале:

/ip ipsec policy group add name=group_ikev2

3.7) Policy:

В терминале:

/ip ipsec policy add src-address=0.0.0.0/0 dst-address=10.0.100.0/24 protocol=all template=yes group=”group_ikev2″ action=encrypt ipsec-protocols=esp proposal=”proposal_ikev2″

3.8) Identity (для каждого пользователя – свой):

FIREWALL

Сферический firewall в вакууме, нужно аккуратно адаптировать эти правила в ваш firewall.

INPUT (разрешить входящие на 500/udp И 4500/udp):

/ip firewall filteradd action=drop chain=input comment=”invalid” connection-state=invalidadd action=accept chain=input comment=”established” connection-state=establishedadd action=accept chain=input comment=”related” connection-state=relatedadd action=accept chain=input connection-state=new dst-port=500 protocol=udpadd action=accept chain=input connection-state=new dst-port=4500 protocol=udp…add action=drop chain=input comment=”drop everything else”

ЗЫ: еще пишут в примерах, что надо разрешить протокол ipsec-esp, но я проверял 🙂 отключение ни чему не мешает, поэтому и добавлять лишнее не будем.

FORWARD:

/ip firewall filteradd action=drop chain=forward comment=”invalid” connection-state=invalidadd action=accept chain=forward comment=”established” connection-state=establishedadd action=accept chain=forward comment=”related” connection-state=relatedadd action=accept chain=forward comment=”in:ipsec” ipsec-policy=in,ipsecadd action=accept chain=forward comment=”VPN-to-LAN” dst-address=192.168.88.0/24 ipsec-policy=in,ipsec src-address=10.0.100.0/24

NAT

Чтобы VPN-клиенты могли выходить в интернет, настроим NAT:

/ip firewall natadd action=src-nat chain=srcnat ipsec-policy=out,none out-interface=ether1-gateway src-address=10.0.100.0/24 to-addresses=1.2.3.4add action=masquerade chain=srcnat comment=”default” out-interface=ether1-gateway

Безопасность и шифрование

Безопасность и шифрование в OpenVPN обеспечивается библиотекой OpenSSL и протоколом транспортного уровня Transport Layer Security (TLS). Вместо OpenSSL в новых версиях OpenVPN можно использовать библиотеку PolarSSL. Протокол TLS представляет собой усовершенствование протокола защищенной передачи данных уровня защищенных сокетов Secure Socket Layers (SSL).

В OpenSSL может использоваться симметричная и ассиметричная криптография.

В первом случае перед началом передачи данных на все узлы сети необходимо поместить одинаковый секретный ключ. При этом возникает проблема безопасной передачи этого ключа через небезопасный Интернет.

Во втором случае у каждого участника обмена данными есть два ключа — публичный (открытый) и приватный (секретный).

Публичный ключ используется для зашифрования данных, а приватный — для расшифрования. В основе шифрования лежит довольно сложная математика. Выбранный в SSL/TLS алгоритм зашифрования публичным ключом обеспечивает возможность расшифрования только с помощью приватного ключа.

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

Для безопасной передачи данных необходимо идентифицировать стороны, принимающие участие в обмене данными. В противном случае можно стать жертвой так называемой “атаки посредника” (Man in the Middle, MITM). В ходе такой атаки злоумышленник подключается к каналу передачи данных и прослушивает его. Он также может вмешиваться, удалять или изменять данные.

Чтобы обеспечить аутентификацию (проверку подлинности пользователя) протокол TLS использует инфраструктуру публичных ключей (Public Key Infrastructure, PKI) и асимметричную криптографию.

Нужно осознавать, что расшифрование данных без наличия приватного ключа тоже возможно, например, методом последовательного перебора. Хотя такой метод и требует больших вычислительных ресурсов, это только вопрос времени, когда данные смогут быть расшифрованы.

Хотя размер ключа влияет на сложность расшифрования, никакой ключ не дает гарантии полной безопасности данных. Кроме того, существует возможность похищения уже расшифрованных данных и ключей за счет уязвимостей и закладок в операционной системе или прикладном ПО, а также в аппаратном обеспечении серверов и рабочих станций.

Шифрование данных увеличивает трафик и замедляет обмен данными. Чем больше длина ключа, применяемого для шифрования данных, тем труднее будет его подобрать, но и тем заметнее получится замедление обмена данными.

Готовим оборудование для установки openvpn

Если вы впервые настраиваете сеть VPN, лучше всего экспериментировать на виртуальных машинах VDS. Это могут быть VDS, созданные локально на вашем компьютере или на сервере в вашей сети, либо арендованные у провайдера. Перед арендой VDS поинтересуйтесь, поддерживается ли драйвер TUN/TAP. Некоторые провайдеры требуют дополнительной оплаты для подключения TUN/TAP.

На рис. 1. мы показали схему стенда, на котором будем устанавливать компоненты и узлы OpenVPN (имена и адреса IP хостов могут быть другими).

Рис. 1. Стенд для изучения OpenVPN.

Здесь изображены три узла (хоста), для каждого из которых потребуется отдельный VDS:

Хосты клиента и сервера VPN соединены обычным, небезопасным каналом. В случае макета это может быть локальная сеть, в реальной жизни — канал сети Интернет. ПО OpenVPN создает в этой сети канал, обозначенный на рис. 1 красным цветом, внутри которого устанавливается безопасный шифрованный канал (обозначен зеленым цветом).

В макете хост удостоверяющего центра CA можно подключить к вашей локальной сети. Для реальной работы хост CA нужно отсоединить от сети, а обмен сертификатами и ключами осуществлять с помощью, например, USB флэш-диска.

Если к безопасности предъявляются повышенные требования, хост CA необходимо поместить в охраняемое помещение — расположенная на этой машине информация позволяет создавать ключи доступа к вашей сети VPN.

Мы проводили установку серверов OpenVPN в среде ОС Debian Linux и FreeBSD, клиентов OpenVPN в ОС Debian Linux, FreeBSD и Microsoft Windows.

Основная часть статьи посвящена установке компонентов OpenVPN для Debian Linux. Далее мы рассмотрим особенности установки для FreeBSD и Microsoft Windows.

По возможности на узлах сети OpenVPN используйте новые версии ОС. Перед тем как приступить к работе с OpenVPN, обновите пакеты Linux:

# apt-get update
# apt-get upgrade

Установите на всех узлах пакет пакет zip, если он не был установлен ранее:

# aptitude install zip

Этот пакет будет нужен для распаковки архива утилиты Easy-RSA, с помощью которой мы будем создавать ключи и сертификаты.

На всех узлах настройте обновление и синхронизацию времени.

# apt-get install ntpdate
# apt-get install -y ntp
# /etc/init.d/ntp stop
# ntpdate pool.ntp.org
# /etc/init.d/ntp start

Синхронизация времени необходима, т.к. сертификаты имеют период действия. Если часы, например, на хосте удостоверяющего центра CA и сервера OpenVPN не синхронны, может получиться так, что выданный удостоверяющим центром сертификат не будет действителен на узлах сети OpenVPN из-за ограничений по дате или времени.

Дальнейшие работы мы начнем с подготовки хоста удостоверяющего центра CA. Затем установим хосты сервера и клиента OpenVPN.

Использование клиента charon-cmd для разовых подключений

Чтобы управлять StrongSwan как службой, вам нужно выполнить следующие шаги по настройке.

Сначала обновите свой локальный кэш пакетов с помощью apt

  1. sudoapt update

Затем установите StrongSwan и необходимые плагины для аутентификации:

  1. sudoaptinstall strongswan libcharon-extra-plugins

Теперь вам потребуется копия сертификата СА в каталоге /etc/ipsec.d/cacerts, чтобы ваш клиент мог проверить подлинность сервера. Запустите следующую команду, чтобы скопировать файл ca-cert.pem в каталог:

  1. sudocp/tmp/ca-cert.pem /etc/ipsec.d/cacerts

На этом этапе вы можете подключиться к серверу VPN с помощью charon-cmd, используя сертификат СА сервера, IP-адрес сервера VPN и настроенное имя пользователя.

Запустите следующую команду для подключения к VPN в любое время:

Компоненты сети openvpn

Прежде чем мы перейдем от теории к практике, перечислим основные компоненты сети OpenVPN и объекты, с которыми нам придется иметь дело.

Удостоверяющий центр CA

Выдает сертификаты по запросу узлов сети VPN, подписанные сертификатом удостоверяющего центра. Предоставляет узлам сети VPN свой собственный сертификат для проверки удостоверяющей стороны. Управляет списком отзыва сертификатов CRL.

Сервер OpenVPN

ПО сервера OpenVPN создает туннель внутри незащищенной сети, например, Интернета. Этот туннель обеспечивает безопасный зашифрованный трафик между узлами — участниками обмена данными в сети OpenVPN.

Клиент OpenVPN

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

Сертификаты (публичные ключи) X.509 

Сертификаты X.509 представляют собой публичные ключи, заверенные удостоверяющим центром CA. Они используются для зашифровывания данных. Факт заверения сертификата удостоверяющим центром CA позволяет идентифицировать сторону, передающую зашифрованные данные.

Файл запроса на сертификат создается на узлах сети, затем он переносится на узел удостоверяющего центра и там подписывается. Созданный в результате подписанный сертификат переносится обратно на запросивший его узел сети OpenVPN.

Приватные ключи

Приватные ключи секретные. Они должны создаваться и храниться на каждом узле сети OpenVPN, предназначены для расшифрования данных и никогда не должны передаваться по сети.

Приватные ключи создаются на узлах сети OpenVPN одновременно с файлом запроса на получение сертификата.

Список отзыва сертификатов CRL

Содержит список сертификатов, утративших доверие. Он создается и редактируется на узле удостоверяющего центра CA. Чтобы отключить узел от сети, достаточно занести его сертификат в список CRL.

После создания и каждого изменения список CRL переносится на серверы OpenVPN.

Файл Диффи-Хелмана

Используется, чтобы в случае похищения ключей исключить расшифрование трафика, записанного еще до этого похищения. Создается на сервере OpenVPN.

Статический ключ HMAC

Служит для проверки подлинности передаваемой информации. Обеспечивает защиту от DoS-атак и флуда. Создается на сервере OpenVPN.

Настройка cisco vpn с авторизацией по сертификатам

    Довольно распространенной задачей является организация удаленного доступа в корпоративную сеть. При этом встает выбор технологии и средств обеспечения безопасности. Наиболее надежной я считаю такую реализацию удаленного доступа, при которой злоумышленник не сможет ею воспользоваться, даже получив каким-либо образом правильные учетные данные. Это можно сделать, настроив авторизацию по сертификатам. Таким образом, подключиться извне к корпоративной сети сможет только тот, кто предоставит валидный сертификат. Если же хранить сертификат не на мобильном устройстве, а на eToken, имеющем свой PIN-код, то мы сводим практически к нулю угрозу несанкционированного подключения к сети при утере/краже устройства (например, ноутбука). Практически – потому что защита от социальной инженерии в отношении пользователей ключевых носителей выходит за рамки этой статьи.

    Для крупных организаций самым правильным решением была бы интеграция с центром сертификации используемой службы каталогов, например, Active Directory. Но в небольшой организации, где, как правило, удаленный доступ имеют лишь несколько человек, это излишне. И в таком случае проще всего использовать центр сертификации, встроенный в Cisco IOS. Об этом и пойдет речь на примере маршрутизатора Cisco 2811. Я приведу в качестве примера рабочий конфиг – разумеется, адаптированный, без указания реальных IP адресов и имен.

Итак, нам нужно сделать следующее:

1. Создать пару RSA ключей на маршрутизаторе и поднять CA

2. Получить у этого CA клиентский сертификат для маршрутизатора

3. Настроить маршрутизатор для приема подключений через IPSec VPN

4. Выдать сертификаты клиентам.

Поехали. Самое первое – синхронизируем время, задаем имя маршрутизатора и домен и создаем статическую запись, ассоциирующую имя маршрутизатора с его ip адресом:

router(config)#ntp server 0.ru.pool.ntp.org
router(config)#hostname gate
gate(config)#ip domain name company.ru
gate(config)#ip host gate 192.168.0.1

Дальше включаем http сервер, необходимый для выдачи сертификатов по протоколу SCEP, создаем ключи для нашего центра сертификации и выгружаем их в nvram память, защитив шифром 3des и паролем 12345678:

gate(config)#ip http server
gate(config)#crypto key generate rsa general-keys label gate exportable
gate(config)#crypto key export rsa gate pem url nvram: 3des 12345678

Важно: при генерации ключей выбираем длину как минимум 1024 бит.

Проверяем, что ключи сгенерированы правильно:

gate#show crypto key mypubkey rsa
% Key pair was generated at: 11:31:22 Moscow Jan 14 2022
Key name: gate
Storage Device: not specified
Usage: General Purpose Key
Key is exportable.
Key Data:
307C300D 06092A86 4886F70D 01010105 00036B00 30680261 00D3491E 2A21D383
854D7DA8 58AFBDAC 4E11A7DD E6C40AC6 66473A9F 0C845120 7C0C6EC8 1FFF5757
3A41CE04 FDCB40A4 B9C68B4F BC7D624B 470339A3 DE739D3E F7DDB549 91CD4DA4
DF190D26 7033958C 8A61787B D40D28B8 29BCD0ED 4E6275C0 6D020301 0001

Теперь переходим непосредственно к настройке CA. Его имя должно совпадать с именем созданной пары ключей.

gate(config)#crypto pki server gate
gate(cs-server)#database level complete
gate(cs-server)#grant auto
gate(cs-server)#database url flash:
gate(cs-server)#no shut

Проверяем, что trustpoint для нашего CA создалась автоматически, а сам CA находится в состоянии enabled:

gate#sh crypto pki trustpoint gate
Trustpoint gate:
Subject Name:
cn=gate
Serial Number (hex): 01
Certificate configured.
SCEP URL: http://gate:80/cgi-bin

gate#sh crypto pki server gate
Certificate Server gate:
Status: enabled
State: enabled

Server’s configuration is locked (enter «shut» to unlock it)
Issuer name: CN=gate
CA cert fingerprint: DE25FADA 5F8DB143 6B918725 AED5F12F
Granting mode is: none
Last certificate issued serial number (hex): 3
CA certificate expiration timer: 11:34:00 Moscow Jan 14 2022
CRL NextUpdate timer: 17:34:02 Moscow Jan 14 2022
Current primary storage dir: flash:
Database Level: Complete – all issued certs written as .cer

Теперь нам необходимо настроить маршрутизатор на получение сертификата у самого себя, чтобы он мог выступать в роли клиента для авторизации VPN пользователей:

gate(config)#crypto pki trustpoint self
gate(ca-trustpoint)#enrollment url http://gate:80
gate(ca-trustpoint)#subject-name ou=Remote
gate(ca-trustpoint)#revocation-check crl

Запрашиваем и получаем сертификат:

gate(config)#crypto pki authenticate self
gate(config)#crypto pki enroll self

Проверяем:

gate#sh cry pki trustpoints self
Trustpoint self:
Subject Name:
cn=gate
Serial Number (hex): 01
Certificate configured.
SCEP URL: http://gate:80/cgi-bin

На этом настройка центра сертификации завершена. Приступим к настройке VPN. Для начала создадим карту проверки сертификата. В нашем случае иметь возможность подключаться к сети будут только те пользователи, у которых в поле OU указано «Remote»:

gate(config)#crypto pki certificate map VPN_Certs 10
gate(ca-certificate-map)#subject-name co ou = remote

Включим модель авторизации:

gate(config)#aaa new-model
gate(config)#aaa authentication login userauthen local
gate(config)#aaa authorization network groupauthor local
gate(config)#aaa session-id common

Настроим IPSec. Укажем использовать шифрование 3Des

gate(config)#crypto ipsec transform-set 3DES-MD5 esp-3des esp-md5-hmac
gate(config)#crypto isakmp policy 2
gate(config-isakmp)#encr 3des
gate(config-isakmp)#group 2

Создадим пул адресов для выдачи клиентам и ACL с правилами маршрутизации, которые будут применяться к ним:

gate(config)#ip local pool vpn 192.168.1.1 192.168.1.10
gate(config)#ip access-list extended Split
gate(config-ext-nacl)#permit ip 192.168.0.0 0.0.0.255 any

Настроим эти правила для VPN клиентов:

gate(config)#crypto isakmp client configuration group Remote
gate(config-isakmp-group)#pool vpn
gate(config-isakmp-group)#acl Split

Создадим профиль для проверки сертификата и применения вышеупомянутых правил:

gate(config)#crypto isakmp identity dn
gate(config)#crypto isakmp profile VNP_Client_Prof
gate(conf-isa-prof)#ca trust-point self
gate(conf-isa-prof)#match certificate VPN_Certs
gate(conf-isa-prof)#client configuration group Remote

Теперь создаем crypto map:

gate(config)#crypto dynamic-map VPNClient 10
gate(config-crypto-map)#set transform-set 3DES-MD5
gate(config-crypto-map)#set isakmp-profile VNP_Client_Prof
gate(config-crypto-map)#reverse-route
gate(config-crypto-map)#qos pre-classify
gate(config)#crypto map VPN client authentication list userauthen
gate(config)#crypto map VPN isakmp authorization list groupauthor
gate(config)#crypto map VPN client configuration address respond
gate(config)#crypto map VPN 10 ipsec-isakmp dynamic VPNClient

Ну и наконец – вешаем этот crypto map на внешний интерфейс:

gate(config)#int fa0/0.50
gate(config-subif)#crypto map VPN

Все. Теперь нам осталось только выписать сертификаты так, как описано здесь (не забыв указать OU=Remote при генерации CSR), и настроить Cisco VPN Client. Для этого импортируем получившийся в результате создания сертификата файл p12. Также для импорта на клиентские машины понадобится не только сертификат пользователя, но и сертификат CA. Он находится на флеш-памяти машрутизатора и называется 1.crt. Я просто выгрузил его на tftp сервер и импортировал на компьютер с VPN клиентом.

Указываем в настройках клиента имя подключения, IP нашего маршрутизатора и сертификат для авторизации:

-ru/vpn-gateway-howto-point-to-site-classic-azure-portal.md at master · -ru · GitHub

</p>

Пробуем подключиться. Мы должны увидеть окно ввода логина и пароля.

-ru/vpn-gateway-howto-point-to-site-classic-azure-portal.md at master · -ru · GitHub

Вводим логин-пароль локального пользователя. Если все сделано правильно, то подключение будет установлено:

-ru/vpn-gateway-howto-point-to-site-classic-azure-portal.md at master · -ru · GitHub

-ru/vpn-gateway-howto-point-to-site-classic-azure-portal.md at master · -ru · GitHub

P.S. В целях безопасности, после выдачи нужных сертификатов лучше отключить автовыдачу на CA:

gate(config)#crypto pki server gate
gate(cs-server)#shut
gate(cs-server)#grant none
gate(cs-server)#no shut

Немного теории

Если раньше для создания безопасного канала передачи данных крупным компаниям и организациям приходилось прокладывать (либо арендовать) кабели и защищать их от физического доступа злоумышленников, то теперь в этом нет необходимости. С помощью VPN можно создавать защищенные виртуальные каналы, работающие через безопасный “туннель” в Интернете. Такое решение может позволить себе любая, даже очень небольшая компания.

Конечно, если предъявляются повышенные требования к защите данных, необходимо применять сертифицированные средства и обращаться к специалистам. Однако уровень защиты, обеспечиваемый OpenVPN, позволяет использовать эту технологию для многих коммерческих приложений.

Почему сеть VPN называется виртуальной и частной?

Виртуальная она потому, что узлы сети объединяются не физическими линиями, а виртуальными соединениями, которые создаются программным обеспечением (ПО) VPN.

Сеть VPN частная, так как к ней могут подключаться только узлы компании, создавшей эту сеть, а не все желающие. На каждом узле сети VPN должно работать ПО VPN. Еще там должны находиться ключи и сертификаты, обеспечивающие узлам доступ к сети VPN и криптографическую защиту передаваемых данных.

Таким образом, сеть VPN может объединять ресурсы (серверы и рабочие станции) компании в единую безопасную виртуальную сеть, созданную на базе Интернета. И теперь сотрудники, работающие удаленно (из дома или из другой страны) будут находиться как бы в общей сети своей компании. Сеть VPN подходит и для консолидации территориально разделенных офисов компании.

Подготовка файлов конфигурации

Файлы конфигурации, сертификаты и ключи нужно поместить в каталог /etc/openvpn, который будет создан автоматически в процессе установки пакета openvpn.

Прежде всего, подготовим файлы конфигурации openssl.cnf и server.conf. Первый из этих файлов определяет конфигурацию OpenSSL, второй — конфигурацию сервера OpenVPN.

В комплекте с утилитой Easy-RSA поставляется пример файла конфигурации OpenSSL (предполагается, что мы установили утилиту в домашний каталог пользователя ca):

/home/ca/easy-rsa-master/easyrsa3/openssl-1.0.cnf

Мы, однако, рекомендуем использовать для начала упрощенную версию этого файла из нашей статьи.

В файле openssl.cnf указан абсолютный путь к каталогу с ключами и сертификатами, который вы только что создали.

Пример файла openvpn.conf конфигурации сервера OpenVPN есть на сайте проекта по адресу openvpn.net/index.php/open-source/documentation/howto.html#server. Мы предлагаем начать с сокращенной версии этого файла из нашей статьи.

Чтобы запуск сервера OpenVPN произошел успешно, необходимо создать каталоги, сертификаты и ключи, на которые есть ссылки в файлах openssl.cnf и server.conf, а также пользователя openvpn.

Создайте каталог для журнала сервера OpenVPN:

# mkdir /var/log/openvpn/

Создайте каталог для конфигураций клиентов (пока не используем):

# mkdir /etc/openvpn/ccd

Подключение из windows

Вначале импортировать сертификат root, выполнив следующие шаги:

  1. Нажмите WINDOWS R, чтобы открыть диалоговое окно Выполнить и введите mmc.exe, чтобы открыть консоль управления Windows.

  2. Из меню Файл перейдите в раздел Добавить или удалить оснастку, выберите Сертификаты из списка доступных оснасток и нажмите Добавить.

  3. Чтобы разрешить VPN работать для любых пользователей, выберите Учетная запись компьютера и нажмите Далее.

  4. Поскольку мы выполняем настройку на локальном компьютере, выберите пункт Локальный компьютер и нажмите Готово.

  5. Под узлом Корень консоли откройте запись Сертификаты (локальный компьютер), раскройте Доверенные корневые центры сертификации и выберите запись Сертификаты:Просмотр сертификатов

  6. В меню Действие выберите пункт Все задачи и нажмите Импорт, чтобы открыть мастер импорта сертификатов. Нажмите Далее, чтобы пролистать вводное окно.

  7. На экране Импортируемый файл нажмите кнопку Обзор и выберите сохраненный файл сертификата. Затем нажмите Далее.

  8. Убедитесь, что Хранилище сертификатов имеет значение Доверенные корневые центры сертификации и нажмите Далее.

  9. Нажмите Готово, чтобы импортировать сертификат.

Затем выполните следующие шаги по настройке VPN:

  1. Откройте Панель управления и перейдите в Центр управления сетями и общим доступом.
  2. Нажмите Создание и настройка нового подключения или сети и выберите пункт Подключение к рабочем месту.
  3. Выберите пункт Использовать мое подключение к Интернету (VPN).
  4. Введите данные сервера VPN. Введите доменное имя сервера или IP-адрес в поле Адрес в Интернете, затем введите в поле Имя пункта назначения описание своего соединения VPN. Затем нажмите Готово.

Ваше новое подключение VPN появится в списке сетей. Выберите VPN и нажмите Подключиться. Вам будет предложено ввести свои имя пользователя и пароль. Введите эти данные, нажмите OK, и подключение будет установлено.

Создание vpn-шлюза

  1. Перейдите к созданной виртуальной сети.

  2. На странице Виртуальная сеть в разделе Параметры выберите шлюз. На странице шлюз можно просмотреть шлюз для виртуальной сети. У этой виртуальной сети еще нет шлюза. Щелкните Примечание. щелкните здесь, чтобы добавить подключение и шлюз.

  3. На странице Настройка VPN-подключения и шлюза выберите следующие параметры.

    • Тип подключения: “точка — сеть”
    • Адресное пространство клиента: Добавьте диапазон IP-адресов, из которого VPN-клиенты получают IP-адрес при подключении. Используйте диапазон частных IP-адресов, который не пересекается с локальным расположением, из которого выполнено подключение, или с виртуальной сетью, к которой вы подключаетесь.
  4. Не устанавливайте флажок не настраивать шлюз в это время . Будет создан шлюз.

  5. В нижней части страницы нажмите кнопку Далее: шлюз >.

  6. На вкладке шлюз выберите следующие значения:

  7. Чтобы проверить параметры, выберите Просмотр и создание.

  8. После завершения проверки выберите создать. Создание VPN-шлюза может занять до 45 минут в зависимости от выбранного номера SKU шлюза.

Требования

Для подключений проверки подлинности сертификатов “точка — сеть” требуются следующие элементы. В этой статье описаны действия, которые помогут создать их.

  • Динамический VPN-шлюз.
  • Открытый ключ (CER-файл) для корневого сертификата, импортированный в Azure. Этот ключ считается доверенным сертификатом и используется для проверки подлинности.
  • Сертификат клиента создается из корневого сертификата и устанавливается на каждом подключаемом клиентском компьютере. Этот сертификат используется для проверки подлинности клиента.
  • Пакет конфигурации VPN-клиента необходимо создать и установить на каждом подключаемом клиентском компьютере. Пакет конфигурации клиента настраивает собственный VPN-клиент, находящийся в операционной системе, используя данные, необходимые для подключения к виртуальной сети.

Для подключения типа “точка — сеть” не требуется VPN-устройство или локальный общедоступный IP-адрес. Для создания VPN-подключения используется протокол SSTP (Secure Socket Tunneling Protocol). На стороне сервера поддерживается SSTP версии 1.0, 1.1 и 1.2.

Дополнительные сведения см. в статье о подключениях “точка — сеть ” и ” вопросы и ответы”.

Управление strongswan как службой

Чтобы управлять StrongSwan как службой, вам нужно выполнить следующие шаги по настройке.

Сначала обновите свой локальный кэш пакетов с помощью apt

  1. sudoapt update

Затем установите StrongSwan и необходимые плагины для аутентификации:

  1. sudoaptinstall strongswan libcharon-extra-plugins

Теперь вам потребуется копия сертификата СА в каталоге /etc/ipsec.d/cacerts, чтобы ваш клиент мог проверить подлинность сервера. Запустите следующую команду, чтобы скопировать файл ca-cert.pem в каталог:

  1. sudocp/tmp/ca-cert.pem /etc/ipsec.d/cacerts

Чтобы убедиться, что VPN работает только по запросу, используйте systemctl для автоматического отключения StrongSwan:

  1. sudo systemctl disable --now strongswan-starter

Затем настройте имя пользователя и пароль, которые вы будете использовать для аутентификации на сервере VPN. Отредактируйте /etc/ipsec.secrets с помощью nano или любого предпочитаемого редактора:

  1. sudonano /etc/ipsec.conf

Добавьте следующую строку, редактируя выделенные значения имени пользователя и пароля, чтобы они соответствовали настроенным на сервере:

Шаг 2 — создание центра сертификации

Для идентификации на клиентских системах серверу IKEv2 требуется сертификат. Для упрощения формирования требуемого сертификата пакет strongswan-pki включает утилиту pki, которая может сгенерировать центр сертификации и сертификаты сервера.

Для начала создадим несколько каталогов для хранения всех активо, с которыми мы будем работать. Структура каталогов соответствует некоторым каталогам в /etc/ipsec.d, куда мы постепенно переместим все создаваемые элементы:

  1. mkdir -p ~/pki/{cacerts,certs,private}

Затем мы заблокируем разрешения, чтобы другие пользователи не могли видеть наши частные файлы:

  1. chmod700 ~/pki

Располагая структурой каталогов для хранения всех элементов, мы можем сгенерировать ключ root. Это будет 4096-битный ключ RSA, который будет использоваться для подписи корневого центра сертификации.

Запустите следующие команды, чтобы сгенерировать ключ:

  1. pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem

После этого мы можем переходить к созданию корневого центра сертификации, используя ключ, который мы только что сгенерировали для подписания корневого сертификата:

  1. pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem
  2. --type rsa --dn "CN=VPN root CA" --outform pem > ~/pki/cacerts/ca-cert.pem

Флаг –lifetime 3650 используется для обеспечения действительности корневого сертификата центра сертификации на протяжении 10 лет. Корневой сертификат центра обычно не меняется, поскольку его необходимо перераспределять на каждый использующий его сервер и клиент. Исходя из этого, 10 лет — это безопасный срок действия по умолчанию.

Вы можете изменить значение различимого имени distinguished name (DN) на любое другое имя по своему желанию. Обычное имя (поле CN) здесь используется только как индикатор, поэтому оно не обязательно должно совпадать с чем-либо в вашей инфраструктуре.

Настроив и запустив корневой центр сертификации, мы можем создать сертификат, который будет использоваться сервером VPN.

Шаг 4 — настройка strongswan

StrongSwan имеет файл конфигурации по умолчанию с несколькими образцами, но большинство настроек нужно будет выполнить самостоятельно. Прежде чем начинать, создадим резервную копию файла для справки:

  1. sudomv /etc/ipsec.conf{,.original}

Создайте и откройте новый пустой файл конфигурации с помощью предпочитаемого текстового редактора. Мы будем использовать nano:

  1. sudonano /etc/ipsec.conf

Примечание. По мере выполнения данного раздела по конфигурации серверной части VPN вы столкнетесь с настройками, которые относятся к левой и правой сторонам соединения. При работе с VPN IPSec левая сторона, по правилам, обращается к локальной системе, которую вы настраиваете. В данном случае — это сервер. Директивы правой стороны в данных настройках будут обращаться к удаленным клиентам, таким как телефоны или компьютеры.

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

Вначале мы укажем StrongSwan регистрировать состояния демонов для целей отладки и разрешить дублирующиеся соединения. Добавьте в файл следующие строки:

config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

Затем мы создадим раздел конфигурации для сервера VPN. Также мы укажем StrongSwan создать туннели IKEv2 VPN и автоматически загружать этот раздел конфигурации при запуске. Добавьте в файл следующие строки:

. . .
conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes

Также мы настроем обнаружение отсутствующих узлов, чтобы закрывать неиспользуемые соединения при непредвиденном отключении клиента. Добавьте следующие строки:

. . .
conn ikev2-vpn
    . . .
    dpdaction=clear
    dpddelay=300s
    rekey=no

Затем мы настроим параметры IPSec «левой» стороны сервера. Каждый из следующих параметров обеспечивает конфигурацию сервера для приема соединений от клиентов и корректной идентификации себя. Вы добавите каждую из этих настроек в файл /etc/ipsec.conf после того, как вы изучите их и поймете, для чего они используются:

  • left=%any Значение %any гарантирует использование сервером сетевого интерфейса при получении входящих соединений для последующей связи с клиентами. Например, если вы подключаете клиента через частную сеть, сервер будет использовать частный IP-адрес, где он получает трафик для остальной части подключения.
  • leftid=@server_domain_or_IP Эта опция контролирует имя, которое сервер показывает клиентам. При совмещении со следующей опцией leftcert, опция leftid обеспечивает совпадение настроенного имени сервера и различимого имени (DN), содержащегося в публичном сертификате.
  • leftcert=server-cert.pem Эта опция — это путь к публичному сертификату для сервера, который вы настроили на шаге 3. Без него сервер не сможет аутентифицировать себя с клиентами или завершить переговоры по настройке IKEv2.
  • leftsendcert=always Значение always гарантирует, что любой клиент, который подключается к серверу, всегда будет получать копию публичного сертификата сервера в рамках настроек первоначального соединения.
  • leftsubnet=0.0.0.0/0 Последняя опция «слева», которую вы добавите, указывает клиентам на подсети, которые доступны за сервером. В этом случае 0.0.0.0/0 используется для представления всего набора адресов IPv4, что означает, что сервер будет указывать клиентам передавать весь свой трафик через VPN по умолчанию.

Теперь, когда вы ознакомились с каждой из соответствующих опций «слева», добавьте их в файл следующим образом:

. . .
conn ikev2-vpn
    . . .
    left=%any
    leftid=@server_domain_or_IP
    leftcert=server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0

Далее мы можем настроить параметры IPSec клиента «справа». Каждый из следующих параметров указывает серверу, как принимать соединения от клиентов, как клиенты должны аутентифицироваться на сервере, а также сообщает диапазоны частных IP-адресов и серверы которые будут использовать клиенты.

  • right=%any Опция %any для стороны соединения right предписывает серверу принимать входящие соединения от удаленных клиентов.
  • rightid=%any Эта опция гарантирует, что сервер не будет отклонять соединения от клиентов, которые предоставляют идентификатор до создания зашифрованного туннеля.
  • rightauth=eap-mschapv2 Эта опция настраивает метод аутентификации, который будут использовать клиенты для аутентификации на сервере. eap-mschapv2 используется здесь для расширения возможностей совместимости и поддержки таких клиентов, как устройства на базе Windows, macOS и Android.
  • rightsourceip=10.10.10.0/24 Эта опция предписывает серверу назначать частные IP-адреса клиентам из указанного пула IP-адресов 10.10.10.0/24.
  • rightdns=8.8.8.8,8.8.4.4 Эти IP-адреса являются публичными интерпретаторами DNS Google. Вместо них можно использовать другие публичные интерпретаторы, интерпретаторы сервера VPN или любые другие, к которым у клиента есть доступ.
  • rightsendcert=never Эта опция сообщает серверу, что клиентам не нужно отправлять сертификат для аутентификации себя.

Теперь, когда вы ознакомились с необходимыми опциями «справа», добавьте следующие строки в /etc/ipsec.conf:

. . .
conn ikev2-vpn
    . . .
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.10.10.0/24
    rightdns=8.8.8.8,8.8.4.4
    rightsendcert=never

Теперь мы укажем StrongSwan запрашивать у клиента учетные данные пользователя при подключении:

. . .
conn ikev2-vpn
    . . .
    eap_identity=%identity

И наконец, добавьте следующие строки для поддержки клиентов на базе Linux, Windows, macOS, iOS и Android. Эти строки определяют различные алгоритмы обмена ключами, хэширования, аутентификации и шифрования (обычно их называют набор шифров), которые StrongSwan разрешит использовать разным клиентам.

. . .
conn ikev2-vpn
    . . .
    ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
    esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!

Каждый поддерживаемый набор шифров отделяется от других запятой. Например, chacha20poly1305-sha512-curve25519-prfsha512 — это один набор, а aes256gcm16-sha384-prfsha384-ecp384 — другой. Перечисленные здесь наборы шифров выбраны для обеспечения самых широких возможностей совместимости с клиентами на базе Windows, macOS, iOS, Android и Linux.

Полный файл конфигурации должен выглядеть следующим образом:

config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftid=@server_domain_or_IP
    leftcert=server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.10.10.0/24
    rightdns=8.8.8.8,8.8.4.4
    rightsendcert=never
    eap_identity=%identity
    ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
    esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!

Сохраните и закройте файл после того, как проверите, что все строки добавлены корректно. Если вы используете nano, нажмите CTRL X, Y, затем ENTER.

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

Шаг 6 — настройка брандмауэра и переадресации ip ядра

После завершения настройки StrongSwan нам нужно настроить брандмауэр, чтобы разрешить прохождение и перенаправление трафика VPN.

Если вы следовали указаниям модуля по начальной настройке сервера, у вас должен быть включен брандмауэр UFW. Если вы еще не настроили UFW, вам следует начать с добавления правила, разрешающего соединения SSH через брандмауэр, чтобы ваш текущий сеанс не был прерван при активации UFW:

  1. sudo ufw allow OpenSSH

Затем активируйте брандмауэр с помощью следующей команды:

  1. sudo ufw enable

Теперь добавьте правило, которое будет разрешать трафик UDP на стандартных портах IPSec 500 и 4500:

  1. sudo ufw allow 500,4500/udp

Затем мы откроем один из файлов конфигурации UFW, чтобы добавить несколько политик нижнего уровня для маршрутизации и перенаправления пакетов IPSec. Но прежде чем мы сможем сделать это, нам нужно определить, какой сетевой интерфейс на нашем сервере используется для доступа в Интернет. Определите этот интерфейс с помощью запроса устройства, связанного с маршрутом по умолчанию:

  1. ip route show default

Ваш публичный интерфейс должен содержать слово «dev». Например, в этом результате показан интерфейс с именем eth0, который выделен ниже:

default via your_server_ip dev eth0 proto static
Похожее:  Не могу войти в учетную запись Forza Horizon 4 :: Forza Horizon 4 General Discussions (Opinon, Feedback, Discussions)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *