Конфигурация IPsec «узел-узел»
6.4. Конфигурация IPsec «узел-узел»
С помощью IPsec можно связать одну рабочую станцию с другой, организовав соединение «узел-узел». В соединении такого типа для создания безопасного туннеля используется сеть, к которой подключены оба узла. Для организации соединения «узел-узел» и настройки IPsec от каждого узла требуется совсем немного. Для создания соединения IPsec узлам нужно только постоянное подключение к несущей сети (например, к Интернету) и Red Hat Enterprise Linux.
Первый этап организации соединения состоит в сборе системной и сетевой информации на каждой рабочей станции. Для соединения «узел-узел» вам потребуется следующая информация:
IP-адреса обоих узлов
Уникальное имя соединения IPsec, выделяющее его среди других устройств или соединений (например, ipsec0)
Постоянный или автоматически созданный с помощью racoon ключ шифрования
Предварительный общий ключ проверки подлинности, используемый для установки соединения и обмена ключами шифровании во время сеанса связи
Предположим, например, что компьютер A и компьютер B хотят организовать туннель IPsec. Для этого они хотят использовать предварительный общий ключ foobarbaz, а пользователи решили использовать racoon для автоматического создания и обмена ключом проверки подлинности. Пользователи обоих компьютеров назвали свои соединения ipsec0.
Ниже приведён файл ifcfg для рабочей станции A, с помощью которого устанавливается соединение IPsec «узел-узел» с рабочей станцией B (уникальное имя соединения в данном примере — ipsec0, поэтому результирующий файл называется /etc/sysconfig/network-scripts/ifcfg-ipsec0):
DST=X.X.X.X TYPE=IPSEC ONBOOT=yes IKE_METHOD=PSK |
На компьютере A X.X.X.X нужно заменить IP-адресом компьютера B, а на компьютере B вместо X.X.X.X указать IP-адрес компьютера A. Это соединение устанавливается при загрузке (ONBOOT=yes) и использует метод проверки подлинности с предварительным общим ключом (IKE_METHOD=PSK).
Ниже показан файл с предварительным общим ключом (/etc/sysconfig/network-scripts/keys-ipsec0), который нужен обоим компьютерам, чтобы проверить друг друга. Содержимое этого файла должно совпадать на обоих компьютерах, а доступ к нему должен иметь только пользователь root.
IKE_PSK=foobarbaz |
Важно | ||
---|---|---|
Чтобы ограничить доступ к файлу keys-ipsec0, позволив читать и изменять его только пользователю root, выполните после создания файла следующее:
|
Ключ проверки подлинности можно изменить в любое время, для этого на обоих компьютерах нужно отредактировать файл keys-ipsec0. Чтобы соединение было установлено, оба ключа должны совпадать.
Следующий пример иллюстрирует конкретную конфигурацию для первой фазы соединения с удалённым узлом. Этот файл называется X.X.X.X.conf (X.X.X.X заменяется IP-адресом удалённого маршрутизатора IPsec). Учтите, что этот файл создаётся автоматически при активации туннеля IPsec и редактировать его вручную не следует.
; remote X.X.X.X { exchange_mode aggressive, main; my_identifier address; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2 ; } } |
Файл конфигурации фазы 1, создаваемый при инициализации соединения IPsec, содержит следующие операторы, используемые реализацией IPsec в Red Hat Enterprise Linux:
- remote X.X.X.X
Указывает, что последующие строфы файла конфигурации применяются только к удалённому узлу, задаваемому по IP-адресу X.X.X.X.
- exchange_mode aggressive
В стандартной конфигурации IPsec в Red Hat Enterprise Linux используется жёсктий режим проверки подлинности, снижающий накладные расходы соединения и при этом позволяющий иметь разные IPsec-соединения с множеством узлов.
- my_identifier address
Определяет метод идентификации, который будет использоваться при проверке подлинности узлов. Red Hat Enterprise Linux идентифицирует узлы по IP-адресам.
- encryption_algorithm 3des
Определяет алгоритм шифрования, используемый при проверке подлинности. По умолчанию используется стандарт тройного шифрования данных (Triple Data Encryption Standard, 3DES).
- hash_algorithm sha1;
Указывает алгоритм расчёта хэша, используемый на первой фазе согласования между узлами. По умолчанию используется алгоритм безопасного хэша (Secure Hash Algorithm) версии 1.
- authentication_method pre_shared_key
Определяет метод проверки подлинности, используемый при согласовании узлов. В Red Hat Enterprise Linux для проверки подлинности по умолчанию применяются предварительные общие ключи.
- dh_group 2
Указывает номер группы Диффи-Хелмана для выбора динамически создаваемых ключей сеанса. По умолчанию используется группа из 1024 бит.
Файлы /etc/racoon/racoon.conf также должны быть одинаковы на всех узлах IPsec, за исключением оператора include "/etc/racoon/X.X.X.X.conf". Этот оператор (и файл, на который он ссылается) создаётся при активации туннеля IPsec. На компьютере A вместо X.X.X.X в операторе include окажется IP-адрес компьютера B. На компьютере B будет обратная картина. Ниже показан типичный файл racoon.conf при установленном соединении IPsec.
# Racoon IKE daemon configuration file. # See 'man racoon.conf' for a description of the format and entries. path include "/etc/racoon"; path pre_shared_key "/etc/racoon/psk.txt"; path certificate "/etc/racoon/certs"; sainfo anonymous { pfs_group 2; lifetime time 1 hour ; encryption_algorithm 3des, blowfish 448, rijndael ; authentication_algorithm hmac_sha1, hmac_md5 ; compression_algorithm deflate ; } include "/etc/racoon/X.X.X.X.conf" |
Стандартный файл racoon.conf включает заданные пути к файлам конфигурации IPsec, предварительным общим ключам и сертификатам. Поля в sainfo anonymous описывают вторую фазу соединения между узлами IPsec — природу IPsec-соединения (включая используемый поддерживаемый алгоритм шифрования) и способ обмена ключами. В следующеме списке перечислены поля фазы 2:
- sainfo anonymous
Отмечает, что SA может автоматически инициализировать соединение с любым партнёром при совпадении учётных сведений IPsec.
- pfs_group 2
Определяет протокол обмена ключами Диффи-Хелмана, задающий алгоритм, по которому узлы IPsec устанавливают общий временный ключ сеанса для второй фазы соединения IPsec. По умолчанию реализация IPsec в Red Hat Enterprise Linux использует из набора группу обмена криптографическими ключами Диффи-Хелмана группу 2 (или modp1024). Для группы 2 применяется степенная функция по модулю uses 1024-бит, что предотвращает расшифровывание взломщиками предыдущих сеансов IPsec, даже если закрытый ключ скомпрометирован.
- lifetime time 1 hour
Этот параметр задаёт срок жизни SA и может быть определяться временем или объёмом данных в байтах. Реализация IPsec в Red Hat Enterprise Linux устанавливает время жизни один час.
- encryption_algorithm 3des, blowfish 448, rijndael
Указывает поддерживаемые алгоритмы шифрования для фазы 2. Red Hat Enterprise Linux поддерживает 3DES, Blowfish 448 бит и Rijndael (алгоритм, используемый расширенным стандартом шифрования (Advanced Encryption Standard, AES).
- authentication_algorithm hmac_sha1, hmac_md5
Перечисляет поддерживаемые алгоритмы хэша для проверке подлинности. Поддерживаются режимы sha1 и md5 хэшированных кодов проверки подлинности сообщения (Hashed Message Authentication Codes, HMAC).
- compression_algorithm deflate
Определяет алгоритм сжатия Deflate для поддержки сжатия IP-заголовков (IP Payload Compression, IPCOMP), что может увеличить скорость передачи IP-датаграм по медленным соединениям.
Установить соединение можно, либо перезагрузив компьютер, либо выполнив на каждом узле от имени root следующую команду:
/sbin/ifup ipsec0 |
Чтобы проверить IPsec-соединение, запустите утилиту tcpdump и, проанализировав сетевые пакеты, передаваемые между узлами (или сетями), убедитесь в том, что они зашифрованы IPsec. Пакет должен содержать заголовок AH и данные ESP. ESP означает, что шифрование работает. Например:
17:13:20.617872 pinky.example.com > ijin.example.com: \ AH(spi=0x0aaa749f,seq=0x335): ESP(spi=0x0ec0441e,seq=0x335) (DF) |