Настройка Gre over IPSEC между FreeBSD/Linux, Checkpoint, Cisco

Статья ниже - вольный и немного обновленный перевод моей статьи 01.2011 на форуме Checkpoint.

Введение.

Для защиты наших web-сереров было закуплено устройство checkpoint 572 c IPS blade (Это был наш первый checkpoint). Наши сервера располагались в ДЦ collocation.
Одной из задач организовать доступ к web-серерам из нашей внутренней сети. Наша еть была достаточно большой. На некоторых точках использовалось избыточное кол-во провайдеров. В качестве динамического протокола маршрутизации мы использовали OSPF. Граничными маршрутизаторами выступали FreeBSD роутеры и Cisco. Так-же есть и linux устройства. На конфигурацию checkpoint ушло много часов рабочего времени и я решил поделиться опытом с Интернет-сообществом.

Упрощенная схема и используемые параметры.

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

Об авторе

Profile автора

ru/jobs/vpn_gre_over_ipsec.txt · Last modified: 2015/03/12 17:14 by admin
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki