Построение защищенного туннеля
Довольно распространена ситуация, когда в организации в
качестве шлюза в интернет выступает сервер с UNIX или
UNIX-подобной операционной системой. Ниже мы расскажем, как
построить защищенный туннель между шлюзом на основе FreeBSD и
маршрутизатором Linksys BEFVP41.
Прежде чем продолжать, рекомендуем вам ознакомиться с
другими материалами о VPN. Например, со статьей «Построение безопасных сетей на основе VPN»
на нашем сайте.
Исходные данные:
- В центральном офисе доступ в интернет осуществляется
через шлюз, построенный на основе FreeBSD 6.2
- Локальная сеть центрального офиса — 172.16.0.0/24
- Адрес внутреннего интерфейса шлюза — 172.16.0.254
- Адрес внешнего интерфейса шлюза — 1.1.1.1
- В удаленном филиале доступ в интернет осуществляется
через маршрутизатор Linksys BEFVP41
- Локальная сеть филиала — 172.16.1.0/24
- Адрес внутреннего интерфейса шлюза в филиале —
172.16.1.254
- Адрес внешнего интерфейса шлюза в филиале — 2.2.2.2
Адреса для локальных сетей 172.16.0.0/24 и 172.16.1.0/24
входят в один из диапазонов для частных IP-адресов,
определенных RFC 1918, адреса внешних интерфейсов 1.1.1.1
и 2.2.2.2 приведены только для примера.
Необходимо установить защищенное соединение между сетями
центрального офиса и удаленного филиала.
Конфигурирование FreeBSD 6.2
Для поддержки IPSec в ядро системы добавляем следующие
опции:
# IPSec
options IPSEC
options IPSEC_ESP
options
IPSEC_DEBUG
Кроме того, убедитесь, что в ядре присутствует
псевдоустройство gif:
# Pseudo devices
device gif
Теперь необходимо пересобрать и установить новое ядро.
После перезапуска системы с новым ядром потребуется
установить сервер обмена ключами. Мы выбрали racoon, установка
производилась из порта /usr/ports/security/ipsec-tools/. Перед
установкой желательно обновить коллекцию портов. Мы установили
ipsec-tools со следующими опциями:
Дополнительную информацию о конфигурировании, сборке,
установке ядра и обновлении портов можно найти, например, на
сайте проекта OpenNet.
После установки ipsec-tools осталось сконфигурировать
racoon, обеспечить его автоматический запуск вместе со стартом
системы, настроить правила IPSec, создать файл ключа и
настроить необходимые разрешения файрвола.
Добавляем следующие строки в /etc/rc.conf:
# Создаем gif-интерфейс
cloned_interfaces="gif0"
#
Создаем
туннель
gif_interfaces="gif0"
gifconfig_gif0="1.1.1.1
2.2.2.2"
ifconfig_gif0="inet 172.16.0.254 172.16.1.254
netmask 255.255.255.0"
# Добавляем правило статической
маршрутизации
static_routes="Filial"
route_Filial="172.16.1.0/24
-interface gif0"
# Включаем racoon и
ipsec
racoon_enable="YES"
racoon_flags="-l
/var/log/racoon.log"
ipsec_enable="YES"
ipsec_file="/usr/local/etc/racoon/ipsec.conf"
Конфигурируем racoon; для этого создаем и редактируем файл
/usr/local/etc/racoon/racoon.conf:
path include "/usr/local/etc/racoon";
path
pre_shared_key "/usr/local/etc/racoon/psk.txt";
log notify;
# Для отладки могут пригодиться "debug" или
"debug2"
padding
{
maximum_length 20;
randomize
off;
strict_check off;
exclusive_tail off;
}
listen
{
isakmp 1.1.1.1 [500]; # Адрес и порт
сервиса обмена ключами
}
timer
{
counter 5;
interval 20 sec;
persend 1;
phase1 30 sec;
phase2 15 sec;
}
remote
anonymous
{
exchange_mode main,aggressive;
doi
ipsec_doi;
situation identity_only;
nonce_size 16;
lifetime time 3600 sec;
initial_contact on;
support_proxy on;
proposal_check obey;
proposal
{
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method
pre_shared_key;
dh_group 2;
}
}
sainfo
anonymous
{
pfs_group 1;
lifetime time 3600 sec;
encryption_algorithm 3des;
authentication_algorithm
hmac_sha1;
compression_algorithm deflate;
}
Для шифрования выбран алгоритм 3DES, для аутентификации —
алгоритм хеширования SHA1, как наиболее криптостойкие из
поддерживаемых маршрутизатором Linksys BEFVP41.
Создаем и редактируем файл ключей
/usr/local/etc/racoon/psk.txt:
2.2.2.2 qwerty123
где 2.2.2.2 — внешний адрес удаленного шлюза, qwerty123 —
ключ, отделенный от адреса знаком табуляции (приведен только
для примера, используйте более длинные и надежные ключи!). На
файл ключа должна быть задана маска доступа 600, владелец -
root, группа - wheel.
Сконфигурируем IPSec; для этого создадим и отредактируем
файл /usr/local/etc/racoon/ipsec.conf:
flush;
spdflush;
spdadd 172.16.0.0/24
172.16.1.0/24 any -P out ipsec
esp/tunnel/1.1.1.1-2.2.2.2/require;
spdadd 172.16.1.0/24
172.16.0.0/24 any -P in ipsec
esp/tunnel/2.2.2.2-1.1.1.1/require;
На этом конфигурирование туннеля на стороне шлюза с FreeBSD
завершено, но полезно еще в файл /etc/sysctl.conf добавить
строку:
net.key.preferred_oldsa=0
Это поможет решить проблему с восстановлением туннеля после
перезагрузки шлюза. При наличии нескольких ключей будет
выбираться самый свежий.
Ну и, наконец, потребуется внести соответствующие изменения
в файрвол. Для ipfw необходимый набор правил будет выглядеть
приблизительно так:
ipfw add 10 allow udp from 1.1.1.1 to 2.2.2.2
isakmp
ipfw add 20 allow udp from 2.2.2.2 to 1.1.1.1
isakmp
ipfw add 30 allow esp from 1.1.1.1 to
2.2.2.2
ipfw add 40 allow esp from 2.2.2.2 to
1.1.1.1
ipfw add 50 allow ipencap from 1.1.1.1 to
2.2.2.2
ipfw add 60 allow ipencap from 2.2.2.2 to
1.1.1.1
ipfw add 70 allow ip from 172.16.0.0/24 to
172.16.1.0/24
ipfw add 80 allow ip from 172.16.1.0/24 to
172.16.0.0/24
Конфигурирование Linksys BEFVP41
Конфигурирование Linksys BEFVP41 сложности не представляет
и сводится к указанию IP-адресов и выбору необходимых
параметров туннеля из выпадающих списков. По окончании
конфигурирования необходимо нажать Save Settings.
Полностью конфигурация нашего туннеля приведена на
скриншотах ниже. Заметим только, что настройки VPN
Passthrough непосредственно к нашему туннелю отношения не
имеют, а указывают, будет ли доступна возможность установки
соответствующих туннелей сквозь маршрутизатор.
Security — VPN
Advanced Setting
Заключение
В этот раз нам оказалось сложно давать какие-либо оценки,
так как перед нами - классический VPN-маршрутизатор класса
SOHO, выделяющийся среди остальных разве что гордым логотипом
«Cisco Systems» на лицевой панели, необычной конструкцией
ножек корпуса и, на наш взгляд, довольно удобным и продуманным
веб-интерфейсом. Одно нарекание у нас все-таки есть, и
относится оно, как ни странно, тоже к веб-интерфейсу. В
некоторых местах реально видимая картина на страницах
конфигурирования не совпадала со справкой, доступной по ссылке
More... с этих же страниц. В остальном же маршрутизатор
Linksys BEFVP41 показал себя хорошей рабочей лошадкой, он,
несомненно, должен найти своего покупателя.
На момент написания статьи средняя розничная цена
устройства по России составляла менее четырех тысяч рублей.
Оборудование предоставлено НПК «Контакт» в г.
Новосибирске.