IPsec в OpenBSD

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

Короткий URL: ipsec/openbsd

На этой странице рассматривается процедура настройки IPsec в OpenBSD.

[править] Материалы по IPsec на xgu.ru

Обозначим цели, которые мы хотим достигнуть: мы хотим объединить две удаленные сети через Виртуальную Частную Сеть IPSec (VPN). Обе сети используют OpenBSD Network Address Translation (NAT). Сеть А Внешний IP адрес: 1.2.3.4, диапазон внутренних адресов: 10.1.1.0/24 Сеть В Внешний IP адрес: 5.6.7.8, диапазон внутренних адресов: 10.2.2.0/24

Файл конфигурации PF, предоставляющего службы брандмауэра и NAT, называется /etc/pf.conf. На обеих системах в этом примере, pf.conf должен выглядеть следующим образом:


     ext_if="fxp0"
     int_if="fxp1"
     set skip on { lo $int_if }
     nat on $ext_if from !($ext_if) -> ($ext_if:0)
     block in
     pass out keep state

На обоих системах включен форвардинг пакетов, расскоментировав опцию "net.ip.forwarding=1" в /etc/sysctl.conf, так как он необходим для функционирования службы NAT. Для включения форвардинга сразу, до перезагрузки, также стоит сделать

sysctl -w net.ip.forwarding=1

Теперь, когда у нас есть две должным образом настроенные системы, приступим к настройке VPN.

Шаг 1. конфигурируем IPSec Добавим следущие строки к файлу /etc/ipsec.conf на маршрутизаторе А:


     ike esp from 10.1.1.0/24 to 10.2.2.0/24 peer 5.6.7.8
     ike esp from 1.2.3.4 to 10.2.2.0/24 peer 5.6.7.8
     ike esp from 1.2.3.4 to 5.6.7.8

В том же файле на маршрутизаторе В:


     ike passive esp from 10.2.2.0/24 to 10.1.1.0/24 peer 1.2.3.4
     ike passive esp from 5.6.7.8 to 10.1.1.0/24 peer 1.2.3.4
     ike passive esp from 5.6.7.8 to 1.2.3.4

Ключ passive указывает на то, что маршрутизатор А инициирует соединение, а маршрутизатор В готовится принять вызов.

Шаг 2. Пропускаем IPSec через брандмауэр На маршрутизаторе А добавляем следующее в /etc/pf.conf:


     pass quick on $ext_if from 5.6.7.8

И заменяем строку "set skip" с:


     set skip on { lo $int_if }

на:


     set skip on { lo $int_if enc0 }

Таким образом мы добавим инкапсулированный интерфейс enc0 в список.

Теперь очередь маршрутизатора В. Добавим следующие строки в /etc/pf.conf:


     pass quick on $ext_if  from 1.2.3.4
     set skip on { lo $int_if enc0 }

Поскольку мы подготовили firewall/NAT и IPSec, приступим к копированию ключей.

Шаг 3. Копируем ключи isakmpd на каждую машину На маршрутизаторе A (1.2.3.4) копируем /etc/isakmpd/private/local.pub с маршрутизатора В в /etc/isakmpd/pubkeys/ipv4/5.6.7.8.

Аналогично, на маршрутизаторе В (1.2.3.4) копируем /etc/isakmpd/private/local.pub с маршрутизатора А в /etc/isakmpd/pubkeys/ipv4/1.2.3.4.

В случае отсутствия файла local.pub в указанном месте его можно сгенерировать следующей командой:

openssl rsa -out /etc/isakmpd/local.pub -in /etc/isakmpd/private/local.key -pubout

Также, надо отметить, что /etc/isakmpd/pubkeys/ipv4/1.2.3.4 и etc/isakmpd/pubkeys/ipv4/5.6.7.8 в указанном примере - файлы, а не каталоги.

Обратите внимание, что хотя в данном примере и использованы IP адреса, можно совершенно спокойно использовать имена FQDN. При использовании доменных имен храните ключи в каталоге /etc/isakmpd/pubkeys/fqdn и ключи srcid и dstid в /etc/ipsec.conf.

Шаг 4. Запуск VPN Для установления VPN соединения выполните следующие команды:


     isakmpd -K
     ipsecctl -f /etc/ipsec.conf

Шаг 5. Автоматический запуск после перезагрузки Запускаемые при старте системы демоны прописываются в файле /etc/rc.conf. Добавьте в него следующие строки:


     isakmpd="-K"
     PF=YES

Также необходимо убедиться в том, что ipsecctl тоже запускается при начальной загрузке. Для этого добавьте следующую строку в /etc/rc.local:


     ipsecctl -f /etc/ipsec.conf

В заключение, можно отредактировать файл /etc/changelist на обоих маршрутизаторах, для того, чтобы убедиться, что ваш новый /etc/ipsec.conf там перечислен. Этот шаг не обязателен, но позволит посылать письма администратору в случае любых изменений в вашей конфигурации IPSec. Для осуществления этой затеи необходимо указать ваш почтовый адрес в /etc/mail/aliases и выполнить команду newaliases. Если Вы знакомы с pf и pfctl, ipsecctl будет очень прост и приятен в управлении, обеспечивая очень подобный интерфейс. Другими словами, вы можете получить состояние потоков ipsec и ca командой:


     ipsecctl -sa