С помощью IPsec также можно подключить целую сеть (глобальную или локальную) к другой сети, организовав межсетевое соединение. Для организации межсетевого соединения нужно установить маршрутизаторы IPsec в каждой сети так, чтобы трафик узла одной сети обрабатывался и достигал узла в удалённой сети. На рисунке 6-2 показан туннель IPsec, соединяющий сети между собой.
На рисунке показаны две отдельные сети, разделенные Интернетом. В этих сетях работают маршрутизаторы IPsec, проверяющие подлинность и организующие соединение через безопасный туннель, проходящий через Интернет. Если пакеты будут перехвачены во время передачи, для взлома защищающего их шифра потребуется применение метода грубой силы. Процесс соединения узлов из IP-сети 192.168.1.0/24 с узлами в сети 192.168.2.0/24 для них полностью прозрачен, так как задача по обработке, шифрованию, дешифрованию и маршрутизации пакетов целиком лежит на маршрутизаторах IPsec.
Для настройки межсетевого соединения потребуются следующие данные:
Доступные снаружи IP-адреса выделенных маршрутизаторов IPsec
Диапазоны адресов локальных/глобальных сетей, обслуживаемых маршрутизаторами IPsec (например, 192.168.0.0/24 или 10.0.1.0/24)
IP-адреса интерфейсов шлюзов, маршрутизирующих трафик узлов сети в Интернет
Уникальное имя соединения IPsec, выделяющее его среди других устройств или соединений (например, ipsec0)
Постоянный или автоматически созданный с помощью racoon ключ шифрования
Предварительный общий ключ проверки подлинности, используемый для установки соединения и обмена ключами шифровании во время сеанса связи
Предположим, например, что требуется организовать туннель IPsec между сетью A (lana.example.com) и сетью B (lanb.example.com). Сеть A имеет адрес 192.168.1.0/24, а сеть B — 192.168.2.0/24. IP-адрес шлюза в сети A — 192.168.1.254, а в сети B — 192.168.2.254. Маршрутизаторы IPsec реализованы отдельно от шлюзов и используют два сетевых интерфейса: eth0 — имеет статический, доступный снаружи IP-адрес, обращённый к Интернету, а eth1 принимает и обрабатывает пакеты, следующие из локальной сети в удалённую.
Соединение IPsec между сетями использует предварительный общий ключ r3dh4tl1nux, кроме этого администраторы сетей A и B договорились использовать racoon для автоматического создания и обмена ключом проверки подлинности между маршрутизаторами IPsec. Администратор сети A назвал IPSEC-соединение ipsec0, а администратор сети B — ipsec1.
Ниже приведён файл ifcfg, созданный для межсетевого соединения IPsec в сети A. В данном примере это соединение имеет уникальное имя ipsec1, поэтому получившийся файл называется /etc/sysconfig/network-scripts/ifcfg-ipsec1.
TYPE=IPsec ONBOOT=yes IKE_METHOD=PSK SRCGW=192.168.1.254 DSTGW=192.168.2.254 SRCNET=192.168.1.0/24 DSTNET=192.168.2.0/24 DST=X.X.X.X |
Это соединение устанавливается при загрузке (ONBOOT=yes) и использует метод проверки подлинности с предварительным общим ключом (IKE_METHOD=PSK). Администратор сети A указывает шлюз получателя, то есть шлюз сети B (DSTGW=192.168.2.254), а также шлюз источника — шлюз сети A (SRCGW=192.168.1.254). Затем администратор определяет сеть получателя — сеть B (DSTNET=192.168.2.0/24), и сеть источника — (SRCNET=192.168.1.0/24). И, наконец, администратор вводит IP-адрес получателя — доступный снаружи IP-адрес сети B (X.X.X.X).
Ниже показан файл с предварительным общим ключом (названный /etc/sysconfig/network-scripts/keys-ipsecX, где X равен 0 для сети A или 1 — для сети B), позволяющий сетям проверить подлинность друг друга. Содержимое этого файла должно совпадать на обоих маршрутизаторах, а доступ к нему должен иметь только пользователь root.
IKE_PSK=r3dh4tl1nux |
Важно | ||
---|---|---|
Чтобы ограничить доступ к файлу keys-ipsec0, позволив читать и изменять его только пользователю root, выполните после создание файла следующее:
|
Ключ проверки подлинности можно изменить в любое время, для этого на IPsec-маршрутизаторах нужно отредактировать файл keys-ipsecX. Чтобы соединение было установлено, оба ключа должны совпадать.
Ниже показан файл конфигурации /etc/racoon/racoon.conf для соединения IPsec. Заметьте, что строка include присутствует в нижней части файла, только если работает туннель IPsec, так как она автоматически создаётся при каждой активации IPsec-соединения.
# Racoon IKE daemon configuration file. # See 'man racoon.conf' for a description of the format and entries. path include "/etc/racoon"; path pre_shared_key "/etc/racoon/psk.txt"; path certificate "/etc/racoon/certs"; sainfo anonymous { pfs_group 2; lifetime time 1 hour ; encryption_algorithm 3des, blowfish 448, rijndael ; authentication_algorithm hmac_sha1, hmac_md5 ; compression_algorithm deflate ; } include "/etc/racoon/X.X.X.X.conf" |
Ниже приведена конфигурация конкретного соединения с удалённой сетью. Этот файл называется X.X.X.X.conf (замените X.X.X.X IP-адресом удалённого маршрутизатора IPsec). Учтите, что этот файл создаётся автоматически при активации туннеля IPsec и редактировать его вручную не следует.
; remote X.X.X.X { exchange_mode aggressive, main; my_identifier address; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2 ; } } |
До запуска соединения IPsec следует включить маршрутизацию IP в ядре. Для этого в приглашении оболочки выполните под именем root следующее:
Отредактируйте /etc/sysctl.conf и задайте net.ipv4.ip_forward равным 1.
Чтобы изменение вступило в силу, выполните команду:
sysctl -p /etc/sysctl.conf |
Установить соединение можно, либо перезагрузив маршрутизаторы IPsec, либо выполнив на маршрутизаторах от имени root следующую команду:
/sbin/ifup ipsec0 |
Как только соединение будет установлено, сети A и B смогут связываться друг с другом. Маршруты автоматически создаёт сценарий инициализации, вызываемый командой ifup при активизации соединения IPsec. Чтобы просмотреть список сетевых маршрутов, выполните команду:
/sbin/ip route list |
Чтобы проверить IPsec-соединение, запустите утилиту tcpdump и, проанализировав сетевые пакеты, передаваемые между узлами (или сетями) на внешнем интерфейсе (в нашем примере — eth0), убедитесь в том, что они зашифрованы IPsec. Например, чтобы проверить IPsec-соединение с сетью A, введите следующее:
tcpdump -n -i eth0 host lana.example.com |
Пакет должен содержать заголовок AH и данные ESP. ESP означает, что шифрование работает. Ниже показан пример такого пакета (обратная косая черта обозначает продолжение одной строки):
12:24:26.155529 lanb.example.com > lana.example.com: AH(spi=0x021c9834,seq=0x358): \ lanb.example.com > lana.example.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \ (ipip-proto-4) |