Меню

Ubuntu настройка соединения ipsec



Как настроить VPN (site-to-site) на основе IPsec с помощью Strongswan в Debian и Ubuntu?

Strongswan — это кроссплатформенная, полнофункциональная и широко используемая реализация VPN с открытым исходным кодом, работающая на Linux, FreeBSD, OS X, Windows, Android и iOS. Это прежде всего демон управления ключами, который поддерживает протоколы обмена ключами в Интернете (IKEv1 и IKEv2) для установления security associations (SA) между двумя узлами. Но как настроить VPN (site-to-site) на основе IPsec с помощью Strongswan в Debian и Ubuntu?

В этой статье мы опишем, как настроить межсетевые шлюзы IPSec VPN с использованием StrongSwan на серверах Ubuntu и Debian. Под сервером мы подразумеваем, что у каждого шлюза безопасности есть подсеть. Кроме того, одноранговые узлы будут аутентифицировать друг друга, используя предварительный общий ключ (PSK).

Тестовая среда

Не забудьте заменить следующие IP-адреса реальными IP-адресами для настройки среды:

Site 1 Gateway (sedicomm-devgateway)
Site 2 Gateway (sedicomm-prodgateway)

Шаг 1. Включение пересылки пакетов в ядре

1. Во-первых, вам нужно настроить ядро ​​для включения пересылки пакетов, добавив соответствующие системные переменные в файл конфигурации /etc/sysctl.conf на обоих шлюзах безопасности:

Найдите следующие строки, раскомментируйте их и установите их значения, как показано ниже (для получения дополнительной информации прочитайте комментарии в файле):

2. Затем загрузите новые настройки, выполнив следующую команду:

3. Если у вас включена служба брандмауэра UFW, вам нужно добавить следующие правила в файл конфигурации /etc/ufw/before.rules непосредственно перед правилами фильтрации в любом из шлюзов безопасности:

Site 1 Gateway (sedicomm-devgateway)
Site 2 Gateway (sedicomm-prodgateway)

4. После добавления правил брандмауэра примените новые изменения, перезапустив UFW, как показано ниже:

Шаг 2: Установка strongSwan в Debian и Ubuntu

5. Обновите кэш пакетов на обоих шлюзах безопасности и установите пакет strongswan с помощью диспетчера пакетов APT:

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

Шаг 3: Настройка шлюзов безопасности

7. Далее необходимо настроить шлюзы безопасности с помощью файла конфигурации /etc/ipsec.conf:

Site 1 Gateway (sedicomm-devgateway)

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

Site 2 Gateway (sedicomm-prodgateway)

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

Вот значение каждого параметра конфигурации:

  • config setup — указывает общую информацию о конфигурации для IPSec, которая применяется ко всем соединениям.
  • charondebug — определяет, сколько выходных данных отладки Charon должно быть зарегистрировано.
  • uniqueids — указывает, должен ли конкретный идентификатор оставаться уникальным.
  • conn prodgateway-to-devgateway — определяет имя соединения.
  • type — определяет тип соединения.
  • auto — указывает как обрабатывать соединение при запуске или перезапуске IPSec.
  • keyexchange — определяет какую версию протокола IKE использовать.
  • authby — определяет, как одноранговые узлы должны аутентифицировать друг друга.
  • left — определяет IP-адрес интерфейса публичной сети левого участника.
  • leftsubnet — указывает частную подсеть позади левого участника.
  • right — указывает IP-адрес общедоступного сетевого интерфейса правого участника.
  • rightsubnet — указывает частную подсеть позади правого участника.
  • ike — определяет список используемых алгоритмов шифрования/аутентификации IKE/ISAKMP SA. Вы можете добавить список через запятую.
  • esp — определяет список алгоритмов шифрования/аутентификации ESP, которые будут использоваться для соединения. Вы можете добавить список через запятую.
  • aggressive — указывает, использовать ли Aggressive или Main режим.
  • keyingtries — указывает количество попыток согласования соединения.
  • ikelifetime — указывает, как долго должен быть доступным канал соединения ключей до повторного согласования.
  • lifetime — определяет, как долго должен длиться конкретный экземпляр соединения, от успешного согласования до истечения срока действия.
  • dpddelay — указывает временной интервал, с которым R_U_THERE/INFORMATIONAL сообщения отправляются одноранговому узлу.
  • dpdtimeout — указывает интервал времени ожидания, после которого все соединения с одноранговым узлом удаляются в случае неактивности.
  • dpdaction — определяет, как использовать протокол Dead Peer Detection (DPD) для управления соединением.

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

