IPsec и защита бюджетной беспроводной сети

17 июль, 2005 - 23:00Сергей Грицачук

Многие пользователи, приобретя средства для организации сетей Wi-Fi-стандартов 802.11b/g два года назад, столкнулись с проблемой обеспечения безопасности. Решением этой задачи может быть полная замена имеющегося оборудования более современным, но есть и альтернатива...

Получив в свои руки замечательный инструмент для организации беспроводной связи – оборудование, поддерживающее стандарты 802.11b/g, мировое сообщество сразу же принялось активно использовать сети, построенные на его основе. К сожалению, данный стандарт предусматривает весьма условные средства для защиты информации, что стало благодатной почвой для действий злоумышленников. Но не стоит забывать о том, что Wi-Fi – всего лишь надстройка над Ethernet, и все способы защиты, используемые в Ethernet, применимы и в Wi-Fi.

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

IPsec: коротко о главном

По своей сути IP Security – это набор алгоритмов и протоколов с весьма гибкой внутренней структурой, предназначенных для шифрования, аутентификации и обеспечения защиты при транспортировке IP-пакетов. Согласно стандартной семиуровневой модели OSI, он работает на третьем, сетевом уровне. Метод работы IPsec достаточно прост: к передаваемым данным добавляется заголовок для идентификации защищенных пакетов. IPsec поддерживает несколько типов шифрования, в том числе Data Encryption Standard (DES) и Message Digest 5 (MD5).

Благодаря IPsec передаваемые IP-пакеты защищаются методом, прозрачным для сетевых приложений и инфраструктуры. В отличие от протокола SSL (Secure Socket Layer), который работает на четвертом (транспортном) уровне и теснее связан с более высокими уровнями модели OSI, IPsec призван обеспечить низкоуровневую защиту.

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

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

Пример реализации

В типичном случае приходится решать достаточно распространенную задачу – связь мобильного устройства (PDA, ноутбука, смартфона) с локальной сетью, в которой присутствует выделенный сервер и точка доступа.

Как пример организации соединения подобного рода рассмотрим самую простую, но очень распространенную модель, где в качестве сервера использован компьютер, функционирующий под управлением ОС FreeBSD (семейство 5.x), а в качестве клиента – ноутбук, работающий на базе Windows XP.

Выбор метода соединения целиком зависит от требуемого уровня защищенности. Конечно, предпочтительнее реализовать туннельный способ защиты, но его применение требует присвоения статического IP-адреса клиенту, что не всегда удобно. В принципе, можно решить задачу и для динамического адреса, но это решение представляется чересчур громоздким и неоправданно усложняет дело.

Намного проще осуществить шифрование с помощью транспортного режима, обеспечив динамическую выдачу IP-адреса клиенту: это существенно упростит настройку серверной части, повысит гибкость в обслуживании и простоту подключения. Однако не стоит забывать, что данный метод имеет более низкую защищенность, нежели предыдущий.

Как правило, для обеспечения безопасности на транспортном уровне применяется три подхода: использование статических политик шифрования, секретного ключа (Preshared Key Mode) и сертификатов X.509 (аутентификация с открытым ключом). Учитывая, что самый надежный из перечисленных подходов последний, его выбор наиболее оптимален. Кроме этого, как FreeBSD, так и Windows XP имеют достаточно мощные средства поддержки X.509.

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

IPsec и защита бюджетной беспроводной сети
Так выглядит установленное соединение – управляющая консоль Windows XP

Для выдачи клиенту IP-адреса применен типовой DHCP-сервер от ICS (версия 3.0.14), настройка которого многократно описывалась в литературе. Самой же первой операцией по настройке является включение поддержки IPsec в ядро ОС. Для этого необходимо добавить в файл конфигурации ядра строки

OPTIONS IPsec
OPTIONS IPsec_ESP
OPTIONS IPsec_DEBUG

После компиляции и инсталляции нового ядра появляется поддержка IPsec.

Следующим шагом (если он не был сделан ранее) будет установка пакета OpenSSL, необходимого для генерации ключей и сертификатов и для взаимодействия с программой racoon, которая отвечает за обмен ключами сервера с клиентом. Таких программ обслуживающих протокол ISAKMP, две: racoon, которую мы будем использовать, и демон isakmpd.

После установки нужных пакетов можно переходить к процедуре генерации закрытого ключа для корневого сертификата сервера:

openssl genrsa -des3 -out root_sertif.key 1024

Полученный в результате генерации 1024-битовый ключ, зашифрованный с помощью алгоритма TRIPLE DES, достаточно надежен. Однако стоит отметить, что в процессе его создания запрашивается пароль, который должен отвечать максимальным требованиям безопасности – неудачно подобранный или слишком простой пароль сведет к нулю все работы по защите, а его утеря – к необходимости перегенерации всех сертификатов, выдаваемых впоследствии. Восстановлению или взлому пароль не подлежит.

На основе полученного закрытого ключа создается корневой сертификат root_sertif.crt со сроком действия, скажем, 1825 дней (пять лет):

openssl req -new -x509 -days 1825 -key root_sertif.key 
-out root_sertif.crt

При создании сертификата потребуется указать следующие сведения:

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

