BSDPORTAL.RU

На этом сайте обсуждаются вопросы использования ОС FreeBSD
 Портал  •  Статьи  •  Форум  •  Wiki  •  Поиск  •  FAQ  •  Обои  •   Официальная документация  •  Новые темы 

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: VPN via IPSec
СообщениеДобавлено: Ср 27 окт, 2004 4:05 pm 
Не в сети
Newsmaker
Аватара пользователя

Зарегистрирован: Пт 05 мар, 2004 9:34 am
Сообщения: 754
Откуда: Новосибирск
Может и мне внести свои пять копеек.

Давича поднимал VPN на базе IPSec между офисной локалкой и компом начальника стоящим в "домашней сети". Собственно всё эт делалось для работы с Terminal Application Server на базе Citrix MwtaFrane XP локальной сети конторы.

К чему эт я .... ах да ...
По ходу дела писал шпоры. Если народу будет интересно, то всё это можно привести к удобочитаемому виду :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 27 окт, 2004 4:17 pm 
Не в сети
Newsmaker

Зарегистрирован: Пт 01 окт, 2004 7:02 pm
Сообщения: 67
goood.
удобочитаемый вид это хорошо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 27 окт, 2004 4:19 pm 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: Вт 24 дек, 2002 3:55 pm
Сообщения: 3959
Откуда: Россия, Ростов-на-Дону
ясный день что интересно
народ каждый день подобные вопросы задает


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт 28 окт, 2004 6:15 pm 
Не в сети
Newsmaker
Аватара пользователя

Зарегистрирован: Пт 05 мар, 2004 9:34 am
Сообщения: 754
Откуда: Новосибирск
Вот тут http://uint.ru/books/index.html лежит макет. К понедельнику хочу закончить.

Прозьба попинать если что не так, потому как не графоман я :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт 29 окт, 2004 10:55 am 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: Вт 24 дек, 2002 3:55 pm
Сообщения: 3959
Откуда: Россия, Ростов-на-Дону
классно, особенно оформление понравилось
как в "документацию" его добавиш дай мне знать мылом или асей
я проверю последний раз, авторизую и в ленту новостей добавлю


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн 01 ноя, 2004 11:51 pm 
Не в сети
Newsmaker
Аватара пользователя

Зарегистрирован: Пт 05 мар, 2004 9:34 am
Сообщения: 754
Откуда: Новосибирск
тут лежит RC1 :lol:

Каким образом его опубликовать в разделе документации не потеряв в офрмлении :shock:

Может в новосте/статье просто дать ссылу ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт 02 ноя, 2004 1:08 pm 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: Вт 24 дек, 2002 3:55 pm
Сообщения: 3959
Откуда: Россия, Ростов-на-Дону
вышли мне html
я все сделаю


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт 02 ноя, 2004 1:22 pm 
Не в сети
Newsmaker
Аватара пользователя

Зарегистрирован: Пт 05 мар, 2004 9:34 am
Сообщения: 754
Откуда: Новосибирск
sys писал(а):
вышли мне html
я все сделаю


Хм ... написано на чистом HTML, так что любой браузер отобразит исходники 'как есть'. Могу конечно и продублировать на sys@bsdportal.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Вариант RC1 в BBCode
СообщениеДобавлено: Ср 03 ноя, 2004 5:19 pm 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: Вт 24 дек, 2002 3:55 pm
Сообщения: 3959
Откуда: Россия, Ростов-на-Дону
Задача:
Настройка VPN между локальной сетью организации и домашним ПК, подключенным к "домашней" сети с фейковыми адресами 192.168.0.0. Сразу хочу оговорить, что и "домашняя" сеть, и офис фирмы подключены к одному ISP. Поэтому, в результате пинания оного, была достигнута договорённость о настройке маршрутизации трафика между адресами 192.168.64.x и 217.117.x.x на стороне ISP.

