Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  немного о безопасности
  VPN (PoPToP)
  PortSentry
  sysctl
  vtund
  ipfwcount
  FreeBSD & DSA
  mpd – легко и просто!
  mpd + freeradius + mysql
  Бронированный FreeBSD
  sshit
  DSL-G804V и FreeBSD 6.2
  portaudit
  OpenVPN
  Bluetooth proximity monitor
  ESET NOD32
  GEOM-ELI
  stunnel для pop3,smtp
  NOD32 mirror
  mpd5 + ipfw-nat
  Openvpn 2 офиса
  Hotspot
  OpenVPN+авторизация
  termlog
  mpd5 + сжатие и шифрование
  ipsec_vpnc
  TOR Сервер
  Snort на FreeBSD
  Arpwatch
  Установка и настройка OpenVPN
  NOD32_mirror_v2
  Fail2ban
  IPSec
  Перенос OpenVPN сервера
  Wpa/WPA2-Radius+EAP-TLS/EAP-PEAP
  nod32 mirror script
  MAC + apache
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


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
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.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



Ссылка на обсуждение: Incorrect URL.

размещено: 2009-03-04,
последнее обновление: 2009-03-05,
автор: Mad_caterpillar

оценить статью:

Grass_snake, 2009-03-06 в 10:11:57

"В связи с особенностями реализации IPSec команией Cisco, их клиент и racoon  не  будут работать с  psk (pre-shared key)".

Тут мне не понятно. Цитата касается только случая Cisco  VPN clients (ПО, устанавливаемое на отдельный хост) <--->  IPSec VPN (racoon)? Или же речь идёт о двух маршрутизаторах, Cisco и BSD, реализующих туннель с IPSec между собой?

Просто второй вариант я делал. Именно с psk, если не ошибаюсь.

Mad_caterpillar, 2009-03-06 в 10:33:05

Да. Это касается только клиента cisco (Cisco VPN Client) http://www.cisco.com/en/US/products/sw/secursw/ps2308/


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

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&quota

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-22, Mufanu
named 9.7.0

Система доменных имен (Domain Name Service, DNS) - одна из тех незаметных, закулисных программ, которым не уделяется и половины того внимания, которого они заслуживают.
2010-03-09, terminus
DNS zones

Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 6 чел.
За последние 30 мин было: 42 человек
За сегодня было
4396 показов,
567 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1399 секунд
Из них PHP: 57%; SQL: 43%; Число SQL-запросов: 77 шт.
Исходный размер: 112011; Сжатая: 21607