9. Затем добавьте PSK в файл /etc/ipsec.secrets на обоих шлюзах:

Скопируйте и вставьте следующую строку:

10. Перезапустите программу IPSec и проверьте её состояние для просмотра подключений:

11. Наконец, убедитесь, что вы можете получить доступ к частным подсетям с любого шлюза безопасности, выполнив команду ping:

12. Кроме того, вы можете остановить и запустить IPSec, как показано ниже:

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

На этом всё! В этой статье мы описали, как настроить IPSec VPN типа «site-to-site» с использованием strongSwan на серверах Ubuntu и Debian, где оба шлюза безопасности были настроены для аутентификации друг друга с помощью PSK. Если у вас есть какие-либо вопросы или мысли, делитесь ими с нами ниже.

Читайте также:  После изменения настроек монитора не включается

Спасибо за уделенное время на прочтение статьи о том, как настроить VPN (site-to-site) на основе IPsec с помощью Strongswan в Debian и Ubuntu!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Источник

Information Security Squad

stay tune stay secure

Настройка IPSec VPN-сервера с L2TP и Cisco IPsec на Ubuntu / CentOS / Debian

Вы пытались настроить свой собственный VPN-сервер IPsec всего за несколько минут, используя IPsec / L2TP и Cisco IPsec для CentOS, Ubuntu и Debian Linux?

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

IPsec VPN гарантирует, что весь сетевой трафик зашифрован, чтобы предотвратить перехват между вами и VPN-сервером.

Это очень рекомендуемая настройка, особенно для парней, использующих незащищенные сети для доступа к Интернету, например, в аэропортах, например, в кафе, гостиничных номерах e.y.c.

Настройка среды

Эта настройка поддерживается в следующих операционных системах:

  • Ubuntu 18.04 (Bionic), 16.04 (Xenial) или 14.04 (Trusty)
  • Debian 9 (Stretch) или 8 (Jessie)
  • CentOS 7 (x86_64)
  • CentOS 6 (x86_64)

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

Обновление Ubuntu / Debian

Обновление CentOS 7 / CentOS 6

Это обеспечит обновление всех пакетов на вашем Сервере.

Настройка IPSec VPN-сервера с L2TP и Cisco IPsec на Ubuntu / CentOS / Debian

Мы будем использовать скрипт, облегчающий развертывание IPSec VPN-сервера с L2TP и Cisco IPsec в дистрибутивах Ubuntu / CentOS / Debian Linux.

Этот скрипт был написан Лин Сонгом.

Настройка IPsec VPN-сервера на Ubuntu 18.04 / Ubuntu 16.04 / Debian

Перед запуском скрипта необходимо обновить системные пакеты.

Это полностью автоматизированная настройка сервера IPsec VPN, без ввода пользователем чего-либо.

Настройка IPsec VPN-сервера на CentOS 7 / CentOS 6

Для сервера CentOS запустите следующую команду

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

Если вы хотите определить свои собственные учетные данные VPN, отредактируйте vpnsetup.sh перед выполнением.

Задайте значения внутри одинарных кавычек

Включить службу ipsec для запуска при загрузке системы

Это включает оптимизацию sysctl.conf для повышения производительности.

Управление пользователями VPN

По умолчанию создается учетная запись пользователя для входа в систему VPN.

Если вы хотите добавить, отредактировать или удалить пользователей, прочитайте руководство пользователя IPSec VPN.

IPsec PSK (pre-shared key) сохраняется в ./etc/ipsec.secrets

Все пользователи VPN используют один и тот же IPsec PSK.

Вы можете установить новый, изменив строку:

Для IPsec / L2TP пользователи VPN указаны в /etc/ppp/chap-secrets. Формат этого файла:

Для IPsec / XAuth («Cisco IPsec») пользователи VPN указаны в /etc/ipsec.d/passwd. Формат этого файла:

Пароли в этом файле соленые и хешированные.

Этот этап может быть осуществлен с использованием, например, утилита openssl:

Наконец, перезапустите службы, если вы перешли на новый PSK.

Для добавления, редактирования или удаления пользователей VPN перезапуск обычно не требуется.

Подключение компьютера к VPN

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

Для этого обратитесь к следующим руководствам:

Источник

Использование IPSEC в Linux при настройке соединений VPN типа «сеть-сеть» и «точка-точка»

Многие организации по всему миру для связи своих отдельных офисов используют всевозможные методы их физического соединения. Это могут быть как выделенные цифровые линии, так и VPN — Virtual Private Networks, которые значительно дешевле их физических аналогов. Используя, в общем, те же подходы, что и выделенные линии, VPN могут объединять несколько локальных сетей в одну и шифровать трафик для сокрытия передаваемой информации. В случае использования шифрования в технологии VPN, как правило, применяются открытые стандарты. При этом трафик передается поверх IP и использует в качестве транспортного уровня датаграммы.

Технически организация VPN может быть выполнена как программными средствами, так и аппаратными. В Linux в частности нашла применение технология FreeS/Wan, использующая стандартную реализация протокола безопасности IPSEC(Безопасноснай IP — Internet Protocol Security). Эти решения, реализованные как программно, так и аппаратно, функционируют как маршрутизаторы на концах VPN-соединений. При передаче клиентом пакета, он пересылает его на этот специализированный маршрутизатор, который добавляет к пакету заголовок проверки подлинности (Authentication Header, (AH)). После кодирования этих данных и добавления к ним инструкций по декодированию и обработке, они передаются на другой конечный специализированный маршрутизатор, принимающий эти пакеты. После приема пакета, конечный маршрутизатор раскодирует его, отбрасывая заголовок, и передает пакет конечному пользователю по месту назначения.

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

Читайте также:  Mta сбитые настройки что делать

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

Одна из реализаций стандарта VPN — это Internet Protocol SECurity, IPsec, который достаточно надежно удовлетворяет потребности разнообразных клиентов по подключению их филиалов или удалённых пользователей к своим сетям.

Общие сведения об IPSEC

IPSEC, в общем случае, служит для поддержки безопасных соединений между узлами и сетями в глобальной сети Интернет. Он может работать в конфигурации «узел-узел» (один компьютер соединяется с другим) или «сеть-сеть» (одна локальная/глобальная сеть соединяется с другой). Реализация IPsec использует протокол обмена ключами в Интернете (Internet Key Exchange, IKE), разработанный комитетом по техническому развитию Интернета (Internet Engineering Task Force, IETF) для взаимной проверки подлинности и соответствия параметров безопасности между подключающимися системами или сетями.

Процесс соединения IPsec разделяется на два логических этапа. На первом этапе узел IPsec устанавливает подключение к удалённому узлу или сети. Удалённый узел/сеть проверяет учётные данные запрашивающего узла и обе стороны согласуют способ проверки подлинности, применяемый в соединении. Обычно для проверки подлинности узла IPSec используется алгоритм с предварительным общим ключом. В случае с IPsec-соединением с применением предварительного общего ключа, оба узла должны использовать один ключ, и тогда они смогут перейти ко второму этапу установки соединения.

Второй этап соединения IPsec между узлами IPSec создаётся условным сравнением безопасности (security association, SA). При этом в базу данных SA вносится информация о конфигурации — метод шифрования, способы обмена секретными ключами сеанса и некоторые другие параметры. Этот этап и управляет соединением IPsec между узлами и сетями, разнесенными в пространстве глобальной сети.

