Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Пример конфигурации и генерации сертификатов для установления IPsec Site-to-Site VPN.


Установление защищенного IPsec VPN соединения с аутентификацией по сертификатам можно разделить на следующие шаги:

  1. Предварительная настройка интерфейсов и маршрутизации на ELTEX ESR и CISCO iOS.
  2. Получение/выпуск корневого сертификата  - этот шаг выполняется на центрне сертификатов (Certificate Authority, CA).
  3. Выпуск ключевой пары и их импорт на CISCO iOS
  4. Конфигурция IPsec на CISCO iOS
  5. Выпуск ключевой пары (закрытого и открытого ключа) для ELTEX ESR
  6. Импорт корневого сертификата и ключевой пары на ELTEX ESR
  7. Конфигурция IPsec на ELTEX ESR

Предварительная настройка интерфейсов и маршрутизации

В предварительной конфигурации маршрутизатора ELTEX ESR разрешим прохождение UDP 500,4500 и ESP трафика в зону self для установления IPsec VPN:

esr# show running-config

object-group service IPsec
port-range 500
port-range 4500
exit

object-group network MAIN
ip address-range 192.0.2.2
exit

security zone untrusted
exit
security zone trusted
exit

interface gigabitethernet 1/0/1
security-zone untrusted
ip address 192.0.2.2/30
exit
interface gigabitethernet 1/0/2
security-zone trusted
ip address 192.168.10.1/24
exit
security zone-pair untrusted self
rule 10
description "IPsec"
action permit
match protocol udp
match destination-address MAIN
match destination-port IPsec
enable
exit
rule 20
description "ESP"
action permit
match protocol esp
match destination-address MAIN
enable
exit
rule 30
description "ICMP"
action permit
match protocol icmp
match destination-address MAIN
enable
exit
exit

security zone-pair trusted untrusted
rule 10
description "PERMIT ALL"
action permit
enable
exit
exit

ip route 0.0.0.0/0 192.0.2.1


В предварительной конфигурации маршрутизатора CISCO iOS настроим сетевые интерфейсы и маршрутизацию:

!
hostname cisco
!
ip domain name cisco.eltex.org
!
interface FastEthernet0/0
ip address 203.0.113.2 255.255.255.252
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 172.16.10.1 255.255.255.0
duplex auto
speed auto
!
ip route 0.0.0.0 0.0.0.0 203.0.113.1
!

ВАЖНО: Необходимо выставить корректную дату на оборудовании, так как сертификаты имеют дату выпуска и выпускаются на определенный срок.

Выставим дату в ручном режиме (так же можно использовать NTP):

esr# set date 12:00:00 14 November 2019

cisco# clock set 12:01:00 14 Nov 2019

Получение/выпуск корневого сертификата - этот шаг выполняется на центрне сертификатов (Certificate Authority, CA)

Для выпуска сертификатов в данном примере используются утилиты openssl.

ВАЖНО: Для использования внутри организации можно использовать self-signed сертификат, но для использования CA вне организации необходимо использовать сертификаты, выданные или подписанные сторонней организацией.

Генерируем секретный ключ:

openssl genrsa -out ca.key 2048

Создаём self-signed сертификат:

openssl req -new -x509 -sha1 -days 3650 -key ca.key -out ca.crt

Полученный CA сертификат (ca.crt) и секретный CA ключи (ca.key) будут использоваться для подписи запросов на сертификат VPN клиентов.

Выпуск ключевой пары и их импорт на CISCO iOS

Генерируем закрытый ключ на CISCO iOS:

cisco(config)#crypto key generate rsa general-keys

How many bits in the modulus [512]: 2048

% Generating 1024 bit RSA keys …[OK]

Настроим CA сервер с именем myca:

cisco(config)#crypto ca trustpoint myca
cisco(ca-trustpoint)#enrollment terminal
cisco(ca-trustpoint)#crl optional
cisco(ca-trustpoint)#exit


Копируем содержимое CA сертификата:

# cat ca.crt

-----BEGIN CERTIFICATE-----
MIID7TCCAtWgAwIBAgIJANdwKZKV0XNmMA0GCSqGSIb3DQEBBQUAMIGMMQswCQYD
...
yg==
-----END CERTIFICATE-----


И вставляем содержимое в консоль:
cisco(config)#crypto ca authenticate myca

Enter the base 64 encoded CA certificate.
End with a blank line or the word “quit” on a line by itself

-----BEGIN CERTIFICATE-----
MIID7TCCAtWgAwIBAgIJANdwKZKV0XNmMA0GCSqGSIb3DQEBBQUAMIGMMQswCQYD
...
yg==
-----END CERTIFICATE-----

% Do you accept this certificate? [yes/no]: yes
Trustpoint CA certificate accepted.
% Certificate successfully imported

Сформировать запрос на подписание (CSR, certificate signing request):

cisco(config)#crypto ca enroll myca

