The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

[FreeBSD] Установка и настройка IPSec туннеля на FreeBSD. (freebsd ipsec tunnel)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: freebsd, ipsec, tunnel,  (найти похожие документы)
From: http://securityportal.ru Subject: [FreeBSD] Установка и настройка IPSec туннеля на FreeBSD. Оригинал: http://securityportal.ru/network/SettingupFreeBSDIPSecTunnel.html Анг. оригинал: http://www.freebsddiary.org/ipsec-tunnel.php Установка и настройка IPSec туннеля на FreeBSD. По мотивам статьи "Setting up a FreeBSD IPSec Tunnel", написанной John J. Rushford <[email protected]> Введение Предположим, вам нужно объединить 2 различных сети, находящихся в разных офисах (возможно даже в разных городах), причем так, чтобы была возможность получить доступ к открытым для доступа из сети папкам на рабочих станциях с ОС от Microsoft, сетевым принтерам. Чтобы была возможность полноценно работать с сетевым окружением в системах от Microsoft между двумя офисами за приемлемую цену и с невысокими временными издержками. Помимо этого, допустим, вам нужно иметь web-сервер и почтовый сервер. Этого можно добиться, соединив каждый из офисов с интернет, скажем, по xDSL технологии, что сравнительно не дорого для предлагаемых скоростей в 1-7 Мбит/с. В каждой из двух сетей установим по одной машине на FreeBSD 4.2-STABLE, которые будут выполнять роль межсетевого экрана (firewall) и шлюза в интернет. Т.к. эти машины будут иметь постоянное соединение с интернет, а также благодаря надежности ОС FreeBSD, на них следует установить почтовые и web-сервера (если необходимо), а также Samba-сервер (см. рис. 1). Шлюз, обозначенный bsd1 будет выполнять роль контроллера домена для Windows, первичного Wins-сервера, а также мастер-браузера для домена MS, который мы назовем scanningcomp. Машина bsd1 с FreeBSD 4.2 имеет внутренний адрес 192.168.1.254, машина bsd2 с FreeBSD 4.2 имеет внутренний адрес 192.168.2.254. Диапазоны 192.168.x.x предназначены для внутреннего использования и их обычно назначают во внутренних сетях. Внешние IP-адреса будут являться конечными точками для организации VPN. Предположим, что внешние адреса будут 172.16.1.254 и 172.17.1.254 для bsd1 и bsd2 соответственно. Рисунок 1. Соединение с Internet. Предположим, что стоит некий DSL модем (например от Cisco), который передает ваши пакеты по PPP (или любому другому протоколу) провайдеру. Пусть как bsd1, так и bsd2 подсоединены каждый к своему модему через сетевой интерфейс rl0. Соответственно, в файле /etc/rc.conf должен быть прописан для данного интерфейса внешний адрес. Настройка сети Microsoft. Для того, чтобы работать с сетью Microsoft, пользоваться открытыми для доступа из сети папкам на рабочих станциях с ОС от Microsoft, сетевыми принтерами между двумя сетями на обе машины с FreeBSD установлена Samba 2.0.7, однако рекомендуем взять последнюю версию пакеты под FreeBSD (например, версию 2.0.10), в основном из-за соображений безопасности. ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-01:45.samba.asc На обеих машинах не создавались никакие открытые по сети ресурсы, они обеспечивают только вход в сеть, сервисы WINS для двух сетей 192.168.1.0 и 192.168.2.0. bsd1 сконфигурирован как основной контроллер домена (primary domain controller) и как WINS сервер для обоих сетей. bsd2 сконфигурирован как мастер-браузер для своей сети и как прокси WINS-сервер с основным сервером bsd1. Все компьютеры с Windows сконфигурированы получать IP адрес от bsd1 и bsd2 через DHCP сервер, установленный на каждой из FreeBSD-машин. DHCP сервера сконфигурированы обслуживать только внутренние сетевые интерфейсы. Они также помимо адреса выдают свои адреса в качестве шлюза по умолчанию (default gateway), широковещательные адреса и адрес сервера имен netbios - 192.168.1.254. bsd1 сконфигурирован в качестве почтового сервера, соответственно, на всех машинах с Windows в Microsoft Outlook прописан в качестве SMTP и POP3 сервера его адрес 192.168.1.254. В качестве обслуживающей POP-клиентов программы на bsd1 установлен qpopper (/usr/ports/mail/qpopper). Заметим, что для того, чтобы нормально функционировала почта, внешний адрес bsd1 должен быть прописан в MX записях зоны, которую он обслуживает. На обоих машинах также был установлен и настроен named для обслуживания DNS запросов, перенаправляя их к DNS серверу провайдера. На машину bsd1 установлен Webmin для управления пользователями и сконфигурирован таким образом, что smbpasswd устанавливается равным паролю unix, т.е. оба пароля одинаковы. Конфигурация ядра FreeBSD 4.2-STABLE Обе машины с FreeBSD должны быть сконфигурированы в качестве межсетевых экранов (firewalls) для защиты внутренних сетей и должны иметь опции IPSec для организации туннеля. Посему, в конфигурации ядра должны быть следующие опции (конфиг ядра находится в /usr/src/sys/i386/conf/). # IP security options IPSEC options IPSEC_ESP options IPSEC_DEBUG # Псевдо-интерфейс для тунеля pseudo-device gif 4 # Berkeley packet filter для dhcp. pseudo-device bpf 4 # Firewall options IPFIREWALL options IPDIVERT options IPFILTER options IPFILTER_LOG Для запуска firewall должны быть следующие опции в файле /etc/rc.conf: gateway_enable="YES" defaultrouter="172.x.1.110" # - выдается провайдером - адрес шлюза в интернет firewall_enable="YES" firewall_type="open" natd_enable="YES" natd_interface="rl0" named_enable="YES" Конфигурация туннеля IPSec FreeBSD 4.2-STABLE Чтобы обеспечить автоматический обмен ключами для работы IPSec между двумя FreeBSD-машинами, загрузим и установим демон raacon, который находится в коллекции потров. Выполните: #cd /usr/ports/security/racoon ; make all install clean После установки конфигурационные файлы для racoon находятся в /usr/loca/etc/racoon/. Не будем менять конфигурацию по умолчанию, т.е. оставим файл /usr/local/etc/racoon/racoon.conf как есть. Отредактируем файл ключа (/usr/local/etc/racoon/psk.txt), добавив туда секретные ключи. # /usr/local/etc/racoon/psk.txt # IPv4/v6 addresses # 192.168.1.254 testkey 192.168.2.254 testkey Файл с ключами следует защитить и установить права 0600: # chown root.wheel /usr/local/etc/racoon/psk.txt # chmod 0600 /usr/local/etc/racoon/psk.txt Для того, чтобы автоматически стартовать racoon при загрузке, создадим скрипт /etc/rc.local: #!/bin/sh # # /etc/rc.local # # dhcp server if [ -x /usr/local/sbin/dhcpd ]; then echo -n "dhcpd " /usr/local/sbin/dhcpd -cf /etc/dhcpd.conf rl1 fi # webmin server if [ -x /etc/webmin/start ]; then echo -n "webmin " /etc/webmin/start fi # racoon key exchange server if [ -x /usr/local/sbin/racoon ]; then echo -n "racoon " /usr/local/sbin/racoon -f /usr/local/etc/racoon/racoon.conf fi Или же можно создать свои и поместить их /usr/local/etc/rc.d/. Для того, чтобы создать соединение и обеспечить маршрут между двумя сетями, создадим следующий скрипт /usr/local/etc/rc.d/tunnel.sh: #!/bin/sh # BSD1_IP="192.168.1.254" BSD1_PUB_IP="172.16.1.254" BSD1_NET="192.168.1.0/24" BSD2_IP="192.168.2.254" BSD2_PUB_IP="172.17.1.254" BSD2_NET="192.168.2.0/24" GIF0="gif0 inet" GIFCONFIG="/usr/sbin/gifconfig" IFCONFIG="/sbin/ifconfig" HOSTNAME=`/bin/hostname` NETMASK="255.255.255.0" echo "\nStarting ipsec tunnel... " case $HOSTNAME in bsd1) $GIFCONFIG $GIF0 $BSD1_PUB_IP $BSD2_PUB_IP $IFCONFIG $GIF0 $BSD1_IP $BSD2_IP $NETMASK /usr/sbin/setkey -FP /usr/sbin/setkey -F /usr/sbin/setkey -c << EOF spdadd $BSD1_NET $BSD2_NET any -P out ipsec esp/tunnel/${BSD1_IP}-${BSD2_IP}/require; spdadd $BSD2_NET $BSD1_NET any -P in ipsec esp/tunnel/${BSD2_IP}-${BSD1_IP}/require; EOF /sbin/route add $BSD2_NET $BSD1_IP ;; bsd2) $GIFCONFIG $GIF0 $BSD2_PUB_IP $BSD1_PUB_IP $IFCONFIG $GIF0 $BSD2_IP $BSD1_IP $NETMASK /usr/sbin/setkey -FP /usr/sbin/setkey -F /usr/sbin/setkey -c << EOF spdadd $BSD2_NET $BSD1_NET any -P out ipsec esp/tunnel/${BSD2_IP}-${BSD1_IP}/require; spdadd $BSD1_NET $BSD2_NET any -P in ipsec esp/tunnel/${BSD1_IP}-${BSD2_IP}/require; EOF /sbin/route add $BSD1_NET $BSD2_IP ;; esac Важно заметить, что конечными точками туннеля являются 192.168.1.254 и 192.168.2.254. Широковещательный трафик не будет проходить между сетями (это следует учесть при настройке Samba, т.к. следует использовать IP адрес сервера, а не широковещательный адрес для remote_announce в другой сети). После перекомпиляции ядра и перезагрузке шлюзы при первом обращении из одной сети в другую установят шифрованное соединение между собой, по которому будет проходить межсетевой трафик. Ссылки: - Setting up a FreeBSD IPSec Tunnel (http://www.freebsddiary.org/ipsec-tunnel.php) - NetBSD Documentation: NetBSD IPsec (http://www.netbsd.org/Documentation/network/ipsec/) - FreeBSD IPsec mini-HOWTO (http://www.daemonnews.org/200101/ipsec-howto.html)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру