Руководство по установке FreeBSD Wi-Fi IPsec

Руководство по установке FreeBSD Wi-Fi IPsec

Было создано IPsec туннельное соединение между хостом MS-Windows с беспроводным Ethernet и FreeBSD NAT шлюзом. Такая настройка позволяет мобильному хосту иметь защищенное и зашифрованное соединение в незащищенной по своей сути радиосети.

Тимоти Хам

Реферат

Было создано IPsec туннельное соединение между хостом MS-Windows с беспроводным Ethernet и FreeBSD NAT шлюзом. Такая настройка позволяет мобильному хосту иметь защищенное и зашифрованное соединение в незащищенной по своей сути радиосети.

Введение

Не так давно я купил комплект "Wireless Bundle" состоящий из беспроводного NAT маршрутизатора и карты PCMCIA 802.11b. Будучи устройством, рассчитанным на непрофессионального потребителя, мне было достаточно просто его подключить и настроить для работы с моей домашней сетью. Трудности начали возникать когда я попробовал защитить это соединение, а также при попытке защиты всей остальной части локальной сети от любого вида вторжений.

Для меня был очевиден выбор IPsec по WEP. Поскольку WEP считается слабо защищенной (секретный ключ очень легко восстановить), моя PCMCIA карта имела встроенное программное обеспечение, которое отклоняло соединения при включенном WEP. Проблема была хорошо задокументирована, но производитель не выпустил никаких обновлений закрывающих эту "дыру".

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

Изолирование беспроводной сети

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

Первым шагом было отделение беспроводной сети от остальной части моей домашней сети. Это можно сделать, установив еще одну сетевую карту и назначив ей другой диапазон адресов. К примеру, существующая сеть использует диапазон 192.168.1.х, а новая карта - 192.168.2.1. При правильной настройке брандмауэра и IPsec, данный сегмент может быть изолирован от остальной части домашней сети.

Поскольку мой беспроводной NAT маршрутизатор характеризовался как маршрутизатор/коммутатор, то его функции как маршрутизатора (DHPCD, NAT) должны были быть заблокированы. Для изменения настроек маршрутизатор имеет web-интерфейс. Я также дал название wi-fi сети. Маршрутизатор имел четыре Ethernet порта, обозначенных "LAN", и один порт "WAN". Новая Ethernet плата (192.168.2.1) подключена к одному из "LAN" портов.

Портативной ЭВМ был назначен постоянный IP адрес 192.168.2.10.

Транспортный Режим против Туннельного Режима

Эта часть смутила меня больше всего, т.к. большинство изданий (включая руководство по FreeBSD) описывают IPsec туннели в терминах VPN - т.е. два шлюза, соединяющие две подсети по безопасному туннелю, используя виртуальный интерфейс. Сначала я тоже думал, что это транспортный туннель, использующий сквозное шифрование пакетов. Но все оказалось не совсем так. Все пакеты между портативным компьютером (хостом) и шлюзом (192.168.2.10 <-> 192.168.2.1) действительно были зашифрованы. Однако пакеты, посылаемые в остальную часть Интернет, не были зашифрованы. (192.168.2.10-> www.securitylab.ru). Но то, что хотел я, было зашифрованным туннелем между хостом и шлюзом, которые отсылает пакеты от хоста до остальной части Интернет.

Любой исходящий из хоста пакет (192.168.2.10-> www.securitylab.ru), должен быть зашифрован и инкапсулирован в другом пакете, пересылаемом к шлюзу. При получении шлюзом этого пакета, он должен дешифровать его и отправить на www.securitylab.ru.

Возвращаемый пакет (www.securitylab.ru -> 192.168.2.10) должен быть зашифрован и инкапсулирован шлюзом, а затем переслан на хост. (192.168.2.1-> 192.168.2.10), после чего на хосте этот пакет дешифруется и читается его содержимое.

Настройка шлюза

Ниже будет показано, как настраивается шлюз.

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

	options IPSEC
	options IPSEC_ESP

Проведите перекомпиляцию, переустановку и перезагрузите компьютер с новым ядром. Добавьте следующие строки в файл /etc/rc.conf:

	ipsec_enable="YES"
	ipsec_file="/etc/ipsec.conf"

B. Настройка защитной политики. Создайте файл /etc/ipsec.conf со следующим содержимым. В этом примере, 192.168.2.10 - хост, и 192.168.2.1 - шлюз.

flush;
	spdflush;
	spdadd 192.168.2.10/32 0.0.0.0/0 any -P in ipsec
	 esp/tunnel/192.168.2.10-192.168.2.1/require;
	spdadd 0.0.0.0/0 192.168.2.10/32 any -P out ipsec
	 esp/tunnel/192.168.2.1-192.168.2.10/require;	

Для применения защитной политики запустите 'setkey-f/etc/ipsec.conf.

С. Установка и конфигурирование Racoon.

Racoon находится в /usr/ports/security/racoon. Проводим установку.

После инсталляции, создайте /usr/local/etc/racoon/psk.txt. В этом файле перечислены секретные ключи для ваших хостов. Например:

192.168.2.10	SecretKey

Желательно создавать секретные ключи трудные для подбора. В Интернете существуют различные ресурсы, посвященные этому вопросу.

