OSS Group OSS Group
>  Карта
>  Поиск
>  Контакты
>  OSS Group  ::  Admin  ::  Настройка соединений IPsec с использованием ipsec-tools
  
РегистрацияЗабыли пароль?

↓  Быстрый поиск по Wiki


Режим поиска:   И   ИЛИ

↓  Доступные Wiki

↓  Навигация по сайту

[]

↓  Последняя новость

Загрузка...

↓  На эту страницу ссылаются:

Get Firefox!
[~]

Настройка соединений IPsec с использованием ipsec-tools

Для настройки каналов IPsec требуется:

  • загрузка необходимых модулей ядра (для IPv4 - ah4, esp4, ipcomp, af_key, xfrm4_mode_transport, xfrm4_mode_tunnel);
  • настройка правил iptables для разрешения туннелируемого трафика;
  • заполнение таблицы SPD;
  • настройка и запуск демона обмена ключами по протоколу IKE, или ручное заполнение таблицы SAD.

Непосредственно работа с IPsec в ядрах 2.6.x осуществляется на уровне самого ядра, заполнение таблиц SPD и SAD, а также реализация IKE осуществляются дополнительными утилитами. IPsec-Tools (пакет ipsec-tools ) - один из возможных наборов утилит, включающий в себя утилиту для работы с таблицами SAD и SPD setkey и демон обмена ключами по протоколу IKE racoon.

Рассмотрим сеть вида

                        Gateway1                                
{192.168.0.0/24} <-> 192.168.0.254                 Gateway2
                        172.16.0.1  < ...... >   172.31.255.1
                                                   10.0.0.254 <-> {10.0.0.0/24}

Пусть требуется обеспечить туннель IPsec между хостами Gateway1 и Gateway2 для обеспечения связи
сетей 192.168.0.0/24 и 10.0.0.0/24. Внешние IP шлюзов известны и не меняются.

Для создания туннеля IPsec требуется два SA, для передачи трафика в каждую из сторон. Таблица SPD заполняется с помощью утилиты setkey, описания политик хранятся в /etc/racoon/setkey.conf. Описание политик на Gateway1 (/etc/racoon/setkey.conf):

# /usr/sbin/setkey -f
#
# Flush SAD and SPD
flush;
spdflush;

# Create policies for racoon
spdadd 192.168.0.0/24 10.0.0.0/24 any -P out 
	ipsec esp/tunnel/172.16.0.1-172.31.255.1/require;
spdadd 10.0.0.0/24 192.168.0.0/24 any -P in 
	ipsec esp/tunnel/172.31.255.1-172.16.0.1/require;

Для Gateway2 описание политик зеркальное:

spdadd 10.0.0.0/24 192.168.0.0/24 any -P out 
	ipsec esp/tunnel/172.31.255.1-172.16.0.1/require;
spdadd 192.168.0.0/24 10.0.0.0/24 any -P in
	ipsec esp/tunnel/172.16.0.1-172.31.255.1/require;

Содержимое файла /etc/racoon/setkey.conf загружается в SPD при запуске/перезапуске сервиса racoon. Просмотреть текущее содержание SPD можно командами 'setkey -DP' или 'ip xfrm policy'. Политики для проходящих через шлюз пакетов (-P fwd) setkey добавляет самостоятельно.

Минимальная конфигурация racoon (/etc/racoon/racoon.conf):

# File with key ID/key pairs, for pre-shared key authentication.
path pre_shared_key "/etc/racoon/psk.txt";

# "log" specifies logging level.  It is followed by either "notify", "debug" or "debug2".
log notify;

# "padding" defines some padding parameters.  You should not touch these.
padding
{
        maximum_length 20;      # maximum padding length.
        randomize off;          # enable randomize length.
        strict_check off;       # enable strict check.
        exclusive_tail off;     # extract last one octet.
}

# Specify various default timers.
timer
{
        # These value can be changed per remote node.
        counter 5;              # maximum trying count to send.
        interval 20 sec;        # maximum interval to resend.
        persend 1;              # the number of packets per send.

        # maximum time to wait for completing each phase.
        phase1 30 sec;
        phase2 15 sec;
}

# if no listen directive is specified, racoon will listen on all
# available interface addresses.
listen
{
        isakmp  172.16.0.1 [500];           # IP [port] for ISAKMP protocol
#      isakmp_natt  172.16.0.1 [4500];  # IP [port] for NAT-T protocol
        strict_address;  # requires that all addresses must be bound.
}

remote 172.31.255.1 {
        exchange_mode main;
#      nat_traversal on;
        proposal {
                encryption_algorithm 3des;
                hash_algorithm md5;
                authentication_method pre_shared_key;
                dh_group modp1024;
        }
}