Рассмотрим реализацию протокола IPSEC на примере дистрибутива CentOS Linux. Для развертывания IPSEC на всех машинах сети (в случае конфигурации «узел-узел») или маршрутизаторах (в случае конфигурации «сеть-сеть») необходимо установить соответствующие пакеты, управляющие конфигурацией IPSEC. В эти пакеты должны входить базовые библиотеки, демоны и файлы конфигурации, помогающие настроить соединение IPsec, в том числе — /lib/libipsec.so — библиотека, содержащая интерфейс управления доверенным ключом PF_KEY между ядром Linux и реализацией IPsec, используемой в CentOS Linux. При этом:

  • /sbin/setkey — настраивает управление ключами и атрибуты безопасности IPsec в ядре. Эта программа подчиняется демону racoon , управляющему ключами. Дополнительная информация о setkey может быть найдена в man setkey (8).
  • /sbin/racoon — демон управления ключами IKE, заведует обменом ключами и сопоставлением безопасности между компьютерами, реализующими IPsec. Настроить этот демон можно, отредактировав файл /etc/racoon/racoon.conf . За дополнительными сведениями о racoon, можно обратиться к странице man racoon (8).
  • /etc/racoon/racoon.conf — файл конфигурации racoon , в котором настраиваются различные параметры соединения IPsec, в том числе методы проверки подлинности и алгоритмы шифрования. Опять же, исчерпывающие данные по этому вопросу могут быть получены при изучении вывода команды man racoon.conf (5).

Настройка IPSEC при конфигурации «узел-узел»

С помощью IPsec можно связать одну рабочую станцию с другой, организовав соединение «узел-узел». В соединении такого типа для создания безопасного туннеля используется сеть, к которой подключены оба узла. Для создания соединения IPsec узлам нужно только постоянное подключение к Интернету или другой постоянно работающей сети.

Для соединения «узел-узел» потребуются следующие данные:

  • IP-адреса обоих узлов;
  • уникальное имя соединения IPsec, отличающееся от других устройств или соединений ( ipsec0 );
  • постоянный или автоматически созданный с помощью racoon ключ шифрования;
  • предварительный общий ключ проверки подлинности, используемый для установки соединения и обмена ключами шифровании во время сеанса соединения;

Рассмотрим вариант, когда два хоста устанавливают соединение друг с другом. При этом они будут использовать общий ключ с именем my_key и демон racoon для автоматического создания и обмена ключом проверки подлинности. Имя соединения будет иметь вид ipsec0 .

Ниже приведён файл ifcfg для рабочей станции, с помощью которой устанавливается соединение IPsec «узел-узел» с другой рабочей станцией. Тогда вид файла /etc/sysconfig/network-scripts/ifcfg-ipsec0 будет иметь вид:

На первом компьютере символы X.X.X.X нужно заменить IP-адресом второго компьютера, а на втором компьютере сделать наоборот. Это соединение устанавливается при загрузке ( ONBOOT=yes ) и использует метод проверки подлинности с предварительным общим ключом ( IKE_METHOD=PSK ).

Ниже показан файл с общим ключом ( /etc/sysconfig/network-scripts/keys-ipsec0 ), который нужен обоим компьютерам, для взаимной проверки. Содержимое этого файла должно совпадать на обоих компьютерах, а доступ к нему должен иметь только пользователь root. IKE_PSK=my_key

Для ограничения доступа к файлу keys-ipsec0 можно выполнить команду:

Ключ проверки подлинности можно изменить в любое время, для этого на обоих компьютерах нужно отредактировать файл keys-ipsec0 . Для установки соединения оба ключа обязательно должны совпадать!

Ниже рассматривается конфигурацию для первого этапа соединения с удалённым узлом. Этот файл называется X.X.X.X.conf (X.X.X.X заменяется IP-адресом удалённого маршрутизатора IPsec). Необходимо иметь ввиду, что этот файл создаётся автоматически при активации туннеля IPsec и не редактируется вручную!

Читайте также:  Cool reader настройка автолистания

директива remote X.X.X.X:

указывает, что последующие строки файла конфигурации применяются только к удалённому узлу, задаваемому по IP-адресу X.X.X.X.

в стандартной конфигурации IPsec в CentOS Linux используется режим проверки подлинности, позволяющий иметь разные IPsec-соединения с множеством узлов;

определяет метод идентификации, который будет использоваться при проверке подлинности узлов. CentOS Linux идентифицирует узлы по IP-адресам;

определяет алгоритм шифрования, используемый при проверке подлинности. По умолчанию используется стандарт тройного шифрования данных (Triple Data Encryption Standard, 3DES);

указывает алгоритм расчёта хэша, используемый на первом этапе связи;

определяет метод проверки подлинности, используемый при согласовании узлов.