Теперь, необходимо создать файл /usr/local/etc/racoon/racoon.conf. Я скопировал файл racoon.conf.dist, после чего изменил и модифицировал директиву "listen" и значения "life time" в директивах "remote anonymous" и "sainfo anonymous".

Настройка Windows компьютеров

Windows 2000 и XP имеют достаточно много различных диалогов и мастеров, но конечный результат их действия один и тот же.

  • Зайдите в меню "Start" и и нажмите "RUN". Наберите mmc и ^lt; ENTER>
  • Выберите "Console" (или "File")-> Add/Remove Snap In. Выберите "Add"
  • Выберите "IP Security Policy Management" и нажмите "Add".
  • Выберите "Local Computer", и нажмите "Finish".
  • Нажмите "Close" для закрытия диалога "Add standalone Snap-in". Выберите "ОК" для закрытия диалога Add/Remove Snap-in.

Выполнив вышеописанные операции, мы добавили встроенную защитную политику. Теперь необходимо настроить wifi политику.

  • Выберите "IP Security Policies" на "Local Machine", нажмите правую кнопку мыши и выберите "Create IP Security Policy"
  • Дайте название защитной политике (в нашем примере 'wifi'). Нажмите "Next".
  • Снимите отметку с "Activate" и нажмите "Next".
  • Снимите выделение с "Edit Properties". Нажмите "Finish"

Теперь наряду с "Client", "Secure Server" и "Server" вы должны иметь политику "wifi". После, мы определим правила фильтрации:

  • Нажмите правую кнопку мыши на вкладке "IP Security Policies" окна "Console Root" и выберите "Manage IP filter lists and filter actions".
  • Нажмите "Add"
  • Назовите этот список фильтров "OutboundIPsec". После, нажмите "Add"
  • Следуйте за "мастером", и выберите значение "My IP Address" как "Source", "Any IP Address" как "destination address" и выберите любой тип протокола. Проверьте окно "Edit Properties" и снимите галочку с "mirrored".

Теперь в списке OutboundIPsec должен быть один фильтр. Нажмите "Close". Добавьте второй список, и назовите его InboundIPsec, повторяя вышеописанные шаги. На этот раз, добавьте фильтр с "Any IP Address" как "Source", a "My IP Address" как «destination adress».

Теперь, для применения, созданных фильтров, мы создадим в политике следущее:

  • Сделайте двойной щелчок мышью на “wifi” политике.
  • Нажмите «add», чтобы добавить новые «IP Security Rules».
  • Выберите переключатель "The tunnel endpoint is specified" и введите шлюз (кроме, 192.168.2.1). Нажмите «Next».
  • Выберите «LAN» и нажмите «Next»
  • Выберите "Use this string to protect the key exchange", и введите секретную фразу. Нажмите «Next».
  • Выберите созданный вами список фильтров "OutboundIPsec". Нажмите «Next».
  • Выберите «Require Security». Нажмите «Next».
  • Снимите выделение с "Edit properties". Нажмите "Next". Повторите все, описанные выше шаги, только введите хост (кроме, 192.168.2.10) в шаге 3, и "InboundIPsec" списке фильтра в шаге 6. Все остальное то же самое.

Теперь - все. Ниже я подведу итоги того, что мы сделали выше.

  • "Console root" имеет подразделение, называемое "IP Sec Policies on Local Machine".
  • "IP Sec Policies" должен иметь большое количество каталогов, один из которых называют "wifi".
  • Двойное нажатие на "wifi", вызывает его свойства. В них должны быть два правила, оба из которых проверены и имеют следующие свойства:
     Property		InboundIPsec		OutboundIPsec
     ------------------------------------------------------------
     Filter Action      Require Security 	Require Security
     Authentication	Preshared Key		Preshared Key
     Tunnel Setting	192.168.2.10		192.168.2.1
     Connection Type	LAN			LAN
  • После установки, утилиты ping и tracert работают прекрасно, под tcpdump все ping пакеты показываются зашифрованными, но при этом никакие сайты не доступны. Отключите встроенный "IP брандмауэр" в настройках TCP/IP для wifi интерфейса. В справочных файлах указывается, что он конфликтует с VPN туннелями.
  • Команда ping возвращает значение "Negotiating IPsec" в течение нескольких секунд после сообщения "Request timed out." Продолжайте пингование с флагом -t. Тем временем, перезапустите службу IPsec политики. Я не уверен, по каким причинам это происходит, но может потребоваться от нескольких секунд до нескольких минут, прежде чем команда ping начнет нормально работать.
  • Когда соединение некоторое время простаивает, то пропадает возможность соединения. Тоже самое, происходит и при простое IPsec туннеля. И может понадобиться некоторое время, чтобы повторно соединиться (см. выше). Я не знаю способов вынудить туннель оставаться постоянно открытым, кроме постоянной пересылки сообщений через него. Это можно сделать при наличии открытого ssh сеанса или часто перезагружаемой web страницы.

Выводы

Теперь вы имеете безопасное wifi подключение между вашей портативной ЭВМ и вашим шлюзом. Любой, пытающийся сниффить беспроводную точку доступа, увмдеи пакеты, идущие между хостом и шлюзом и от шлюза, только в зашифрованном виде.

Я надеюсь, что данная статья оказалась полезной для Вас.

Наш канал защищен лучше, чем ваш компьютер!

Но доступ к знаниям открыт для всех

Получите root-права на безопасность — подпишитесь