Создание корневого сертификата позволяет перейти непосредственно к созданию сертификатов клиента и сервера, которыми они будут обмениваться в процессе установки защищенного соединения. Первыми создаются ключ и сертификат для сервера – по стандартной процедуре «вопрос – ответ».

Создание ключа для сервера:

openssl genrsa -out master.key 1024

Запрос на сертификат:

openssl req -new -key master.key -out master.csr

Генерация сертификата со сроком действия 365 дней (один год) для сервера:

openssl x509 -req -days 365 -in master.csr -CA root_sertif.crt 
-CAkey root_sertif.key -out master.crt

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

openssl genrsa -out user.key 1024
openssl req -new -key user.key -out user.csr
openssl x509 -req -days 365 -in user.csr -CA root_sertif.crt 
-CAkey root_sertif.key -out user.crt

Потребуется еще один, дополнительный шаг на этом этапе – экспорт клиентского закрытого ключа user.key и сертификата user.crt в файл формата pl2 (user.pl2) для удобства импорта сертификата в ОС Windows XP. Полученные ключи и сертификаты нужно перенести в отдельную директорию, например /usr/local/etc/secret.

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

В первую очередь в настройке нуждается брандмауэр, для которого необходимо создать правило, разрешающее UDP-подключения к 500-му порту (порт isakmp):

ipfw allow udp from 192.168.1.0/24 to Srv_Addr dst-port 500 
via fxp0
ipfw allow udp from Srv_Addr to any dst-port 500 via fxp0

Вместо 192.168.1.0/24 требуется указать адрес локальной сети организации, частью которой становится подключаемый клиент, Srv_Addr – IP-адрес сервера, fxp0 – сетевой интерфейс, обслуживающий локальную сеть.

После настройки брандмауэра останется только настроить программу управления ключами raccoon – составную часть пакета IPsec-tools. После ее установки нужно переименовать конфигурационный файл /usr/local/etc/racoon.conf.dist в /usr/local/etc/racoon.conf и внести в него необходимые исправления.

Строку, указывающую на файл со статическими секретными ключами, следует закомментировать, подставив вместо нее свою, содержащую путь к файлам ключей и сертификатов:

path pre_shared_key "/usr/local/etc/racoon/psk.txt";
path certificate "/usr/local/etc/secret";

Также не помешает установить избыточный уровень отладки:

log debug2;

В остальном же файл racoon.conf снабжен многочисленными комментариями и настраивается без особых трудностей. Стоит лишь особое внимание обратить на секции anonymous – именно они определяют поведение программы при подключении клиентов с динамическими IP-адресами. Запуск racoon производится со следующими параметрами:

/usr/local/sbin/racoon -f /usr/local/etc/racoon.conf 
-l /var/log/racoon.log
IPsec и защита бюджетной беспроводной сети
Клиентский сертификат, срок действияодин год

После перезапуска сервера можно переходить к настройке клиентской части. Фактически вся работа происходит под управлением стандартных мастеров, но кое-что потребуется проделать вручную – например, нужно убедиться в том, что служба IPsec Services запущена.

После этого делается запуск новой управляющей консоли с помощью команды mmc, набранной из командной строки. В нее требуется добавить следующие разделы:

  • Certificates (на локальном компьютере);
  • IP Security Policies (на локальном компьютере);
  • IP Security Monitor.

Для добавления сертификата и ключа необходимы некоторые файлы с сервера – это root_sertif.crt и user.pl2. Импортируем root_sertif.crt в контейнер Trusted Root Certification Authorities и user.pl2 в контейнер Personal раздела Certificates.

IPsec и защита бюджетной беспроводной сети
Корневой сертификат, срок действия пять лет

В разделе IP Security Policies потребуется создать новую политику безопасности, назвав ее, например, FreeBSD. Здесь тоже придется использовать ряд мастеров настройки, но самое главное – не забыть деактивировать список фильтров по умолчанию и активировать вновь созданный. В качестве точки источника и точки приемника нужно указать собственный IP-адрес ноутбука и фиксированный IP-адрес сервера соответственно. Также необходимо разрешить любой протокол на этом маршруте (Any). После проделанных манипуляций требуется запустить созданную папку FreeBSD (Assign).

Если в процессе настроек не было допущено никаких ошибок, то можно приступать к тестированию соединения путем запуска ping. В случае правильной организации соединения на клиентской стороне появится сообщение Negotiating security и данные пинга сервера, а на стороне сервера в лог-файле racoon.log – примерно следующие строки:

ISAKMP-SA established 192.168.1.1[500] - 192.168.1.33[500] 
spi:a8d3676434defba6:29af37b343c980da

Вместо послесловия

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

Насколько все же велика надежность рассмотренного метода? В случае если обеспечены хрестоматийные меры безопасности – строго ограниченный доступ к серверу, на котором хранится корневой сертификат, выбор надежного пароля и т. д., сертификат X.509 подделать невозможно. Кроме того, вам не удастся получить сертификат X.509 и с машины-клиента, так как при его экспорте закрытый ключ не переносится – а без него попытка воссоздать клиентский сертификат обречена на провал.

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

В любом случае, штатные средства защиты, реализованные в стандартах 802.11b/g, не выдерживают никакой конкуренции с IPsec.