Документация по ОС FreeBSD Суббота, 20.04.2024, 10:38
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » VPN

Настройка 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
device crypto
options FAST_IPSEC
options IPSEC_NAT_T

# Для pf — ALTQ по желанию :)
options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_PRIQ
options ALTQ_NOPCC
device pf
device pflog

Компилируем и ставим ядро
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 29 16: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):
mkdir -p /etc/openssl/certs
сd /etc/openssl
umask 077
openssl genrsa > certs/vpngw.key
umask 022
openssl req -new -key certs/vpngw.key -out certs/vpngw.csr

Создаем свой собственный СА,  на основании него,  выписываем само-подписной сертификат
mkdir -p demoCA/newcerts
touch demoCA/index.txt
echo "00" > demoCA/serial
umask 077
openssl genrsa > certs/ca.key
umask 022
openssl req -days 3650 -x509 -key certs/ca.key -new > certs/ca.crt
openssl ca -in certs/vpngw.csr -keyfile certs/ca.key \
 -cert certs/ca.crt -out certs/vpngw.crt

Полученный сертификат,  вместе  с приватным  ключом  и СА  копируем в директорию  cert racoon'a
cp ./certs/*.crt ./certs/*.key /usr/local/etc/racoon/cert

Затем выполняем магическую процедуру
ln -s ca.crt `openssl x509 -noout -hash -in ca.crt`.0.

Вот так выглядит листинг директории у меня после всех этих процедур:
ll 
total 10 
lrwxr-xr-x 1 root wheel 6 Dec 21 20:23 17814e12.0. -> ca.crt
-rw-r--r-- 1 root wheel 1208 Dec 18 11:26 ca.crt
-rw------- 1 root wheel 493 Dec 18 11:26 ca.key
-rw-r--r-- 1 root wheel 3119 Dec 18 11:26 vpngw.crt
-rw------- 1 root wheel 493 Dec 18 11:24 vpngw.key 

Мой конфигурационный файл racoon.conf
path include "/usr/local/etc/racoon" ;
path certificate "/usr/local/etc/racoon/cert";
listen { 
 isakmp my.public.ip.addr [500];
 isakmp_natt my.public.ip.addr [4500];
}

log notify;
#log debug2; # используем на этапе тестирования

padding {
 maximum_length 20; # максимальная длина дополнительного блока
 randomize off; # включить случайную длину
 strict_check off; # включить строгую проверку
 exclusive_tail off; # извлекать последний октет
}

listen {
 # для racoonctl, можно поставить в disabled;
 adminsock "/var/run/racoon/racoon.sock";


timer {
 # Эти параметры могут быть изменены удаленным узлом
 counter 5; # максимальное число попыток для отправки
 interval 20 sec; # максимальный интервал повтора пересылки
 persend 1; # максимальное число пакетов на отправку
 # Таймер ожидания завершения каждой фазы
 phase1 30 sec;
 phase2 15 sec;
}

Параметры IKE фазы 1 для всех подключений (анонимных)
remote anonymous {
 exchange_mode aggressive; # режим обмена для IKE фазы 1
 nonce_size 16; # размер случайного числа
 lifetime time 1440 min; # sec, min, hour
 initial_contact on;
 proposal_check obey; # подчинится инициатору предложения
 certificate_type x509 "vpngw.crt" "vpngw.key";
 my_identifier asn1dn;
 verify_identifier on;
 verify_cert off;
 weak_phase1_check on;
 support_proxy on;
 passive on;
 generate_policy on; # автоматически генерировать IPsec политики
 dpd_delay 20; # детектор мертвых соединений
 nat_traversal force; # всегда использовать NAT-T
 ike_frag on; # использовать фрагментацию IKE
 #esp_frag 552; # использовать фрагментацию ESP на 552 байт

 proposal {
 encryption_algorithm 3des;
 hash_algorithm sha1;
 authentication_method hybrid_rsa_server;
 dh_group modp1024;
 }
}

# Параметры конфигурации режима ISAKMP
mode_cfg {
 network4 192.168.1.2;
 netmask4 255.255.255.255;
 pool_size 200; # размер IP VPN пула
 auth_source radius; # авторизация через RADIUS
 #conf_source radius; # IPv4 адрес выдаваемый RADIUS
 accounting radius; # учет в RADIUS
 #auth_source pam;
 #conf_source local;
 dns4 10.100.10.12; # IPv4 DNS сервер
 wins4 10.100.10.12; # IPv4 WINS сервер
 banner "/usr/local/etc/racoon/motd"; # Сообщение для клиентов
 pfs_group 2;
 split_network include 10.100.10.0/24;
}

# sayinfo спецификация для IKE фазы 2
sainfo anonymous {
 pfs_group 2;
 lifetime time 1 hour;
 encryption_algorithm 3des;
 authentication_algorithm hmac_sha1;
 compression_algorithm deflate;
}

Конфигурационный файл /etc/radius.conf
auth radius.ip.addr testpass
acct radius.ip.addr testpass

Добавляем в rc.conf
racoon_enable=YES

На время тестирования запускаем так
racoon -F

SAD/SPD можно посмотреть коммандами
/usr/local/sbin/setkey -D
/usr/local/sbin/setkey -DP

Для того, чтобы логи писались в нужный нам файл, в  /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-----


Источник: http://www.lissyara.su/?id=1887
Категория: VPN | Добавил: oleg (10.03.2009) | Автор: Mad_caterpillar
Просмотров: 1751 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024