Создание подключения к IPSEC

Для настройки нового IPSEC туннеля необходимо:
— определить сетевые параметры будущего туннеля
— создать RSA-сертификат клиента
— настроить конфигурацию со стороны сервера
— настроить конфигурацию со стороны клиента

В качестве клиента рассматривается роутер Mikrotik c RouterOS v=>6.46

Сетевые параметры будущего туннеля

Текущий сервер IPSEC имеет адрес  server.example.com
Для клиента необходимо создать DNS-запись в домене example.com в соответствии с распоряжением руководителя IT-отдела. В данном примере будем использовать имя testing.example.com
Со стороны сервера используется подсеть 172.16.0.0/24 — именно в нее будет обеспечен доступ через туннель.
Подсеть со стороны клиента устанавливается в соответствии с распоряжением руководителя IT-отдела. В примере будет использоваться подсеть 192.168.88.0/24 и локальный адрес роутера 192.168.88.1
Роутер может находиться за NAT, использование «белого» IP не обязательно, однако необходимо убедиться, что провайдер пропускает через свою сеть трафик на порты UPD/500 и UDP/4500 и протокол ESP

RSA-сертификат клиента

Для создания сертификатов на сервере VPN имеется утилита easyrsa, расположенная в каталоге /opt/easy-rsa-ipsec/easyrsa3/

Переходим в каталог:

# cd /opt/easy-rsa-ipsec/easyrsa3

Для формирования в сертификате правильного поля «DNS» присваиваем переменной значение имени клиета:

# export EASYRSA_REQ_CN="testing.example.com" 

Создаем запрос. В интерактивном режиме программа предложит создать пароль на сертификат, который необходимо записать и подтвердить имя клиента.

# ./easyrsa gen-req testing.example.com

Вывод программы:

# ./easyrsa gen-req testing.example.com
Using SSL: openssl OpenSSL 1.1.1d  10 Sep 2019
Generating a RSA private key
......................................................+++++
..............................................................................+++++
writing new private key to '/opt/easy-rsa-ipsec/easyrsa3/pki/easy-rsa-28666.RoOCVQ/tmp.X6gzfJ'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [testing.example.com]:

Keypair and certificate request completed. Your files are:
req: /opt/easy-rsa-ipsec/easyrsa3/pki/reqs/testing.example.com.req
key: /opt/easy-rsa-ipsec/easyrsa3/pki/private/testing.example.com.key

Необходимо подписать запрос. Для подтверждения данных введите yes, а для подписания закрытой части корневого сертификата введите пароль корневого сертификата:

# ./easyrsa sign-req client testing.example.com

Вывод программы:

# ./easyrsa sign-req client testing.example.com
Using SSL: openssl OpenSSL 1.1.1d  10 Sep 2019

You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a client certificate for 1080 days:

