Документация по ОС FreeBSD Четверг, 02.05.2024, 00:21
Приветствую Вас Гость | RSS
Меню сайта

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

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

FreeBSD IPSEC: Racoon + сертификаты X.509 + сертификаты X.509 (Часть 1)
Введение
 
Это краткое руководство описывает процесс настройки racoon на использование сертификатов X.509 вместо предопределенных ключей.
 
Сертификаты
Создание CA
 
Прежде всего, стоит загрузить несколько файлов с одного из указанных мест:
На всякий случай, копии файлов привожу в Приложении А.

После загрузки Makefile и openssl.cnf, вероятнее всего, потребуется редактирование файла openssl.cnf для того, чтобы изменить имена ответственных лиц и наименование организации. Также стоит поместить их в отдельный каталог, например, ssl.

После редактирования openssl.cnf, выполните:
 
make init
 
Если вам интересно, то make init делает следующее:
 
test ! -f serial
mkdir crl newcerts private
chmod go-rwx private
echo '01' > serial
touch index
openssl req -nodes -config openssl.cnf -days 1825 -x509 -newkey rsa -out ca-cert.pem -outform PEM
 
Создание сертификата X.509
 
Теперь, когда мы имеем CA, мы можем создавать сертификаты для машин, образующих туннель. Вместо
hostX рекомендую указывать имя вашей машины.

Сгенерируем частный ключ:
 
openssl genrsa -out hostX.key
 
Генерируем сертификат:
 
openssl req -new -nodes -key hostX.key -out hostX.csr
 
Используем Makefile:
 
make sign
 
Теперь у нас имеется подписанный нами же сертификат X.509. Необходимо повторить эти действия для всех имеющихся у нас машин.

Если одолело любопытство по поводу того, что делает make sign, то это следущее:
 
openssl ca -batch -config openssl.cnf -in hostX.csr -out hostX.cert
 
Создаем туннель
 
Для примера, мы будем использовать фиктивные IP адреса 3.3.3.3 и 4.4.4.4 вместо "реальных" IP. Для наших туннельных оконечных точек, мы будем использовать 10.1.1.1 на машине 3.3.3.3 и 10.1.2.1 на машине 4.4.4.4.

На
машине 3.3.3.3:
 
ifconfig gif0 create
ifconfig gif0 tunnel 3.3.3.3 4.4.4.4
ifconfig gif0 inet 10.1.1.1 10.1.2.1
 
Соответственно, необходимо прописать и на машине 4.4.4.4.
 
Маршрутизация
 
В этом примере, мы имеем две конечные точки нашего туннеля. Пусть одной из них будет вторичный сервер DNS, а второй точкой будет маршрутизатор, на котором выполняется NAT для локальной сети. Естественным нашим желанием будет обеспечить доступность DNS сервера из локальной сети, для чего на нем (имеющем адрес 4.4.4.4) необходимо выполнить:
 
route add -net 172.16 -interface gif0
 
Возможно, вам придется изменить префикс, например, для большого количества сетей используются сети 192.168.х.х . Больше никаких маршрутов прописывать нигде не придется, так как NAT у нас уже сконфигурирован необходимым образом на маршрутизацию пакетов из внутренней сети.
Проверка туннеля перед использованием IPSEC
Нижеследущее предполагает наличие разрешающих правил на пакетном фильтре. Вам необходимо разрешить пакеты IP-в-IP (в /etc/protocols это ipencap). С DNS сервера (4.4.4.4) выполняем:
 
ping 172.16.0.100
 
И, соответственно, с ping 172.16.0.100:
 
ping 10.1.2.1
 
Если что-то не работает, то давайте подумаем, где мы могли совершить ошибку. Отталкивайтесь от следующего:
  1. Вы правильно сконфигурировали интерфейс gif?
  2. Вы прописали статический маршрут на сервере DNS?
 
IPSEC
Конфигурация ядра
 
Для шифрования пакетов нам необходима поддержка IPSEC на уровне ядра. Удостовериться в этом и добавить, при необходимости, можно, имея исходные тексты ядра.

Скопируем файл конфгурации ядра GENERIC под некоторым именем:
 
cp /usr/src/sys/i386/conf/GENERIC
/usr/src/sys/i386/conf/FRANK-N-BEANS
 
Добавим в файл следущие строки:
 
options   IPSEC         #IP security
options   IPSEC_ESP     #IP security (crypto; define w/ IPSEC)
options   IPSEC_DEBUG   #debug for IP security
 
Компилируем и устанавливаем новое ядро:
 
cd /usr/src && make KERCONF=FRANK-N-BEANS buildkernel && make KERNCONF=FRANK-N-BEANS installkernel && reboot
 
Конфигурация Racoon для использования сертификатов X.509
 
Сначала, необходимо перенести сертификаты (ca-cert.pem, hostX.key, hostX.cert) на машину, на которой они будут находиться, в каталог /usr/local/etc/racoon/cert. Внесите соответствующие изменения в racoon.conf и замените адреса удаленных точек, на используемые вами. Нижеследущая конфигурация используется на машине с NAT:
 
remote 10.1.2.1
{
  exchange_mode main,aggressive;
  doi ipsec_doi;
 
  situation identity_only;
  my_identifier asn1dn;
  peers_identifier asn1dn;
  verify_identifier on;
  certificate_type x509 "hostX.cert" "hostX.key";
  nonce_size 16;
  lifetime time 1 min;    # sec,min,hour
 
  support_mip6 on;
 
  proposal_check strict;  # obey, strict or claim
 
 proposal {
 
    encryption_algorithm 3des;
    hash_algorithm sha1;
    authentication_method rsasig ;
    dh_group 2 ;
  }
}
Убедитесь, что прописан правильный путь к сертификатам:
 
path certificate "/usr/local/etc/racoon/cert";
 
Укажем racoon, где находится сетрификат CA, ca-cert.pem:
 
ln -s ca-cert.pem `openssl x509 -noout -hash -in ca-cert.pem`.0
 
Создаем записи SPD
 
В заключение, нам необходимо создать правила IPSEC, которые будут передаваться ядру. Прописать их надо на каждом конце туннеля. Вот что должно быть помещено в /etc/ipsec.conf:
 
flush;
spdflush;
 
spdadd 10.1.2.1/32 10.1.1.1/32 any -P in  ipsec esp/tunnel/10.1.2.1-10.1.1.1/require;
spdadd 10.1.1.1/32 10.1.2.1/32 any -P out ipsec esp/tunnel/10.1.1.1-10.1.2.1/require;
 
spdadd 172.16.0.0/16 10.1.2.1/32 any -P out ipsec esp/tunnel/10.1.1.1-10.1.2.1/require;
spdadd 10.1.2.1/32 172.16.0.0/16 any -P in ipsec esp/tunnel/10.1.2.1-10.1.1.1/require;
 
Запуск IPSEC из /etc/rc.conf
 
cloned_interfaces="gif0"
 
gif_interfaces="gif0"
gifconfig_gif0="3.3.3.3 4.4.4.4"
 
ifconfig_gif0="inet 10.1.1.1 10.1.2.1"
 
racoon_enable="YES"
racoon_flags="-f /usr/local/etc/racoon/racoon.conf"
 
ipsec_enable="YES"
 
Для второй машины просто измените IP адреса.
 
Категория: Net | Добавил: oleg (14.11.2007)
Просмотров: 1243 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

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

Copyright MyCorp © 2024