В этой статье будут обсуждены некоторые дополнительные возможности FreeS/WAN, которые вы можете использовать для создания гибких и надежных IPSec VPN. Исходным источником информации по FreeS/WAN является официальный сайт (http://www.freeswan.org/). На этом сайте вы сможете найти ссылки на практически любые инструменты и информацию, которые потребуются вам для реализации IPSec под Linux.
Администрирование IPSec VPN под Linux
Михаил Разумов, по материалам Sys Admin Magazine
В первой статье автора Introducing FreeS/WAN and IPSec в ноябре 2000 г. были обсуждены основы установки IPSec (IP Security – Безопасность IP) для Linux с использованием пакета FreeS/WAN. В этой статье будут обсуждены некоторые дополнительные возможности FreeS/WAN, которые вы можете использовать для создания гибких и надежных IPSec VPN (Virtual Private Network – Виртуальная Частная Сеть). Исходным источником информации по FreeS/WAN является официальный сайт (http://www.freeswan.org/). На этом сайте вы сможете найти ссылки на практически любые инструменты и информацию, которые потребуются вам для реализации IPSec под Linux.
IPSec – это расширение протокола Интернет (IP), которое предоставляет не только шифрование, но и аутентификацию в транспортном слое (layer 3 of the OSI Reference Model). Следующее поколение IP, версия 6 (IPv6), поддерживает IPSec изначально, так как IPSec является требованием спецификации IETF для IPv6.
IPSec – это набор протоколов. Три протокола используются для инкапсуляции, шифрования, и аутентификации – AH (Authentication Header – Заголовок Аутентификации), ESP (Encapsulating Security Payload – Инкапсулированные Защищенные Данные) и IKE (Internet Key Exchange – Обмен Ключами через Интернет). IPSec обычно прозрачен для пользователей. Не нужно переделывать приложения и не нужно переобучать пользователей для использования сетей на основе IPSec. Пользователям даже не обязательно знать, что они используют IPSec для туннелирования данных через незащищенную сеть.
AH и ESP отвечают за шифрование и аутентификацию. AH добавляется после заголовка IP, но перед данными (payload) – см. рис. 1. AH несет аутентификационную информацию, обычно это ключи в MD5 (Message Digest Algorithm – Алгоритм Дайджеста Сообщения) или SHA (Secure Hash Algorithm – Алгоритм Безопасного Хэша). AH используется только для аутентификации и проверяет, что отправители действительно те, за кого себя выдают. AH не производит шифрования.
Рис. 1. Преобразование AH, показывающее (a) оригинальную Ipv4 диаграмму, (b) транспортную аутентификацию с контрольной суммой, (c) замену исходного заголовка IP при туннелировании.
ESP может использоваться как для шифрования, так и для аутентификации. Он может использоваться как с AH, так и без него. Хотя возможно создавать туннели с использованием только аутентификации или шифрования, эти методы оставляют связь открытой для различных форм атак. Обычно шифрование происходит с использованием блочного шифра (симметричный или раздельно-ключевой шифр, состоящий из текстовых блоков фиксированного размера) и 3DES. На рисунке 2 показан процесс инкапсуляции. Также опубликованы и применяются RFC для использования других методов шифрования (например IDEA, Blowfish, RC4). Ключи шифрования распределяются с использованием IKE.
Рис. 2. Преобразование ESP, показывающее (a) оригинальную IPv4 диаграмму, (b) транспортную инкапсуляцию с контрольной суммой, (c) инкапсуляция исходной дейтаграммы при туннелировании.
IKE устанавливает параметры соединения, включая инициализацию, обработку и обновление ключей шифрования. Аутентификация производится с использованием общих секретов (например секретных фраз) или криптографических RSA ключей, которые гарантируют идентичность обеих частей. IKE основан на методе Diffie-Hellman’а обмена идентификационными метками (tokens). Для шифрования данных используются алгоритмы группового шифрования, такие как тройной DES (Data Encryption Standard – Стандарт Шифрования Данных). Хэш-алгоритмы, такие как MD5 и SHA обеспечивают аутентификацию каждого пакета. Для дополнительной безопасности соединения через малые промежутки времени происходит обновление аутентификационных ключей.
IPSec вставляет заголовок и зашифрованные полезные данные в обычный IP (зачастую не IPSec) пакет. Это позволяет данным IPSec проходить через любые IP сети. Главной причиной для широкого использование IPSec (в противовес IPv6) является то, что все IP сети (включая IP версии 4) могут передавать IPSec трафик в основную сеть без изменений. IPSec реализован как в программном, так и в аппаратном виде. Все ведущие производители сетевого оборудования и программного обеспечения поддерживают сети IPSec. Фактически все сетевые ОС сейчас поддерживают IPSec. IPSec также получил значительную поддержку в Open Source community (сообщество Открытого Кода). Хотя практически все реализации IPSec соответствуют существующим RFC, они совсем не обязательно смогут взаимодействовать. Необходимо тестировать реализации IPSec от различных производителей, чтобы убедиться, что они полностью совместимы.
FreeS/WAN состоит из двух отдельных компонент. Первая – KLIPS (KerneL IP Security), является набором изменений стандартного ядра Linux. Информацию по внедрению KLIPS в стандартное ядро Linux читайте в Introducing FreeS/WAN and IPSec. Вторая компонента – независимый демон Pluto, который также устанавливается и конфигурируется при установке FreeS/WAN. Pluto обрабатывает запросы аутентификации протокола IKE и взаимодействует с компонентой KLIPS в ядре, которая отвечает за инкапсуляцию и шифрование.
FreeS/WAN конфигурируется через файл ipsec.conf. После установки FreeS/WAN, практически все конфигурационные изменения заключаются в редактировании конфигурационного файла ipsec.conf. Другой файл, ipsec.secrets, содержит аутентификаторы (т.е. наборы криптографических ключей, общие секреты).
Программа ipsec (не путать с протоколом IPSec) – набор инструментов, которые управляют и осуществляют работу IPSec. Программа ipsec, помимо других инструментов, включает помощь в поиске неисправностей, инструменты для активизации и отключения туннелей, а также для опроса состояния каждого туннеля IPSec. Все, что нам нужно для того, чтобы начать построение VPN – это отредактировать файлы ipsec.conf и ipsec.secrets и затем активировать IPSec с помощью приложения ipsec.
Файл ipsec.conf содержит большую часть информации о конфигурации и управлении FreeS/WAN и расположен по умолчанию в директории /etc. Страница man (мануал) для ipsec.conf содержит все необходимые сведения.
Файл ipsec.conf – текстовый файл, включающий одну или более секций. Все, что начинается с “#” – комментарии. Секция обычно начинается с новой строки без отступа. Например, в листинге 1(а) секция начинается со строки:
config setup
“config” определяет тип секции, а “setup” – метка секции, которая идентифицирует каждую секцию данного типа. Обычно типом является “config”, определяющий системные настройки FreeS/WAN, или “conn”, содержащий конфигурационные параметры каждого VPN туннеля. Каждый VPN туннель имеет собственную секцию “conn”.
Строки внутри секции отделены пробелами от левой границы и имеют вид:
klipsdebug=none
KLIPS debugging (параметр klipsdebug) включается и выключается установкой его в "all" или "none", как показано выше.
Во всех файлах ipsec.conf первая секция "config setup" содержит настройки интерфейсов и соединений FreeS/WAN, используемых при включенном IPSec. Следующая строка задает шлюз по умолчанию (default gateway) на компьютере, как интерфейс для всех VPN туннелей:
interfaces=%defaultroute
Значения параметров, начинающиеся с "%" обозначают системную переменную, загружаемую FreeS/WAN при образовании туннеля. Значение %defaultroute (IP маршрут по умолчанию) загружается из системной таблицы маршрутизации. Следующие строки:
klipsdebug=none
plutodebug=none
выключают debugging для KLIPS и Pluto. Установка этих параметров в "all", включает подробную debugging информацию, полезную для поиска и решения проблем. Строки:
plutoload=%search
plutostart=%search
говорят Pluto искать (%search) возможные соединения. Pluto сканирует файл ipsec.conf в поисках соединений, которые будут загружены (секции "conn", см. ниже) и выдает доступ к VPN туннелям, где это необходимо. Другая опция явно задает разрешенные туннели (напр. «plutoload="connection_1 conection_2"» разрешит туннели, заданные в секциях "conn connection_1" ,"conn conection_2", проигнорировав остальные.
Секция:
conn %default
устанавливает настройки по умолчанию для всех параметров всех туннелей. Можно считать ее набором глобальных переменных для всех секций "conn". Строка:
keyingtries=0
говорит IKE бесконечно продолжать попытки обмена ключами при потере соединения. Можно также задать множество других параметров, многие из которых имеют предустановленные значения, например механизм по умолчанию обмена ключами – IKE ("keyexchange=ike") и время по умолчанию между сменой ключей – 8 часов ("keylife=8h").
Метод аутентификации по умолчанию для FreeS/WAN – это публичный общий ключ (PSK - publicly shared key), устанавливаемый строкой:
authby=secret
PSK – это обычно секретная буквенно-цифровая строка, общая для обеих сторон. Листинг 2(a) показывает содержимое типичного файла ipsec.secrets, который содержит PSK и IP адреса сторон для соединений в листингах 1(b) и (c). Файл ipsec.secrets содержит конфиденциальную информацию и должен быть доступен для чтения и записи только root’у.
В листинге 1(a), все секции после "conn %default" задают ряд туннелей, которые будут рассмотрены подробнее. Спецификации соединений записаны в терминах «левого» и «правого» хостов, а не в терминах локального и удаленного. Выбор левого и правого произволен; FreeS/WAN определяет это на основе внутренней информации (напр. локального IP адреса). Это позволяет использовать одинаковые спецификации соединения для обеих систем.
IPSec может быть использован для создания защищенных туннелей хост-хост, подсеть-подсеть, или подсеть-хост. Широкие возможности FreeS/WAN могут быть продемонстрированы некоторыми реальными VPN-сценариями.
продолжение следует...Сбалансированная диета для серого вещества