=======Настройка Gre over IPSEC между FreeBSD/Linux, Checkpoint, Cisco======= Статья ниже - вольный и немного обновленный перевод моей [[https://forums.checkpoint.com/forums/message.jspa?messageID=32270|статьи]] 01.2011 на форуме Checkpoint. ==== Введение. ==== Для защиты наших web-сереров было закуплено устройство checkpoint 572 c IPS blade (Это был наш первый checkpoint). Наши сервера располагались в ДЦ collocation.\\ Одной из задач организовать доступ к web-серерам из нашей внутренней сети. Наша еть была достаточно большой. На некоторых точках использовалось избыточное кол-во провайдеров. В качестве динамического протокола маршрутизации мы использовали OSPF. Граничными маршрутизаторами выступали %%FreeBSD%% роутеры и Cisco. Так-же есть и linux устройства. На конфигурацию checkpoint ушло много часов рабочего времени и я решил поделиться опытом с Интернет-сообществом. ==== Упрощенная схема и используемые параметры. ==== {{:ru:jobs:gre_over_ipsec.jpg?400|200}} ***Конфигурация %%FreeBSD%% и Linux во многих случаях совпадает. Дабы не раздувать статью разделы конфигурации Linux и %%FreeBSD%% будут объединены** Для примера примем: **1. Глобальные IP:**\\ %%FreeBSD%%/Linux - IP_A,\\ Global IP Cisco 1841 - IP_B,\\ Global IP Checkpoint 572 - IP_C. **2. Gre IPs:**\\ %%FreeBSD%%/Linux 192.168.0.0/32 to Cisco 1841 192.168.0.1/32\\ %%FreeBSD%%/Linux 192.168.0.2/32 to Checkpoint 572 192.168.0.3/32\\ Cisco 1841 192.168.0.4/32 to Checkpoint 572 192.168.0.5/32 **3.Внутренние сети:**\\ %%FreeBSD%%/Linux 192.168.1.0/24\\ Cisco 1841 192.168.2.0/24\\ Checkpoint 572 192.168.3.0/24 **4. pre shared key** - test **5. IKE policy:**\\ encryption: aes128\\ hash: sha1\\ Diffie-Hellman group: 5 **6. IPSEC policy:**\\ encryption: aes128\\ hash: hmac_sha1\\ Diffie-Hellman group: 5 **7. VPN** - tunnel mode esp **8. ospf area** - 0.0.0.1\\ network 192.168.0.0/16\\ ** В дальнейшем мы не коснемся конфигураций firewall для %%FreeBSD%%/Linux и Cisco.** ==== Конфигурация FreeBSD/Linux. ==== ===FreeBSD=== **1. Необходимые пакеты:**\\ %%FreeBSD%% (версии выше 6.4) Kernel Source\\ Racoon (ipsec-tools)\\ Quagga ( version 0.98.6) **2. Параметры компиляции или установка:**\\ 2.1 Необходимо скомпилировать ядро со следующими флагами:\\ options IPSEC\\ options IPSEC_DEBUG\\ device gre\\ device crypto\\ 2.2. При компиляции Racoon must необходимо включить следующие опции:\\ --enable-adminport --enable-frag\\ 2.3 Quagga необходимо компилироать с опцией ospfd.\\ ===Linux=== **1. Необходимые пакеты:**\\ %%Linux Centos%% (версии 5)\\ Racoon (ipsec-tools)\\ Quagga ( version 0.98.6) **2. Установка:**\\ yum install ipsec-tools quagga **3. Конфигурации пакетов (Все кроме gre-туннелей совпадает)** 3.1 Конфигурация Racoon:\\ **setkey.conf**\\ flush;\\ spdflush;\\ spdadd IP_A IP_B gre -P out ipsec esp/tunnel/IP_A-IP_B/require; #link to cisco 1841\\ spdadd IP_B IP_A gre -P in ipsec esp/tunnel/IP_B-IP_A/require; #link to cisco 1841\\ spdadd IP_A IP_C gre -P out ipsec esp/tunnel/IP_A-IP_C/require; #link to checkpoint 572\\ spdadd IP_C IP_A gre -P in ipsec esp/tunnel/IP_B-IP_C/require; #link to checkpoint 572\\ **racoon.conf**\\ path pre_shared_key "location of pre-shared key file";\\ log debug;\\ padding # options are not to be changed\\ {\\ maximum_length 20;\\ randomize off;\\ strict_check off;\\ exclusive_tail off;\\ }\\ timer # timing options. change as needed\\ {\\ counter 5;\\ interval 20 sec;\\ persend 1;\\ # natt_keepalive 15 sec;\\ phase1 30 sec;\\ phase2 15 sec;\\ }\\ listen # address [port] that racoon will listening on\\ {\\ isakmp IP_A [500];\\ }\\ remote IP_B [500] #link to cisco 1841 isakmp policy\\ {\\ exchange_mode aggressive,main;\\ doi ipsec_doi;\\ situation identity_only;\\ my_identifier address IP_A;\\ peers_identifier address IP_B;\\ lifetime time 8 hour;\\ passive off;\\ proposal_check obey;\\ generate_policy off;\\ proposal {\\ encryption_algorithm aes 128;\\ hash_algorithm sha1;\\ authentication_method pre_shared_key;\\ lifetime time 28800 sec;\\ dh_group 5;\\ }\\ }\\ remote IP_C [500] #link to checkpoint 572 isakmp policy\\ {\\ exchange_mode aggressive,main;\\ doi ipsec_doi;\\ situation identity_only;\\ my_identifier address IP_A;\\ peers_identifier address IP_C;\\ lifetime time 8 hour;\\ passive off;\\ proposal_check obey;\\ generate_policy off;\\ proposal {\\ encryption_algorithm aes 128;\\ hash_algorithm sha1;\\ authentication_method pre_shared_key;\\ lifetime time 28800 sec;\\ dh_group 5;\\ }\\ }\\ sainfo anonymous #IPSEC POLICY\\ {\\ pfs_group 5;\\ lifetime time 28800 sec;\\ encryption_algorithm aes 128;\\ authentication_algorithm hmac_sha1;\\ compression_algorithm deflate;\\ }\\ **pre-shared key file**\\ IP_B test\\ IP_C test\\ **Для запуска racoon:**\\ /usr/local/sbin/racoon -f /usr/local/etc/racoon/racoon.conf\\ ===FreeBSD=== 3.2 Конфигурация GRE тунелей (**rc.conf**):\\ enable_gateway="YES"\\ cloned_interfaces="gre0 gre1"\\ ifconfig_gre0="inet 192.168.0.0 192.168.0.1 netmask 255.255.255.255 link1 up tunnel IP_A IP_B" #link to cisco 1841\\ ifconfig_gre1="inet 192.168.0.2 192.168.0.3 netmask 255.255.255.255 link1 up tunnel IP_A IP_C" #link to checkpoint 572\\ ipsec_enable="YES" #for setkey policy\\ ipsec_file="path_to_setkey.conf" #for setkey policy\\ ===Linux=== 3.2 Конфигурация GRE тунелей :\\ /etc/sysconfig/network-scripts/ifcfg-tun0\\ DEVICE=tun0\\ BOOTPROTO=none\\ ONBOOT=yes\\ TYPE=GRE\\ MTU=1476\\ PEER_OUTER_IPADDR=IP_B\\ PEER_INNER_IPADDR=192.168.0.1\\ MY_INNER_IPADDR=192.168.0.0\\ /etc/sysconfig/network-scripts/ifcfg-tun1\\ DEVICE=tun1\\ BOOTPROTO=none\\ ONBOOT=yes\\ TYPE=GRE\\ MTU=1476\\ PEER_OUTER_IPADDR=IP_C\\ PEER_INNER_IPADDR=192.168.0.3\\ MY_INNER_IPADDR=192.168.0.2\\ 3.3 Конфигурация Quagga.\\ Указываю только **ospfd.conf**\\ hostname ospfd\\ password test\\ enable password test\\ log stdout\\ router ospf\\ ospf router-id Internal_IP\\ passive-interface Interface_IP_A\\ network 192.168.0.0/16 area 0.0.0.1\\ Чтобы запустить quagga:\\ ===FreeBSD=== /usr/local/quagga/sbin/zebra -d -f path_to_zebra.conf\\ /usr/local/quagga/sbin/ospfd -d -f path_to_ospfd.conf\\ ===Linux=== service zebra start ==== Конфигурация Cisco 1841. ==== **1. Требования к IOS ** 12.X advanced ip services или Advanced Enterprise Service 15.X security license **2 . Конфигурация**\\ crypto isakmp policy 5\\ encr aes 128\\ authentication pre-share\\ group 5\\ lifetime 28800\\ !\\ crypto isakmp key test address IP_A\\ crypto isakmp key test address IP_C\\ !\\ crypto ipsec transform-set tunnel esp-aes 128 esp-sha-hmac\\ !\\ crypto ipsec profile VPN\\ set transform-set tunnel\\ set pfs group5\\ !\\ interface Tunnel1\\ description link to %%FreeBSD%%/Linux\\ ip address 192.168.0.1 255.255.255.254\\ ip mtu 1476\\ ip ospf network point-to-point\\ tunnel source Interface_IP_B\\ tunnel destination IP_A\\ tunnel protection ipsec profile VPN\\ ! маска 255.255.255.254 указывает что 192.168.0.0 - адрес доступный через указанный туннель\\ interface Tunnel2\\ description link to checkpoint 572\\ ip address 192.168.0.4 255.255.255.254\\ ip mtu 1476\\ ip ospf network point-to-point\\ tunnel source Interface_IP_B\\ tunnel destination IP_A\\ tunnel protection ipsec profile VPN\\ ! mask 255.255.255.254 указывает что 192.168.0.5 - адрес доступный через указанный туннель\\ router ospf 1\\ router-id Internal_IP\\ passive-interface Interface_IP_B\\ network 192.168.0.0 0.0.255.255 area 1\\ ==== Самое сложное - конфигурация Checkpoint 572 (R71.2). ==== **Небольшое вступление.** Полагаем, что checkpoint 527 уже сконифгурировано с VPN IPSEC flag (см официальную документацию CP_R71_VPN_AdminGuide). Следующие инструкции будут даны по шагам. После каждого шага в %%SmartDashboard%% необходимо сделать save and install policy. Конфигурация производится как в %%SmartDashboard%% так и в консоле (подключитесь по ssh) **Конифгурация.**\\ **Шаг 1. Конфигурация Глобальных политик:**\\ Policy->Global Properties->VPN\\ VPN configuration method ->Simplified mode to all new Firewall Polices (default mode)\\ Policy->Global Properties->VPN->Advanced\\ Set flag Enable VPN Directional Match in VPN Column\\ **Шаг 2. Создание %%FreeBSD%%/Linux роутера**\\ Network objects->Interoperable Devices-> Interoperable Devices...\\ General Properties\\ Name: %%FreeBSD%%/Linux\\ IP Address: IP_A\\ Topology->Add->\\ Закладка General\\ Name: ext_ip\\ IP Address: IP_A\\ Net Mask:MASK_IP_A\\ Закладка Toplogy\\ Set flag External\\ Add->Закладка General\\ Name: gre_ip\\ IP Address: 192.168.0.2\\ Net Mask:255.255.255.255\\ Закладка Toplogy\\ Set flag External\\ Add->Закладка General\\ Name: int_ip\\ IP Address: Internal _IP\\ Net Mask:255.255.255.0\\ Закладка Toplogy\\ Set flag Internal->Set flag Network defined by the interface IP and Net Mask\\ **Шаг 3. Создание Cisco 1841 роутера**\\ Network objects->Interoperable Devices-> Interoperable Devices...\\ General Properties\\ Name: Cisco\\ IP Address: IP_B\\ Topology->Add->\\ Закладка General\\ Name: ext_ip\\ IP Address: IP_B\\ Net Mask:MASK_IP_B\\ Закладка Toplogy\\ Set flag External\\ Add->Закладка General\\ Name: gre_ip\\ IP Address: 192.168.0.4\\ Net Mask:255.255.255.255\\ ЗакладкаToplogy\\ Set flag External\\ Add->\\ Закладка General\\ Name: int_ip\\ IP Address: Internal _IP\\ Net Mask:255.255.255.0\\ Закладка Toplogy\\ Set flag Internal->Set flag Network defined by the interface IP and Net Mask\\ **Шаг 4. Создание объектов: Range, Group, Network**\\ Network Objects->Address Ranges->Multicast Address Range..\\ Name: OSPF\\ Type: IP Address Range\\ First IP Addres: 224.0.0.5\\ Last IP Addres: 224.0.0.6\\ Network Objects->Groups->Groups->Simple Groups->\\ Name: EMPTY_GROUP\\ Network Objects->Networks->Network...\\ Name:TEST_NETWORK\\ Network Address: 192.168.0.0\\ Net Mask: 255.255.0.0\\ **Шаг 5. Конфигурация VPN Community**\\ VPN Communities->Site To Site->New Site To Site...->Star..\\ General->\\ Name: TEST\\ Set flag Accept all encrypted traffic->Advanced->Set flag Both Center and Satellite Gateways\\ Center Gateways->Add->checkpoint 572\\ Satellite Gateways->Add->%%FreeBSD%%, Satellite Gateways->Add->Cisco\\ Encryption->\\ Encryption methods->Set flag IKEv1 only\\ Encryption suite->Set flag Custom->Advanced->\\ General->\\ IKE Security Association (Phase 1) Properties->\\ Perform key exchange encryption with->aes 128\\ Perform data integrity->sha-1\\ IPSEC Security Association (Phase 2) Properties->\\ Perform key exchange encryption with->aes 128\\ Perform data integrity->sha-1\\ Tunnel Management->\\ Set flag One VPN tunnel per Gateway pair\\ Advanced Settings->\\ VPN Routing->Set flag To center and to other satellites through center\\ Shared Secret->Set flag Use only Shared Secret for all External Members Opposite to Cisco and %%FreeBSD%% sets key "test"\\ Advanced VPN Properties->\\ IKE (Phase 1)->\\ Set Use Diffie-Hellman group->group 5\\ Renegotiate IKE security associations every->480 minutes\\ IPSEC (Phase 2)->\\ Set flag Use Perfect Forward Secrecy->Set Use Diffie-Hellman group->group 5\\ Renegotiate IKE security associations every->28800 seconds\\ **Шаг 6: Конфигурация VPN gre tunnel (необходимо использовать VPN shell консоль):**\\ Войдите в Expert mode.\\ #vpn shell\\ VPN shell:[/] > interface\\ VPN shell:[/interface] >add\\ VPN shell:[/interface/add] >numbered 192.168.0.3 192.168.0.2 %%FreeBSD%% tun_to_freebsd\\ .. VPN shell:[/interface]>modify\\ VPN shell:[/interface/modify] > ifname\\ VPN shell:[/interface/modify/ifname] > mtu tun_to_freebsd 1476\\ VPN shell:[/] > interface\\ add\\ VPN shell:[/interface/add] >numbered 192.168.0.5 192.168.0.4 Cisco tun_to_cisco\\ ..\\ VPN shell:[/interface]>modify\\ VPN shell:[/interface/modify] > ifname\\ VPN shell:[/interface/modify/ifname] > mtu tun_to_cisco 1476\\ **Шаг 7: Создание Empty Group и остального**\\ Для каждого устройства (Checkpoint 572, Cisco, %%FreeBSD%%) установитк:\\ Topology->Manual Defined->EMPTY_GROUP\\ IPSEC VPN->Link Selection->Set flag Always Use this IP address->Set flag Selected Address from topology table: External IP (IP_A for %%FreeBSD%%, IP_B for Cisco, IP_C for Checkpoint)\\ Для Cisco и %%FreeBSD%%/Linux установите:\\ IPSEC VPN->VPN Advanced->Set flag Custom Settings->Set flag One tunnel per gateway pair->GRE on IPSec\\ For Checkpoint set:\\ IPSEC VPN->VPN Advanced->Set flag Custom Settings->Set flag One tunnel per gateway pair\\ **Шаг 8: Конфигурация Firewall**\\ В закладке Firewall:\\ 1. Принимать IKE и ESP от Cisco and %%FreeBSD%%/Linux к Checkpoint и обратно\\ 2. Принимать любые сервися от TEST_NETWORK к TEST_NETWORK и OSPF. В VPN column укажите edit:\\ set flags match traffic in this directional only->\\ add...\\ TEST->TEST\\ add...\\ TEST->Internal_clear\\ add...\\ Internal_clear->TEST\\ **Шаг 9: Configure OSPF (из консоли)**\\ Войдите в expert mode.\\ Наберите: router\\ #Router:\\ en->conf t->router ospf 1->\\ router-id Internal_IP\\ network 192.168.0.0 0.0.255.255 area 0.0.0.1\\ exit\\ exit\\ write memory\\ ==== Об авторе ==== [[https://www.linkedin.com/pub/alexey-vyrodov/59/976/16b|Profile]] автора