IPSec туннель между Ubuntu Linux 16.04 и Cisco ASA 5505 с использованием pre-shared key

Рассмотрим настройку site-to-site vpn с помощью туннеля ipsec между Cisco ASA 5505 (ios 9.0) и Ubuntu Linux 16.04 (racoon, ipsec-tools) с использованием pre-shared ключа.

Процесс настройки состоит из двух частей:

  • Настройка соединения на стороне Linux
  • Настройка соединения на стороне Cisco ASA

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

  • алгоритм шифрования — AES 256
  • хеш-алгоритм — sha1
  • «левая» подсеть (за Linux) — xxx.xxx.xxx.xxx/24
  • «правая» подсеть (за Cisco) — yyy.yyy.yyy.yyy/24
  • ip на хосте Linux — xx1.xx1.xx1.xx1
  • ip на Cisco — yy1.yy1.yy1.yy1
  • реальник, через который Linux натится в интернет — x1.x1.x1.x1
  • реальник, через который Cisco натится в интернет — y1.y1.y1.y1

Схема сети

Настройка соединения на стороне Linux

Прежде всего необходимо установить racoon:

Добавляем запись о ключе (pre-shared key, PSK) в файл /etc/racoon/psk.txt:

Сгенерировать секретный ключ можно, например, командой pwgen -y 24

Задаем необходимые параметры в файле /etc/racoon/racoon.conf:

Добавляем записи о туннелях (ACL) в файле /etc/ipsec-tools.conf

Добавляем маршрут для верного направления пакетов (ethN — интерфейс хоста Linux, на котором задан адрес xx1.xx1.xx1.xx1):

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

Необходимо убедиться, что включен форвардинг пакетов:

Перезапускаем racoon:

На данном этапе настройка racoon завершена, переходим к настройке Cisco ASA 5505.

Настройка соединения на стороне Cisco ASA

Параметры сетевых интерфейсов опустим. Важно, что интерфейс, подключенный ко внутренней подсети, называется inside, а подключенный к сети провайдера — outside.

Для удобства создадим object-group для «левой» и «правой» подсетей. Это позволит в будущем легко манипулировать подсетями, в случае их изменения/появления/удаления:

object-group network VPN-NETS
 network-object xxx.xxx.xxx.xxx 255.255.255.0

object-group network LOCAL-NETS
 network-object yyy.yyy.yyy.yyy 255.255.255.0

Добавляем необходимые access list:

access-list VPN-ACL extended permit ip object-group LOCAL-NETS object-group VPN-NETS
access-list VPN-ACL extended permit ip object-group VPN-NETS object-group LOCAL-NETS

Настройка tunnel group, задает параметры аутентификации на этапе первой фазы:

tunnel-group x1.x1.x1.x1 type ipsec-l2l
tunnel-group x1.x1.x1.x1 ipsec-attributes
 ikev1 pre-shared-key MyVerySecretKey

Настройки политики ISAKMP

crypto ikev1 policy 5
 authentication pre-share
 encryption aes-256
 hash sha
 group 5
 lifetime 86400

Способ идентификации удаленного пира

crypto isakmp identity address

Включение ISAKMP на внешнем интерфейсе

crypto ikev1 enable outside

Параметры второй фазы

crypto ipsec ikev1 transform-set ESP-AES-256-SHA esp-aes-256 esp-sha-hmac

Таймауты для SA

crypto ipsec security-association lifetime seconds 28800
crypto ipsec security-association lifetime kilobytes 4608000

Параметры туннеля

crypto map VPN-MAP 10 match address VPN-ACL
crypto map VPN-MAP 10 set peer x1.x1.x1.x1
crypto map VPN-MAP 10 set ikev1 transform-set ESP-AES-256-SHA
crypto map VPN-MAP interface outside

Так же, как и в случае с Linux, добавляем настройку, исключающую подсети VPN из NAT:

nat (inside,outside) source static LOCAL-NETS LOCAL-NETS destination static VPN-NETS VPN-NETS

Настройка завершена. Подсети xxx.xxx.xxx.xxx и yyy.yyy.yyy.yyy должны быть доступны.

css.php