под защитой криптотуннеля 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 [на стороне клиента.] |