% Include the router serial number in the subject name? [yes/no]: yes
% The serial number in the certificate will be: 13A594C9
% Include an IP address in the subject name? [no]: no
Display Certificate Request to terminal? [yes/no]: yes
Certificate Request follows:

MIIBkzCB/QIBADAzMTEwDwYDVQQFEwgxM0E1OTRDOTAeBgkqhkiG9w0BCQIWEWNp
...
sdHxeJkU4jMILCs7dPzkzPPDpJID9NU=

Далее необходимо скопировать запрос из теминала и сформировать файл .csr на сервере центра сертификации для его подписания утилитой openssl:

# cat > cisco.csr

-----BEGIN CERTIFICATE REQUEST-----
MIIBkzCB/QIBADAzMTEwDwYDVQQFEwgxM0E1OTRDOTAeBgkqhkiG9w0BCQIWEWNp
...
sdHxeJkU4jMILCs7dPzkzPPDpJID9NU=
-----END CERTIFICATE REQUEST-----

Подписать запрос на сертификат (esr.csr) CA ключом (ca.key), который был выпущен ранее:

openssl x509 -req -days 3650 -sha1 -in cisco.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out certs/cisco.crt

Копируем содержимое подписанного сертификата:

# cat cisco.crt

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----


И вставляем содержимое в консоль CISCO iOS:

cisco(config)#crypto ca import myca certificate

Enter the base 64 encoded certificate.
End with a blank line or the word “quit” on a line by itself

—–BEGIN CERTIFICATE—–
...
—–END CERTIFICATE—–

% Router Certificate successfully imported

Конфигурция IPsec на CISCO iOS

Укажем DN из сертификата в качестве локального идентификатора:

cisco(config)#crypto isakmp identity dn

Настроим ISAKMP политику (фаза 1):

cisco(config)#crypto isakmp policy 10
cisco(config-isakmp)#encryption 3desc
cisco(config-isakmp)#authentication rsa-sig
cisco(config-isakmp)#group 2

Настроим IPsec политику (фаза 2):

cisco(config)#crypto ipsec transform-set TS esp-des esp-sha-hmac 
cisco(cfg-crypto-trans)#exit

Настроим трафик селекторы, используя ACL, и крипто карту:

cisco(config)#crypto map CMAP 10 ipsec-isakmp
cisco(config-crypto-map)#set peer 192.0.2.2
cisco(config-crypto-map)#set transform-set TS
cisco(config-crypto-map)#match address cryptoacl
cisco(config-crypto-map)#exit
cisco(config)#ip access-list extended cryptoacl
cisco(config-ext-nacl)#permit ip 172.16.10 0.0.0.255 192.168.10.0 0.0.0.255

Применим критпо карту на интерфейсе:

cisco(config)#int fastEthernet 0/0
cisco(config-if)#crypto map CMAP
cisco(config-if)#exit


Сгенерировать закрытый ключ для ELTEX ESR

Создать файл с атрибутами, приведенными ниже. Сохранить файл как openssl.cfg:

[req]
default_bits = 2048
default_keyfile = esr.key
distinguished_name = req_distinguished_name
req_extensions = req_ext

[req_distinguished_name]
commonName = Common Name (eg, YOUR name)
commonName_default = esrvpn.eltex.org

countryName = Country Name (2 letter code)
countryName_default = RU

stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Novosibirsk

localityName = Locality Name (eg, city)
localityName_default = NSK

0.organizationName = Organization Name (eg, company)
0.organizationName_default = ELTEX

[req_ext]
subjectAltName = @alt_names

[alt_names]
DNS.1 = esr.eltex.org


Сформировать запрос на подписание (CSR, certificate signing request) сертификата и закрытый ключ используя файл openssl.cfg:

openssl req -new -nodes -out esr.csr -config openssl.cfg

Результатом будет получен закрытый ключ (esr.key) и запрос на подписание сертификата (esr.csr).

Подписать запрос на сертификат (esr.csr) CA ключом (ca.key), который был выпущен ранее:

openssl x509 -req -days 3650 -sha1 -in esr.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out esr.crt

Результатом будет получен подписанный сертификат (esr.crt).

Загрузить корневой сертификат (ca.crt) , закрытый ключ (esr.key) и подписанный сертификат (esr.crt) на ELTEX ESR

Загрузка ключевой пары (esr.key и esr.crt), сертификата CA (ca.crt) и сертификат от CISCO iOS (cisco.crt) выполняется с USB Flash, либо посредством TFTP/FTP/SFTP/SCP.

Проверить имя USB Flash можно командой:

esr# sh storage-devices usb

Просмотреть содержимое:

esr# dir usb://<FLASH_NAME>

Копируем ключевую пару и сертификат CA:

esr# copy usb://<FLASH_NAME>:/ca.crt certificate:ca/ca.crt

esr# copy usb://<FLASH_NAME>:/esr.key certificate:server-key/esr.key

esr# copy usb://<FLASH_NAME>:/esr.crt certificate:server-crt/esr.crt

esr# copy usb://<FLASH_NAME>:/esr.crt certificate:server-crt/cisco.crt

Проверям сертификаты и ключ:

esr-# sh crypto certificates ca

File name Issuer From To

-------------------------------- ------------------------- ------------------------- -------------------------

ca.crt ru1?0???U????novosibirsk 11 14 03:02:48 2019 GMT 11 11 03:02:48 2029 GMT

esr# sh crypto certificates server-key

esr.key Private key: (2048 bit)

esr-# sh crypto certificates server-crt

File name Issuer From To

-------------------------------- ------------------------- ------------------------- -------------------------

cisco.crt ru1?0???U????novosibirsk 11 14 03:36:48 2019 GMT 11 11 03:36:48 2029 GMT

esr.crt ru1?0???U????novosibirsk 11 14 03:25:58 2019 GMT 11 11 03:25:58 2029 GMT

Конфигурция IPsec на ELTEX ESR

Настроим ISAKMP политику (фаза 1):

esr(config)# security ike proposal IKEPROP
esr(config-ike-proposal)# encryption algorithm 3des
esr(config-ike-proposal)# dh-group 2
esr(config-ike-proposal)# exit

Укажем сертификаты и метод аутентификации:

esr(config)# security ike policy IKEPOLICY
esr(config-ike-policy)# certificate ca ca.crt
esr(config-ike-policy)# certificate local-crt esr.crt
esr(config-ike-policy)# certificate local-crt-key esr.key
esr(config-ike-policy)# certificate remote-crt cisco.crt
esr(config-ike-policy)# authentication method public-key
esr(config-ike-policy)# proposal IKEPROP
esr(config-ike-policy)# exit

Настроим трафик селекторы и режим IPsec:

esr(config)# security ike gateway IKEGW
esr(config-ike-gw)# ike-policy IKEPOLICY
esr(config-ike-gw)# local address 192.0.2.2
esr(config-ike-gw)# local network 192.168.10.0/24
esr(config-ike-gw)# remote address 213.0.113.2
esr(config-ike-gw)# remote network 172.16.10.0/24
esr(config-ike-gw)# mode policy-based
esr(config-ike-gw)# exit

Настроим IPsec политику (фаза 2)

esr(config)# security ipsec proposal IPSECPROP
esr(config-ipsec-proposal)# encryption algorithm des
esr(config-ipsec-proposal)# pfs dh-group 2
esr(config-ipsec-proposal)# exit

esr(config)# security ipsec policy IPSECPOLICY
esr(config-ipsec-policy)# proposal IPSECPROP
esr(config-ipsec-policy)# exit

Установим режим установления IPsec - по наличию входного или выходного трафика (route):

esr(config)# security ipsec vpn IPSECVPN
esr(config-ipsec-vpn)# mode ike
esr(config-ipsec-vpn)# ike establish-tunnel route
esr(config-ipsec-vpn)# ike gateway IKEGW
esr(config-ipsec-vpn)# ike ipsec-policy IPSECPOLICY
esr(config-ipsec-vpn)# enable
esr(config-ipsec-vpn)# exit

Диагностика подключения IPsec VPN

Проверим доступность IP адресов из LAN сегметов:

esr# ping 172.16.10.1 source ip 192.168.10.1

PING 172.16.10.1 (172.16.10.1) from 192.168.10.1 : 56(84) bytes of data.

.!!!!

--- 172.16.10.1 ping statistics ---

5 packets transmitted, 4 received, 20% packet loss, time 4039ms

rtt min/avg/max/mdev = 4.544/24.296/74.151/28.867 ms

Проверим статус IPsec VPN соединения:

esr# sh security ipsec vpn status

Name Local host Remote host Initiator spi Responder spi State

------------------------------- --------------- --------------- ------------------ ------------------ -----------

IPSECVPN 192.0.2.2 213.0.113.2 0x35475c4c0ed0c90f 0x26487c26958d84a4 Established

esr# sh security ipsec vpn status IPSECVPN

Currently active IKE SA:

Name: IPSECVPN

State: Established

Version: v1-only

Unique ID: 1

Local host: 192.0.2.2

Remote host: 213.0.113.2

Role: Initiator

Initiator spi: 0x35475c4c0ed0c90f

Responder spi: 0x26487c26958d84a4

Encryption algorithm: des

Authentication algorithm: sha1

Diffie-Hellman group: 2

Established: 12 seconds ago

Rekey time: 12 seconds

Reauthentication time: 2 hours, 44 minutes and 5 seconds

Child IPsec SAs:

Name: IPSECVPN

State: Installed

Protocol: esp

Mode: Tunnel

Encryption algorithm: des

Authentication algorithm: sha1

Rekey time: 42 minutes and 7 seconds

Life time: 59 minutes and 48 seconds

Established: 12 seconds ago

Traffic statistics:

Input bytes: 336

Output bytes: 336

Input packets: 4

Output packets: 4

-------------------------------------------------------------