Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #72, НОЯБРЬ 2006 г.

под защитой криптотуннеля

ANDREY MATVEEV

Спецвыпуск: Хакер, номер #072, стр. 072-024-2


Наша первая схема выглядит следующим образом:

wireless

[ Ноутбук ] ---------------------------(ral0)-[ Домашний сервер ]-(fxp0)-----[ Провайдер ]

192.168.2.2 ipsec 192.168.2.1

Здесь ral0 — это сетевой интерфейс, закрепленный за PCI'ной карточкой Gigabyte GN-WPKG 802.11 b/g и осуществляющий работу по спецификации 802.11g (mode 11g) на 11-ом частотном канале (chan 11) в режиме точки доступа (mediaopt hostap) с уникальным идентификатором сети (nwid wlan).

ЛИСТИНГ

# vi /etc/hostname.ral0

inet 192.168.2.1 255.255.255.0 NONE media autoselect mode 11g \

mediaopt hostap nwid wlan chan 11

Если у беспроводного клиента (тестирование проводилось на ноуте с WinXP SP2) соответствующим образом настроена политика IPsec, весь внутренний трафик будет шифроваться за счет организации IPsec-туннеля с аутентификацией на основе парольной фразы («preshared key» — будем называть именно так, чтобы избежать путаницы с другими ключами).

Примечание: настройка проводного клиента полностью аналогична настройке беспроводного клиента.

[вернисаж IPsec-туннелей.]

Демон isakmpd(8) позволяет создавать невероятное количество IPsec-туннелей, используя при этом различные алгоритмы шифрования (3des, idea, cast, blowfish, aes для атрибута esp_enc_alg протокола ESP) и методы аутентификации (на основе парольной фразы, серверных ключей, Keynote и X.509 сертификатов). Мы будем рассматривать метод аутентификации на основе парольной фразы, но в случае внушительного числа wlan-клиентов свой выбор лучше остановить на X.509 auth. Демон просто потрясает своими возможностями, так что будет не просто найти такую задачу построения VPN, с которой он не мог бы справиться.

Для удобства главный конфигурационный файл сервера обмена ключей разбит на секции и содержит директивы с присвоенными значениями (смотри листинг 1).

Теперь необходимо создать isakmpd.policy(5), содержащий политику для всех IPsec-соединений:

ЛИСТИНГ

KeyNote-Version: 2

Authorizer: "POLICY"

Conditions: app_domain == "IPsec policy" &&

doi == "ipsec" &&

ah_present == "no" &&

esp_present == "yes" &&

(esp_enc_alg == "aes" && esp_auth_alg == "hmac-sha") &&

esp_encapsulation == "tunnel" &&

pfs == "yes" -> "true";

Выставляешь корректные права доступа для конфигов:

ЛИСТИНГ

# chown root:wheel /etc/isakmpd/isakmpd.*

# chmod 600 /etc/isakmpd/isakmpd.*

И запускаешь демона на орбиту, предварительно отказавшись от использования протокола IPv6 и реализации NAT-Traversal:

ЛИСТИНГ

# isakmpd -4T

[конфигурация брандмауэра.]

Для работы IPsec необходимо открыть порт 500/udp, по которому идет обмен сертификатами и ключами, а также разрешить прохождение зашифрованного трафика. Изменяешь правила файрвола, как показано в листинге 2.

С помощью зарезервированного макроса «:network» определяется CIDR-нотация сети. В нашем случае конструкция «$int_if:network» будет означать 192.168.2.0/24 (то есть маска подсети 255.255.255.0).

И даешь указание штатной утилите pfctl(8) перечитать набор «рулесетов»:

ЛИСТИНГ

# pfctl -f /etc/pf.conf

[на стороне клиента.]

Назад на стр. 072-024-1  Содержание  Вперед на стр. 072-024-3