subject=
    commonName                = testing.example.com

Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Using configuration from /opt/easy-rsa-ipsec/easyrsa3/pki/easy-rsa-28716.lm5m2G/tmp.T3Zwke
Enter pass phrase for /opt/easy-rsa-ipsec/easyrsa3/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'testing.example.com'
Certificate is to be certified until Jan 24 17:38:08 2023 GMT (1080 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /opt/easy-rsa-ipsec/easyrsa3/pki/issued/testing.example.com.crt

В результате в хранилище сертификатов сформировались следующие файлы:
/opt/easy-rsa-ipsec/easyrsa3/pki/issued/testing.example.com.crt — сертификат клиента
/opt/easy-rsa-ipsec/easyrsa3/pki/private/testing.example.com.key — закрытый ключ

Также в хранилище имеются другие необходимые файлы:
/opt/easy-rsa-ipsec/easyrsa3/pki/ca.crt — корневой сертификат
/opt/easy-rsa-ipsec/easyrsa3/pki/issued/server.example.com .crt — сертификат сервера

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

Настройка конфигурации со стороны сервера

Для каждого клиентского туннеля на сервере создается типовая конфигурация, которую необходимо записать в конец файла /etc/ipsec.conf

конфигурация имеет следующий вид:

conn testing
        auto=add
        compress=no
        type=tunnel
        keyexchange=ikev2
        fragmentation=yes
        forceencaps=yes
        dpdaction=clear
        dpddelay=300s
        rekey=no
        left=%any
        leftid=@server.example.com
        leftcert=/etc/ipsec.d/certs/server.example.com.crt
        leftsendcert=always
        leftsubnet=172.16.0.0/24
        right=%any
        rightid=@testing.example.com
        rightsubnet=192.168.88.0/24

Где изменению подлежат следующие параметры:
conn — имя соединения, соответствует DNS-имени подсоединяемого роутера, в примере — testing
rightid — имя клиента, соответствует полному (FQDN) DNS-имени подсоединяемого роутера, в примере —  testing.example.com (указание символа — обязательно)
rightsubnet — подсеть клиента, в примере — 192.168.88.0/24

Остальные параметры редактировать не требуется.

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

# ipsec reload

Если конфигурация записана верно, в выводе команды ipsec status отобразится созданное новое подключение

Настройка конфигурации со стороны клиента

Предполагается, что на клиентском роутере выполнена первоначальная настройка:
— установлены настройки интерфейса WAN, организован доступ в интернет
— установлены настройки интерфейса LAN
— установлено правильное время и часовой пояс. Рекомендуется использовать пакет NTP из набора extra-packages.
— Фаерволл имеет настройки «по умолчанию»

Необхоидмо выполнить импорт сертификатов на роутер. Для этого через интерфейс winbox или другим удобным способом загружаем на роутер следующие ранее полученные файлы:
testing.example.com .crt — сертификат клиента
testing.example.com .key — закрытый ключ
ca.crt — корневой сертификат
server.example.com.crt — сертификат сервера

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

/certificate import file-name=ca.crt 
/certificate import file-name=server.example.com.crt
/certificate import file-name=testing.example.com.crt
/certificate import file-name=testing.example.com.key passphrase=1234567890

Сертификаты отобразятся в списке:

/certificate print
Flags: K - private-key, L - crl, C - smart-card-key, A - authority, I - issued, R - revoked, E - expired, T - trusted
 #         NAME                COMMON-NAME               SUBJECT-ALT-NAME
 0       T ca.crt_0            server.example.com        
 1 K     T testing.ga...       testing.example.com   DNS:testing.example.com 
 2       T server.gazss... server.example.com      DNS:server.example.com

Создаем профили подключения:

/ip ipsec profile add name=ike2 hash-algorithm=sha1 enc-algorithm=aes-128,3des dh-group=modp2048,modp1024 lifetime=1d proposal-check=obey nat-traversal=yes dpd-interval=2m dpd-maximum-failures=5

/ip ipsec proposal add name=ike2 auth-algorithms=sha512,sha256 enc-algorithms=aes-256-cbc lifetime=30m pfs-group=none

/ip ipsec policy group add name=ike2

/ip ipsec mode-config add name=ike2 responder=no

Создаем подключение. В качестве адреса address указывается адрес сервера IPSEC:

/ip ipsec peer add name="server.example.com" address=server.example.com profile=ike2 exchange-mode=ike2 send-initial-contact=yes

Указываем параметры авторизации, внимательно проверяя имена сертификатов и FQDN:

/ip ipsec identity add peer=server.example.com auth-method=digital-signature my-id=fqdn:testing.example.com match-by=certificate certificate=testing.example.com.crt_0 remote-certificate=server.example.com.crt_0 generate-policy=no policy-template-group=ike2

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

/ip ipsec policy add dst-address=172.16.0.0/24 peer=server.example.com proposal=ike2 sa-dst-address=server.example.com sa-src-address=0.0.0.0 src-address=192.168.88.0/24 tunnel=yes

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

/ip ipsec active-peers print

/ip ipsec installed-sa print

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

/ip firewall nat add action=accept chain=srcnat dst-address=172.16.0.0/24
/ip firewall filter add action=accept chain=forward dst-address=172.16.0.0/24 src-address=192.168.88.0/24
/ip firewall filter add action=accept chain=forward dst-address=192.168.88.0/24 src-address=172.16.0.0/24

Проверка туннеля
Со стороны Mikrotik проверить работу туннеля можно с помощью команды:

/ping address=172.16.0.100 src-address=192.168.88.1

где src-address — локальный адрес роутера

Отладка туннеля

Для включения отладки со стороны сервера IPSEC, необходимо в файле /etc/strongswan.d/charon-logging.conf
привести секцию charon к следующему виду:

charon {
    filelog {
        charon {
                 path = /var/log/charon.log
                time_format = %b %e %T
                ike_name = yes
                append = no
                default = 2
                flush_line = yes
                }
    }
    syslog {
    }
}

И перезапустить демон

# service ipsec restart

В результате отладочные сообщения IPSEC будут записываться в файл /var/log/charon.log

На Mikrotik отладку IPSEC можно включить командой:

/system logging add action=memory topics=ipsec
0

Автор публикации

не в сети 3 дня

conter

0
Комментарии: 4Публикации: 54Регистрация: 19-10-2019

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

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

Этот сайт защищен reCAPTCHA и применяются Политика конфиденциальности и Условия обслуживания применять.

Авторизация
*
*
Этот сайт защищен reCAPTCHA и применяются Политика конфиденциальности и Условия обслуживания применять.

Докажи, что человек


Генерация пароля
Этот сайт защищен reCAPTCHA и применяются Политика конфиденциальности и Условия обслуживания применять.