указывает номер группы Диффи-Хелмана для выбора динамически создаваемых ключей сеанса. По умолчанию используется группа из 1024 бит.

Файлы /etc/racoon/racoon.conf также должны быть одинаковы на всех узлах IPsec, за исключением оператора include «/etc/racoon/X.X.X.X.conf» . Этот оператор (и файл тоже) создаётся при активации туннеля IPsec. Ниже показан типичный файл racoon.conf при установленном соединении IPsec.

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

Установить соединение можно, либо перезагрузив компьютер, либо выполнив на каждом узле от имени root следующую команду: /sbin/ifup ipsec0 .

Для проверки IPsec-соединение можно запустить утилиту tcpdump. При этом пакет должен содержать заголовок AH и данные ESP. ESP означает, что шифрование работает. Например:

Настройка IPSEC при конфигурации «сеть-сеть»

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

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

  • публичные IP-адреса выделенных маршрутизаторов IPsec;
  • IP-адреса интерфейсов шлюзов, маршрутизирующих трафик узлов сети в Интернет;
  • уникальное имя соединения IPsec (например, ipsec0 );
  • созданный с помощью racoon ключ шифрования;
  • предварительный общий ключ проверки подлинности.

Для примера рассмотрим туннель IPsec между сетью my_net1.com и сетью my_net2.com. Первая сеть имеет адрес 192.168.1.0/24, а вторая — 192.168.2.0/24. IP-адрес шлюза в первой сети — 192.168.1.254, а во второй — 192.168.2.254. Маршрутизаторы IPsec реализованы отдельно от шлюзов и используют два сетевых интерфейса: eth0 имеет статический публичный IP-адрес, обращённый к Интернету, а eth1 принимает и обрабатывает пакеты из локальной сети.

Соединение IPSEC между сетями использует предварительный общий ключ r3dh4tl1nux , Ниже приведёно содержимое файла ifcfg , созданного для межсетевого соединения IPSEC в первой сети. В примере это соединение имеет уникальное имя ipsec1.

Соединение устанавливается при загрузке ( ONBOOT=yes ) и использует метод проверки подлинности с общим ключом ( IKE_METHOD=PSK ).

Ниже приведено содержимое файла с предварительным общим ключом (названного /etc/sysconfig/network-scripts/keys-ipsecX , где X равен 0 для первой сети и 1 — для второй).

Ключ проверки подлинности можно изменить в любое время, для этого на IPsec-маршрутизаторах нужно отредактировать файл keys-ipsecX . Ключи должны обязательно совпадать!

Содержимое файла конфигурации /etc/racoon/racoon.conf :

Ниже приведена конфигурация конкретного соединения с удалённой сетью. Этот файл называется X.X.X.X.conf (где X.X.X.X IP-адрес удалённого маршрутизатора IPsec).

До запуска соединения IPSEC маршрутизация IP в ядре должна быть включена. Для этого можно отредактировать файл /etc/sysctl.conf и задать net.ipv4.ip_forward равным 1.

Чтобы изменение вступило в силу нужно выполнить команду: sysctl -p /etc/sysctl.conf .

Установить соединение можно, либо перезагрузкой маршрутизаторов, либо выполнив на маршрутизаторах от имени root следующую команду: /sbin/ifup ipsec0 .

Маршруты автоматически создаёт сценарий инициализации, вызываемый командой ifup при активизации соединения IPsec.

Для просмотра списка сетевых маршрутов можно выполнить команду: /sbin/ip route list .

Проверить IPsec-соединение можно запуском утилиты tcpdump, например так: tcpdump -n -i eth0 host my_net1.com .

Пакет должен содержать заголовок AH и данные ESP. При этом наличие ESP будет означать, что шифрование работает. Ниже показан пример просмотра такого пакета из установленного соединения:

Выводы

В статье подробно рассмотрены принципы построения и основы применения VPN, понятие протокола IPSEC, даны общие характеристики и описание IPSEC, а также механизмов его реализации.

Рассмотрена организация методов построения защищенных соединений с помощью протокола IPSEC. Подробно и на реальных примерах описаны такие реализации применительно к двум схемам соединений — «точка-точка» и «сеть-сеть».

Ресурсы для скачивания

Комментарии

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

Источник

Adblock
detector