Настройка ipsec vpn концентратора для cisco vpn clients [2009]
Постановка задачи: Настроить client-to-site IPSec VPN, основными клиентами которого будут Cisco VPN clients. Авторизация должна осуществятся через Microsoft Active Directory.
Входные данные: Cisco VPN client 5.0 - ПО со стороны клиента, используется преимущественно за NAT FreeBSD 6.2 release - VPN концентратор и шлюз в Интернет по совместительству
Лирическое отступление: Изначально поставленная задача не совместима с требованием Cisco использовать их VPN Client только с концентраторами Cisco, но мы про это никому не скажем ;) В крайнем случае можно использовать какой-нибудь другой клиент, поддерживающий IPSec например Shrew VPN Client.
Введение: В качестве IPSec implementation будем использовать ipsec-tools от KAME. Авторизовать пользователей будем через RADIUS. В роли последнего решено использовать Microsoft IAS, дабы упростить себе жизнь с Active Directory и не задействовать samba В связи с особенностями реализации IPSec команией Cisco, их клиент и racoon не будут работать с psk (pre-shared key), поэтому мы задействуем гибридную аутентификацию с использованием x509 сертификатов. В качестве межсетевого экрана использован packet filter (pf) — на мой взгляд, один из самых лучших брандмауэров для BSD систем.
Реализация: Качаем и ставим патч для ядра. Внимание (!) перед установкой патча, убедитесь что у вас есть исходники всей системы (src all).
cd /usr/src/sys
fetch http://vanhu.free.fr/FreeBSD/patch-natt-freebsd6-2007-05-31.diff
patch < patch-natt-freebsd6-2007-05-31.diff
cd /usr/src/sys/i386/conf
в своем любимом редакторе добавляем строки в файл конфигурации ядра # Для Fast IPSec
cd /usr/src
make buildkernel KERNCONF=MYKERN
make installkernel KERNCONF=MYKERN
reboot
После перезагрузки с новым ядром компилируем и ставим мир
cd /usr/src
make buildworld
make installworld
reboot
После перезагрузки:
uname -a
FreeBSD inet1 6.2-RELEASE FreeBSD 6.2-RELEASE #3: \
Mon Dec 2916:55:30 EET 2008 root@inet1:/usr/obj/usr/src/sys/MYKERN i386
Ставим ipsec-tools
cd /usr/ports/security/ipsec-tools
make install clean
mkdir -p /usr/local/etc/racoon/cert
mkdir /var/run/racoon
touch /usr/local/etc/racoon/racoon.conf
В окне конфигурации я отметил следующие пункты:
[X] DEBUG enable Debug support
[X] ADMINPORT enable Admin port
[X] DPD enable Dead Peer Detection
[X] NATT enable NAT-Traversal (kernel-patch required)
[X] NATTF require NAT-Traversal (fail without kernel-patch)
[X] FRAG enable IKE fragmentation payload support
[X] HYBRID enable Hybrid, Xauth and Mode-cfg support
[X] PAM enable PAM authentication (Xauth server)
[X] RADIUS enable Radius authentication (Xauth server)
[X] LDAP enable LDAP authentication (Xauth server)
Генерируем сертификат. Способ взят с netbsd.org. Каждый, конечно, может выбрать для себя любой другой, более удобный, способ. Генерируем приватный ключ и используем его для создания Запроса на Подпись Сертификата - Certificate Signing Request (CSR):
Для того, чтобы логи писались в нужный нам файл, в /etc/syslog.conf добавляем строки:
!racoon
*.* /var/log/racoon.log
В файерволе необходимо разрешить подключение по портам 500 и 4500, а также протоколы esp и ipencap. В IAS создаем клиента (наш vpn концентратор) и политику доступа — метод доступа VPN аутентификация PAP. Клиенту нужно скопировать сертификат ca.crt и импортировать его в cisco vpn client При создании нового подключения, выбрать Mutual group Authentication, а в полях Name Password указать любую информацию. Все остальные настройки оставить по умолчанию
Проблемы которые могут возникнуть 1.Не собирается ipsec-tools. На этапе сборки выдает примерно следующее:
/usr/local/include/openssl/sha.h:194: error: previous declaration of 'SHA512_Final' was here *** Error code 1
Решение: необходимо удалить\переместить каталог /usr/local/include/openssl
2.Не собирается ipsec-tool с поддержкой радиус. На этапе сборки выдает следующее:
isakmp_cfg.o(.text+0x33f8):/usr/ports/security/ipsec-tools/work/ ipsec-tools-0.7.1/src/racoon/isakmp_cfg.c:1632: undefined reference to `rad_strerror'
Решение: эта ошибка появляется в следствии установленного радиус сервера, типа freeradius, который заменяет стандартные библиотеки системы на свои собственные. Необходимо пересобрать радиус сервер с указанием нестандартного размещения библиотек Другой вариант, использовать радиус на отдельном сервере.
3.Демон racoon стартует, Cisco VPN Client соединяется, но пакеты не ходят. Второй и последующие клиенты работают нормально. Решение:такое наблюдалось только на тестовой машине, вышел из ситуации установкой vpnc и запуском его с пустым vpnc-script. На свеже установленной системе этот глюк исчез
4.Не импортируется сертификат в Cisco VPN client Решение: добавьте пустую строку после -----END CERTIFICATE-----