И ещё одно замечание. С целью максимально обезопасить комп, стоящий в "домашней" сети, я настоял на том, чтобы спрятать Windows 2000 Pro за шлюзом на базе всё той же FreeBSD. Заодно появилась возможность сплавить старый P-166 с 64RAM на симах.
Исходные данные:
Оба шлюза имеют схожую конфигурацию в плане установленных FreeBSD 4.10, racoon, natd, etc.
Схематический набросок топологии сети
Изображение
A - шлюз провайдера.
B - свич/хаб в локальной сети.

Установка и настройка.

1. Конфигурация ядра.
2. Настройка туннеля.
3. Установка и настройка racoon.
4. Настройка nat, ipfw etc.



1. Конфигурация ядра.
Для поддержки IPSec добавляем в ядро FreeBSD следующие опции:
Код:
# ee /usr/src/sys/i386/conf/KERNEL
..
options         IPDIVERT      # Включаем поддержку NAT
options         IPFIREWALL              # Firewall. По умолчанию правило add deny all from any to any  !!!
..
options         IPSEC
options         IPSEC_ESP
options         IPSEC_DEBUG
..


По желанию добавляем дополнительные опции, как то
Код:
options         IPSTEALTH
options         RANDOM_IP_ID
options         ICMP_BANDLIM
options         TCP_DROP_SYNFIN
options         IPSEC_FILTERGIF


и т.д. Последняя опция справедлива для ipfw2 и включает фильтрацию пакетов проходащих через ipsec. Подробнее в /usr/src/sys/i386/conf/LINT для FreeBSD 4.x или /usr/src/sys/conf/NOTES для FreeBSD 5.x .Для работы туннеля необходимо добавить (если отсутствует)
Код:
pseudo-device   gif             # IPv6 and IPv4 tunneling



Далее пересобираем ядро.


# config KERNEL
# cd ../../compile/KERNEL
# make depend && make && make install
# shutdown -r now

2. Настройка туннеля.
Собственно сам VPN настраивается 'поднятием' туннеля между двумя сетями с помощью gif (generic tunnel interface). После добавления оного в ядро и перезагрузки можно приступить к конфигурации интерфейса.
Для шлюза с IP 217.117.x.x

# ifconfig gif0 create
# gifconfig gif0 217.117.x.x 192.168.64.x
# ifconfig gif0 inet 192.168.10.1 10.10.10.1 netmask 0xffffffff
# route add 10.10.10.0/24 10.10.10.1

Если всё прошло успешно, то ifconfig -a выдаст следующее:

...
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
tunnel inet 217.117.x.x --> 192.168.64.x
inet 192.168.10.1 --> 10.10.10.1 netmask 0xffffffff

Для автоматизации данного процесса можно пойти двумя путями. Прописав все в /etc/rc.conf
Код:
cloned_interfaces="gif0"
gifconfig_gif0="217.117.x.x 192.168.64.x"
ifconfig_gif0="inet 192.168.10.1 10.10.10.1 netmask 0xffffffff"
static_routes="vpn"
route_vpn="10.10.10.0/24 10.10.10.1"



что является правильным с "идеологической" точки зрения, или в виде скрипта в /usr/local/etc/rc.d/001_if_gif.sh
Код:
#!/bin/sh

/sbin/ifconfig gif0 create && \
/usr/sbin/gifconfig gif0 217.117.x.x 192.168.64.x && \
/sbin/ifconfig gif0 inet 192.168.10.1 10.10.10.1 netmask 0xffffffff && \
/sbin/route add 10.10.10.0/24 10.10.10.1



Для шлюза с IP 192.168.64.x
/etc/rc.conf
Код:
cloned_interfaces="gif0"
gifconfig_gif0="192.168.64.x 217.117.x.x"
ifconfig_gif0="inet 10.10.10.1 192.168.10.1 netmask 0xffffffff"
static_routes="vpn"
route_vpn="192.168.10.0/24 192.168.10.1"



или /usr/local/etc/rc.d/001_if_gif.sh
Код:
#!/bin/sh

/sbin/ifconfig gif0 create && \
/usr/sbin/gifconfig gif0 192.168.64.x 217.117.x.x&& \
/sbin/ifconfig gif0 inet 10.10.10.1 192.168.10.1 netmask 0xffffffff && \
/sbin/route add 192.168.10.0/24 192.168.10.1



Дабы закрыть весь трафик, проходящий между адресами 217.117.x.x и 192.168.64.x, от посторонних глаз (а ля tcpdump), необходимо установить и настроить racoon - IKE (ISAKMP/Oakley) key management daemon.

3. Установка и настройка racoon.
Устанавливаем racoon из портов:

# cd /usr/ports/security/racoon/
# make && make install

После чего можно приступить к настройке. После установки все конфиги хранятся в каталоге /usr/local/etc/racoon/. Если быть точным, то файлов конфигурации всего два

racoon.conf.dist
psk.txt.dist

Скопируем их в рабочие конфиги

cp racoon.conf.dist > racoon.conf
cp psk.txt.dist > psk.txt

Первый отвечает за работу самого демона racoon, а во втором хранятся 'связки' host password необходимые для первичной авторизации между машинами, устанавливающими соединение, т.н. 'phase 1'. Сам метод авторизации и файл со 'связками' определяются в racoon.conf
Код:
...
path pre_shared_key "/usr/local/etc/racoon/psk.txt";
...
proposal {
     ...
          authentication_method pre_shared_key;
     ...
               }
...


Формат файла предельно прост. В нашем случае: На машине с IP 217.117.x.x
Код:
192.168.64.x     SupER_Pa$woRD



На машине с IP 192.168.64.x
Код:
217.117.x.x   SupER_Pa$word



И ещё одно важное замечание. Права доступа на файл psk.txt должны быть установлены в 0600. т.е.


# chmod 0600 psk.txt
# ls -l
-rw------- 1 root wheel 42 12 окт 10:54 psk.txt
...

Иначе racoon откажется стартовать.

Ниже приводится 'работающий' racoon.conf с комментариями по мере возможности.
Код:
######################################
## /usr/local/etc/racoon/racoon.conf #
######################################

path include "/usr/local/etc/racoon" ;
path pre_shared_key "/usr/local/etc/racoon/psk.txt" ;

padding
{
        maximum_length 20;
        randomize on;
        strict_check on;
        exclusive_tail off;
}


listen
{
        #isakmp ::1 [7000];
        #isakmp 202.249.11.124 [500];
        #admin [7002];
        #strict_address;
}

timer
{
        counter 5;
        interval 10 sec;
        persend 1;
        phase1 30 sec;
        phase2 15 sec;
}

remote anonymous
{
        exchange_mode aggressive,main;
        nonce_size 16;
        lifetime time 10 min;       # sec,min,hour
        initial_contact on;
        support_proxy off;
        proposal_check obey;        # obey, strict or claim

        proposal {
                encryption_algorithm 3des;
                hash_algorithm sha1;
                authentication_method pre_shared_key ;
                dh_group 2 ;
        }
}


sainfo anonymous
{
        lifetime time 10 min;
        encryption_algorithm rijndael;
        authentication_algorithm hmac_sha1;
        compression_algorithm deflate ;
}



Proposal
authentication_method
Алгоритм шифрования используемый в первой фазе (phase 1).
Допусимые значения des, 3des, blowfish, cast128.
hash_algorithm Хэш алгоритм использаемый в фазе 1.
Допустимые значения md5, sha1.
authentication_method Допустимые значения: pre_shared_key (в нашем случае), rsasig, gssapi_krb.
rsasig - сокращённое от "RSA Signature". Метод авторизации с использованием сертификатов. Если вы будете использовать данную опцию, то в файле конфигурации необходимо указать каталог в котором они расположены.
Код:
path certificate "/usr/local/etc/cert";

Сертификаты и RSA-ключи создаються с помощью пакета OpenSSL.
dh_group Параметр указывает группу используемую для Diffie-Hellman exponentiations.

exponentiations - возвдение в степень.
"Криптосистемы Diffie-Hellman основываются на односторонней функции возведения в степень по модулю. Обратная задача дискретного логарифмирования решается только перебором."

Данная деректива может принимать одно из значений modp768, modp1024, modp1536. Или 1, 2, 5.


Более подробно в man racoon.conf. Тут приведены минимальные нстройки необходимые для запуска racoon.

Далее необходимо создать стартовые скрипты. Первым делом подготовим к запуску setkey - утилиты управляющей базой Security Association Database. Для этого полезно в каталог, откуда читаются стартовые скрипты (/usr/local/etc/rc.d/), добавить следующий файл
Для шлюза с IP 217.117.x.x
Код:
[/usr/local/etc/rc.d]# cat 000_ipsec.sh
#!/bin/sh

setkey -FP
setkey -F


setkey -c << END
spdadd 217.117.x.x/32 192.168.64.x/32 any -P out ipsec
esp/transport/217.117.x.x-192.168.64.x/require;

spdadd 192.168.64.x/32 217.117.x.x/32 any -P in  ipsec
esp/transport/192.168.64.x-217.117.x.x/require;

END
#
[/usr/local/etc/rc.d]#



Для шлюза с IP 192.168.64.x
Код:
[/usr/local/etc/rc.d]# cat 000_ipsec.sh
#!/bin/sh

setkey -FP
setkey -F


setkey -c << END
spdadd 192.168.64.x/32 217.117.x.x/32 any -P out ipsec
esp/transport/192.168.64.x-217.117.x.x/require;

spdadd 217.117.x.x/32 192.168.64.x/32 any -P in  ipsec
esp/transport/217.117.x.x-192.168.64.x/require;

END
#
[/usr/local/etc/rc.d]#



Имя файла выбираем на свой вкус. Единственные правила - это а) файл должен иметь расширение .sh б) должен быть установлен бит 'x'. Подробнее man setkey

И второй скрипт
Код:
[/usr/local/etc/rc.d]# cat 010_racoon.sh
#!/bin/sh

case "$1" in
        start)
                if [ -x /usr/local/sbin/racoon ]; then
                        /usr/local/sbin/racoon -f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon &&  \
                        echo -n ' racoon'
                fi
        ;;

        stop)
                /usr/bin/killall racoon && echo -n ' racoon'
        ;;

        *)
                echo "Usage: `basename $0` { start | stop }"
                exit 64
        ;;
esac
exit 0
[/usr/local/etc/rc.d]#



Сам файл не претендует на полноту, но для запуска и остановки этого хватит. Проверяем


[/usr/local/etc/rc.d]# sh 000_ipsec.sh
[/usr/local/etc/rc.d]# sh 010_racoon.sh
[/usr/local/etc/rc.d]# ps -ax | grep -v grep | grep racoon
220 ?? Ss 0:09,63 /usr/local/sbin/racoon -f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon
[/usr/local/etc/rc.d]#

И внимательно читаем /var/log/racoon ...

4. Настройка natd, ipfw, etc.
Не буду описывать настройи ipfw в целом. Так как топология и политика безопасности у каждого своя, то в данном случае будем придерживаться правила "не навреди", т.е. затронем только те аспекты, которые касаются непосредственно работы нашего vpn.

Итак /etc/rc.firewall. Первое правило которое добавляем
Для шлюза с IP 217.117.x.x
Код:
${fwcmd} add pass all from 10.10.10.2/32 to 192.168.10.0/24 in  via gif0
${fwcmd} add pass all from 192.168.10.0/24 to 10.10.10.2/32 out via gif0



Для шлюза с IP 192.168.64.x
Код:
${fwcmd} add pass all from 192.168.10.0/24 to 10.10.10.2/32 in  via gif0
${fwcmd} add pass all from 10.10.10.2/32 to 192.168.10.0/24 out via gif0



т.е. разрешаем работать с локальной сетью организации только компьютеру с адресом 10.10.10.2 (см. топологию сети)
Далее добавляем правила для обмена ключами и работы racoon
Для шлюза с IP 217.117.x.x
Код:
${fwcmd} add pass udp from 217.117.x.x to 192.168.64.x isakmp
${fwcmd} add pass udp from 192.168.64.x to 217.117.x.x isakmp

${fwcmd} add pass esp from 217.117.x.x to 192.168.64.x
${fwcmd} add pass esp from 192.168.64.x to 217.117.x.x



Для шлюза с IP 192.168.64.x
Код:
${fwcmd} add pass udp from 192.168.64.x to 217.117.x.x isakmp
${fwcmd} add pass udp from 217.117.x.x to 192.168.64.x isakmp

${fwcmd} add pass esp from 192.168.64.x to 217.117.x.x
${fwcmd} add pass esp from 217.117.x.x to 192.168.64.x



Теперь было бы не плохо дать возможность работать с HOME_NET компьютеру с IP 10.10.10.2. Для этого поднимаем обычный natd на интерфейсе с адресом 192.168.64.x
Код:
[/etc]# cat rc.conf
...
natd_enable="YES"
natd_flags="-n xl1"
...
[/etc]#



и правила для ipfw
Код:
[/etc]# cat rc.conf
...
${fwcmd} add divert natd all from 10.10.10.2/32 to any out via rl0
${fwcmd} add divert natd all from any to 192.168.64.x in via rl0
...
[/etc]#



ИТОГ
В итоге имеем компьютер с адресом 10.10.10.2 подключенный к локальной сети организации через туннель gif0, и к сети HOME_NET через natd. Для всей 'заразы', а ля вирусы черви, из HOME_NET IP 10.10.10.2 становится не досягаем. Посмотрев трафик между адресами 217.117.x.x. <--> 192.168.64.x


[~]# tcpdump -X -i rl0 host 217.117.x.x

получим
Код:
01:03:21.723011 192.168.64.x > 217.117.x.x: ESP(spi=0x041e7993,seq=0x989)
0x0000   4500 0068 3750 0000 1e32 35d4 c0a8 42f8        E..h7P...25...B.
0x0010   d975 522a 041e 7993 0000 0989 0d1f d772        .uR*..y........r
0x0020   62c9 3709 a845 862d f12f 474a c2aa 6be3        b.7..E.-./GJ..k.
0x0030   52b3 0ba7 bc15 e785 8b2a bc92 79bd cdf0        R........*..y...
0x0040   d767 6c0e a6ad bfe9 86d7 57f6 b3ec 5a79^C
1715 packets received by filter
750 packets dropped by kernel
[/etc]#



Наличие ESP(spi=0x041e7993,seq=0x989) и нечетабельных кракозябр в поле DATA говорит о том что трафик зашифрован. Собственно говоря нечетабельные кракозябры и были причиной всех вышеперечисленных действий.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 03 ноя, 2004 5:22 pm 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: Вт 24 дек, 2002 3:55 pm
Сообщения: 3959
Откуда: Россия, Ростов-на-Дону
это был вариант форматирования в BBCode
если устраивает то я его размещю вместе со ссылкой на html вариант


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 03 ноя, 2004 6:17 pm 
Не в сети
Newsmaker
Аватара пользователя

Зарегистрирован: Пт 05 мар, 2004 9:34 am
Сообщения: 754
Откуда: Новосибирск
sys писал(а):
если устраивает


Вполне :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Зарегистрированные пользователи: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
Яндекс.Метрика