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 часа


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

Зарегистрированные пользователи: Bing [Bot], Google [Bot]


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

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