Статья описывает два способа создания безопасных сетевых подключений между Ubuntu 16 и Windows Server 2012: посредством IPSec и с использованием IPSec/L2TP

Предполагается, что хосту с Windows Server 2012 присвоено имя windows.domain.local и IP-адрес 1.1.1.1, а хосту с Ubuntu 16 - имя ubuntu.domain.local и IP-адрес 2.2.2.2


IPSec


  • на windows.domain.local в свойствах брандмауэра ("Брандмауэр Windows в режиме повышенной безопасности - Свойства - Параметры IPSec - Настроить") указываем следующие параметры IPSec
  • обмен ключами: целостность - SHA-384, шифрование - AES-CBC 256, алгоритм обмена ключами - Elliptic Curve Diffie-Hellman P-384
  • защита данных: протокол - ESP, алгоритм шифрования - AES-GCM-256, алгоритм проверки целостности - AES-GMAC-256
  • "Обязательное шифрование для всех правил безопасности подключений, использующих эти параметры"
  • создаем правило безопасности подключения со следующими параметрами
  • конечная точка 1 - 1.1.1.1
  • конечная точка 2 - 2.2.2.2
  • тип протокола - любой
  • режим проверки подлинности - требовать входящие и исходящие
  • проверка подлинности - общий ключ "shared_key"
  • на ubuntu.domain.local устанавливаем пакет strongSwan
  • apt-get install strongswan
  • заменяем содержимое файла /etc/ipsec.conf следующим
  • conn ubuntu-windows
      left=2.2.2.2
      right=1.1.1.1
      keyexchange=ikev1
      type=transport
      authby=psk
      ike=aes256-sha384-ecp384!
      esp=aes256gcm128-aes256gmac!
      auto=route
    
  • заменяем содержимое файла /etc/ipsec.secrets следующим
  • 2.2.2.2 1.1.1.1 : PSK "shared_key"
  • обновляем конфигурацию IPSec
  • ipsec reload
  • пробуем "попинговать" windows.domain.local с ubuntu.domain.local и наоборот
  • Замечание: на хостах, конечно же, должны быть разрешены входящие ICMP эхо-запросы
  • проверяем, что безопасные соединения установлены, для чего
  • на windows.domain.local в настройках брандмауэра (Брандмауэр Windows в режиме повышенной безопасности - Наблюдение - Сопоставления безопасности) проверяем наличие сопоставлений безопасности для IP-адресов 1.1.1.1 и 2.2.2.2 и для основного, и для быстрого режимов
  • на ubuntu.domain.local выполняем команду ipsec status


IPSec/L2TP


  • на windows.domain.local создаем локального пользователя l2tp_user с паролем some_password
  • устанавливаем роль "Удаленный доступ" со службами роли "DirectAccess и VPN (RAS)" и "Маршрутизация"
  • в консоли "Маршрутизация и удаленный доступ" выполняем необходимые для работы L2TP-сервера настройки, а именно
  • включаем L2TP-порты
  • настраиваем NAT
  • указываем диапазон назначаемых клиентам IP-адресов
  • включаем проверку подлинности с использованием MS-CHAPv2
  • указываем в качестве общего ключа для L2TP-подключений значение "shared_key"
  • на ubuntu.domain.local устанавливаем пакет strongSwan
  • apt-get install strongswan
  • заменяем содержимое файла /etc/ipsec.conf следующим
  • conn ubuntu-windows-ipsec
      left=2.2.2.2
      right=1.1.1.1
      leftprotoport=17/1701
      rightprotoport=17/1701
      keyexchange=ikev1
      type=transport
      authby=psk
      ike=aes256-sha1-ecp384!
      esp=aes256-sha1!
      auto=route
    
  • Замечание: по умолчанию в Windows Server 2012 используются именно такие параметры для IKE и ESP
  • заменяем содержимое файла /etc/ipsec.secrets следующим
  • 2.2.2.2 1.1.1.1 : PSK "shared_key"
  • обновляем конфигурацию IPSec
  • ipsec reload
  • устанавливаем пакет xl2tpd
  • apt-get install xl2tpd
  • заменяем содержимое файла /etc/xl2tpd/xl2tpd.conf следующим
  • [lac ubuntu-windows-l2tp]
    lns = 1.1.1.1
    pppoptfile = /etc/ppp/options
    autodial = yes
    
  • заменяем содержимое файла /etc/ppp/options следующим
  • noauth
    user l2tp_user
    
  • заменяем содержимое файла /etc/ppp/chap-secrets следующим
  • l2tp_user * some_password
  • перезапускаем службу xl2tpd
  • service xl2tpd restart
  • проверяем, что в списке интерфейсов появился PPP-интерфейс, а в таблице маршрутизации - маршрут до хоста на другом конце PPP-соединения, и пробуем "попинговать", используя IP-адреса соответствующих PPP-интерфейсов, windows.domain.local с ubuntu.domain.local и наоборот
  • проверяем, что безопасные соединения установлены, для чего
  • на windows.domain.local в настройках брандмауэра (Брандмауэр Windows в режиме повышенной безопасности - Наблюдение - Сопоставления безопасности) проверяем наличие сопоставлений безопасности для IP-адресов 1.1.1.1 и 2.2.2.2 и для основного, и для быстрого режимов
  • на ubuntu.domain.local выполняем команду ipsec status
  • для взаимодействия с доступными через windows.domain.local подсетями
  • создаем файлы /etc/ppp/ip-up.d/custom_routes и /etc/ppp/ip-down.d/custom_routes
  • добавляем в файл /etc/ppp/ip-up.d/custom_routes
  • route add -net 10.100.200.0 netmask 255.255.255.0 dev $1
  • добавляем в файл /etc/ppp/ip-down.d/custom_routes
  • route del -net 10.100.200.0 netmask 255.255.255.0
  • Замечание: через переменную $1 в скрипт передается имя PPP-интерфейса
  • при необходимости использования windows.domain.local в качестве шлюза по умолчанию
  • добавляем в файл /etc/ppp/options
  • defaultroute
    replacedefaultroute
    
  • добавляем в файл /etc/ppp/ip-up.d/custom_routes
  • route add -host 1.1.1.1 gw 3.3.3.3
  • добавляем в файл /etc/ppp/ip-down.d/custom_routes
  • route del -host 1.1.1.1
  • Замечание 1: указанные изменения в файлах custom_routes необходимы потому, что после замены шлюза L2TP-трафик к windows.domain.local будет направляться через туннель, а не на "старый" шлюз по умолчанию, в результате чего L2TP- и, как следствие, PPP-соединения будут разрываться
  • Замечание 2: 3.3.3.3 - адрес "старого" шлюза по умолчанию

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