С помощью 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:
Указывает, что последующие строфы файла конфигурации применяются только к удалённому узлу, задаваемому по IP-адресу X.X.X.X.
В стандартной конфигурации IPsec в Red Hat Enterprise Linux используется жёсктий режим проверки подлинности, снижающий накладные расходы соединения и при этом позволяющий иметь разные IPsec-соединения с множеством узлов.
Определяет метод идентификации, который будет использоваться при проверке подлинности узлов. Red Hat Enterprise Linux идентифицирует узлы по IP-адресам.
Определяет алгоритм шифрования, используемый при проверке подлинности. По умолчанию используется стандарт тройного шифрования данных (Triple Data Encryption Standard, 3DES).
Указывает алгоритм расчёта хэша, используемый на первой фазе согласования между узлами. По умолчанию используется алгоритм безопасного хэша (Secure Hash Algorithm) версии 1.
Определяет метод проверки подлинности, используемый при согласовании узлов. В Red Hat Enterprise Linux для проверки подлинности по умолчанию применяются предварительные общие ключи.
Указывает номер группы Диффи-Хелмана для выбора динамически создаваемых ключей сеанса. По умолчанию используется группа из 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:
Отмечает, что SA может автоматически инициализировать соединение с любым партнёром при совпадении учётных сведений IPsec.
Определяет протокол обмена ключами Диффи-Хелмана, задающий алгоритм, по которому узлы IPsec устанавливают общий временный ключ сеанса для второй фазы соединения IPsec. По умолчанию реализация IPsec в Red Hat Enterprise Linux использует из набора группу обмена криптографическими ключами Диффи-Хелмана группу 2 (или modp1024). Для группы 2 применяется степенная функция по модулю uses 1024-бит, что предотвращает расшифровывание взломщиками предыдущих сеансов IPsec, даже если закрытый ключ скомпрометирован.
Этот параметр задаёт срок жизни SA и может быть определяться временем или объёмом данных в байтах. Реализация IPsec в Red Hat Enterprise Linux устанавливает время жизни один час.
Указывает поддерживаемые алгоритмы шифрования для фазы 2. Red Hat Enterprise Linux поддерживает 3DES, Blowfish 448 бит и Rijndael (алгоритм, используемый расширенным стандартом шифрования (Advanced Encryption Standard, AES).
Перечисляет поддерживаемые алгоритмы хэша для проверке подлинности. Поддерживаются режимы sha1 и md5 хэшированных кодов проверки подлинности сообщения (Hashed Message Authentication Codes, HMAC).
Определяет алгоритм сжатия 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) |