sainfo address 192.168.0.0/24 any address 10.0.0.0/24 any {
        pfs_group modp1024;
        lifetime time 30 min;
        encryption_algorithm 3des;
        authentication_algorithm hmac_md5;
        compression_algorithm deflate;
}

Для Gateway конфигурация racoon аналогична, за исключением адреса внешнего интерфейса в listen и секций remote и sainfo:

remote 172.0.0.1 {
        exchange_mode main;
#      nat_traversal on;
        proposal {
                encryption_algorithm aes;
                hash_algorithm md5;
                authentication_method pre_shared_key;
                dh_group modp1024;
        }
}

sainfo address 10.0.0.0/24 any address 192.168.0.0/24 any {
        pfs_group modp1024;
        lifetime time 30 min;
        encryption_algorithm aes;
        authentication_algorithm hmac_md5;
        compression_algorithm deflate;
}

Выбираемые алгоритмы должны быть одинаковыми для обоих сторон туннелей. От выбора алгоритма encryption_algorithm зависит скорость получаемого канала, наилучший выбор - AES. Выбор, например, 3DES приведёт к существенному (в разы) падению скорости соединения.

В /etc/racoon/psk.txt хранятся пары ID/ключ для хостов,

# file for pre-shared keys used for IKE authentication
# format is:  'identifier' 'key'
# For example:
#
# IPv4/v6 addresses
#  10.160.94.3  mekmitasdigoat
#  172.16.1.133 mekmitasdigoat
#  192.168.55.1 whatcertificatereally
#  3ffe:501:410:ffff:200:86ff:fe05:80fa mekmitasdigoat
#  3ffe:501:410:ffff:210:4bff:fea2:8baa mekmitasdigoat
# USER_FQDN
#  foo@www.example.com  micropachycephalosaurus
# FQDN
#  www.example.com              12345

172.31.255.1  some_output_of_pwgen

На Gateway используется тот же ключ, с IP Gateway1 в качестве идентификатора.

После запуска racoon (chkconfig racoon –add && chkconfig racoon on && service racoon start) вносятся записи в SPD и начинает работу демон racoon. Обмен ключами и создание записей в SAD инициируется при появлении трафика, который согласно SPD должен обрабатываться через IPsec.

При этом пакеты из 192.168.0.0/24, предназначающиеся для 10.0.0.0/24, должны согласно правилам маршрутизации уходить с 172.16.0.1, и не обрабатываться SNAT на шлюзе Gateway1. (Т.е., надо помнить, что IPsec пришёл в IPv4 из IPv6, где NAT не нужен).

После появления необходимости в создании записи в SAD racoon запускает процесс обмена ключами, при успешном завершении которого в syslog должны появится записи вида

Oct 24 15:29:46 gateway1 racoon: INFO: IPsec-SA established: ESP/Tunnel 17.31.255.1[0]->17.16.0.1[0] spi=125146770(0x7759692) 
Oct 24 15:29:46 gateway1 racoon: INFO: IPsec-SA established: ESP/Tunnel 17.16.0.1[0]->17.31.255.1[0] spi=3389063184(0xca010010)

В SAD при этом должны появится соответствующие записи (которые можно увидеть по setkey -D, ip xfrm state).

При обращении со шлюза Gateway1 к хостам в сети 10.0.0.0/24 требуется, чтобы пакеты уходили со шлюза с IP 192.168.0.254. Т.е., требуется что-то вида

$ ping -I 192.168.0.254 10.0.0.100

В противном случае пакет не совпадёт с SPD и не будет обрабатываться IPsec.

При анализе трафика tcpdump показывает пакеты непосредственно на интерфейсе.
В случае запуска указанного выше ping команда

tcpdump -i reth0 -nv  host 172.16.0.1 and host 172.31.255.1

должна показывать обмен пакетами по протоколу esp (50), а

tcpdump -i reth0 -nv  host 10.0.0.100 

- получение пакетов ICMP с 10.0.0.100 на 192.168.0.254 (поскольку после получения пакета IPsec и извлечения из него исходного пакета тот снова помещается в очередь интерфейса, где его видит tcpdump). Отправляемые запросы с 192.168.0.254 на 10.0.0.100 tcpdump видеть не может (и показывать не должен).

Ссылки


Дата создания: 2010-10-24 21:44:11 (Фетисов Н. А. (naf))
Последнее изменение: 2010-10-24 21:45:16 (Фетисов Н. А. (naf))
Владелец: Фетисов Н. А. (naf)
Версия: 2  Все версии


 Комментарии (0)


Wiki::Admin   Оглавление  Карта раздела  Изменения за сутки  Изменения за неделю  Изменения за месяц



Valid XHTML 1.0 Transitional  Valid CSS!  [Valid RSS]