|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> Security
—> ipsec_vpnc
Настройка ipsec vpn концентратора для cisco vpn clients
Автор: Mad_caterpillar.
Постановка задачи:
Настроить 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
На время тестирования запускаем так
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.tjhsst.edu/admin/livedoc/index.php/IPSec_VPN
http://www.netbsd.org/docs/network/ipsec/rasvpn.html
http://www.lacave.net/~fred/racoon/config.html
http://www.daemon-systems.org/man/racoon.conf.5.html
http://www.daemon-systems.org/man/setkey.8.html
Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=8&t=16121&start=0.
размещено: 2009-03-04,
последнее обновление: 2009-03-05,
автор: Mad_caterpillar
|
|
|
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth"a
Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli
Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master
MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones
Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)
Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
|
Комментарии пользователей [2 шт.]