Пятница, 29.03.2024, 08:30
Админка
Приветствую Вас Гость | RSS
Главная Каталог статей Регистрация Вход
Меню сайта

Категории раздела
Linux/Unix системы и приложения [4]
Windows системы и приложения [2]
Программные маршрутизаторы [1]

Поиск

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Администрирование » Linux/Unix системы и приложения

Настройка подключения VPN IPSEC туннеля между двумя офисами (Linux -> Cisco)
Передо мной стояла следующая задача. Есть два удаленных офиса: Офис_А и Офис B. Необходимо объединить эти офисы посредством установки защищенного VPN IPSEC туннеля через интернет соединение в единую сеть. Обе стороны офисов должны предоставлять сервисы в своих подсетях.

При этом на стороне Офиса_А:

IP_A_Ext: 194.168.23.12 (внешний IP адрес)
IP_A_Local: 10.0.0.0/8 (Локальная подсеть)
IP_A_local_gate: 10.0.0.1 (локальный гейт)
Тип сетевого оборудования: Cisco PIX

При этом на стороне Офиса_B:

IP_B_Ext: 213.168.22.6 (внешний IP адрес)
IP_B_local: 192.168.2.0/24 (Локальная подсеть)
IP_B_local_gate: 192.168.2.1 (локальный гейт)
Тип сетевого оборудования: OpenSuse Linux 9.2

Офис_B будет подключаться к Офису_А. Настройки оборудования Cisco PIX Офиса_A приводиться не будут. В данном примере будем настраивать VPN IPSEC на стороне Офис_B.
Схема соединения двух офисов следующая:

Офис_B <-> Linux <-> INTERNET <-> Cisco <-> Офис_A.


Все сотрудники Офиса_B должны иметь доступ к сервисам Офиса_А и наоборот. Соединение VPN IPSEC выбираем по pre-shared_keys (%1as$2Hgdgs&545) выданным нам администратором Офиса_A.

1.    Для установления соединения выбираем и устанавливаем пакет IpSec Tools 0.4rc1-3, которые идет в составе OpenSuSe Linux 9.2.

#> rpm –Uhv ipsec-tools-0.4rc1-3.i586.rpm

Все конфигурационные файлы находятся в /etc/racoon. В нем находяться следующие файлы:

Psk.txt – файл содержащий секретные ключи;
Setkey.conf – политики соединения;
Racoon.conf – основной конфигурационный файл.

2.    Редактируем файл ключей psk.txt. Вставляем в него наш секретный ключ.

--------------------psk.txt ------------------------------
194.168.23.12 %1as$2Hgdgs&545
--------------------psk.txt ------------------------------

Если такого файла нет, то создайте его:

#> vi /etc/racoon/psk.txt
#> chown root.wheel /etc/racoon/psk.txt
#> chmod 0600 /etc/psk.txt


3.    Конфигурирование файла setkey.conf

Подправим и дополним дефолтный файл конфигурации.

#!/sbin/setkey –f
# Flush the SAD and SPD
flush;
spdflush;


Команды spdflush и flush очищают от записей базы данных SPD и SAD, соответственно;
Команды spdadd и add добавляют записи в базы данных SPD и SAD, соответственно.

#Secure outgoind communications
spdadd 192.168.2.0/24 10.0.0.0/8 any –P out ipsec esp/tunnel/213.168.22.6 -194.168.23.12 /require;
spdadd 192.168.2.0/24 10.0.0.0/8 any –P fwd ipsec esp/tunnel/213.168.22.6 -194.168.23.12 /require;


# Secure ingoing communications
spdadd 10.0.0.0/8 192.168.2.0/24 any –P in  ipsec esp/tunnel/194.168.23.12 -213.168.22.6 /require;
spdadd 10.0.0.0/8 192.168.2.0/24 any –P fwd ipsec esp/tunnel/194.168.23.12 -213.168.22.6 /require;


[!] Для информации:

man setkey

-f filename – загрузка конфигурационного файла KAME.
-DP и -FP – отобразить и очистить текущие правила.
-D и -F – отобразить и очистить текущие ключи.


4.    Конфигурирование файла Racoon.conf

Является основным конфигурационным файлом VPN IPSEC соединения. Рассмотрим его подробней. Здесь прописаны параметры соединения, которые должны быть идентичными на серверах двух офисов. Используем следующую политику соединений, которую мы получили от администратора Офиса_A:


 
authentication methodpre-shared secret keys (%1as$2Hgdgs&545)
encryption algorithm3des
authentication algorithmHMAC-SHA1
encryption modetunnel
DH group2
PFSYes
Phase 1 lifetime   
24 hour
Phase 2 lifetime60 min


Согласно этой таблице произведем все дополнения в наш конфигурационный файл Racoon.conf. В качестве информации, предоставляю сводную таблицу возможных параметров Racoon:
 
Authentication Methods
rsasig
preshared-key
gssapi_krb
Encryption Algorithms
3DES (default phase1)
DES (default phase2)
blowfish
CAST128
idea
3idea
rc5
rc4
twofish
rijndael
Integrity Algorithms
HMAC-SHA1 (default)
HMAC-MD5
Encryption Modes
transport
tunnel
DH Groups
1 (default phase2)
2 (default phase1)
5
PFS
supported
IKE SA default lifetime
1 minute
IPSEC SA default lifetime
30 seconds
   

# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.
#Путь к настройкам racoon
path include "/etc/racoon";

#Путь к секретному файлу с ключами
path pre_shared_key "/etc/racoon/psk.txt";

#Закомментирована т.к. мы не будем использовать соединение по сертификатам
#path certificate "/etc/racoon/certs";

#Включаем логирование в /var/log/messages. "log" specifies logging level. It is #followed by either "notify", "debug"
log debug;

# "padding" defines some parameter of padding.  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.

# if no listen directive is specified, racoon will listen to all available interface addresses.
listen
{
    #isakmp ::1 [7000];
    isakmp 213.168.22.6 [500];
    #admin [7002];        # administrative's port by kmpstat.
    #strict_address;                         # required all addresses must be bound.

# Specification of default various timer.
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 a send.

    # timer for waiting to complete each phase.
    phase1 30 sec;
    phase2 15 sec;
}
# IKE phase 1
§    Фаза 1 (Main Mode) – Используется метод шифрования открытым ключом для создания двустороннего соглашения безопасности ISAKMP (Internet Security Association and Key Management Protocol). Далее этот безопасный канал будет использоваться для согласования новых ключей. Можно использовать множество методов аутентификации, но мы остановимся на основных, совместно используемых ключах.
remote 194.168.23.12
{
  exchange_mode main,aggressive;
  doi ipsec_doi;
  lifetime time 24 hour;                                  # sec,min,hour
# nat_traversal on;                                         # отключаем т.к. используем статические IP адреса

  proposal {
  encryption_algorithm 3des;
  hash_algorithm sha1;
  authentication_method pre_shared_key;
  dh_group 2;
           }
}

# IKE phase 2
§    Фаза 2 (Quick Mode) – Используется ISAKMP первой фазы для обмена ключами безопасности при одновременном обновлении SADB. Согласованные ключи можно запросить через дамп SADB командой setkey -D на Linux.
sainfo address 192.168.2.0/24 any address 10.0.0.0/8 any
{
        pfs_group 2;
        lifetime time 3600 sec;
        encryption_algorithm 3des;
        authentication_algorithm hmac_sha1;
        compression_algorithm deflate;
}


5.    Настройка правил маршрутизации двух подсетей и файрволла.

ip route add 10.0.0.0/8 via 192.168.2.1 src 192.168.2.1

и добавим ее в загрузку /etc/init.d/boot.local.

если этого файла нет то создайте его:

#>vi /etc/init.d/boot.local
#>chmod 744 /etc/init.d/boot.local


Проверяем маршрутизацию:

#>route –n
10.0.0.0        192.168.2.1     255.0.0.0       UG    0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         213.168.22.6  0.0.0.0         UG    0      0        0 eth1


Где, eth0 – локальная сеть, eth1 – внешняя сеть.

Настройки правила файрволла SuSefirewall2-custom в /etc/sysconfig/scripts (Разрешим подсети 10.0.0.0/8 обращаться ко всем ресурсам подсети 192.168.2.0/24 и наоборот):

iptables -t nat -I POSTROUTING -d 10.0.0.0/8 -j ACCEPT
iptables -I FORWARD -p all -d 10.0.0.0/8 -s 192.168.2.0/24 -j ACCEPT
iptables -I FORWARD -p all -s 10.0.0.0/8 -d 192.168.2.0/24 -j ACCEPT


перегружаем файрволл

#> /sbin/SuSefirewall2

6.    Тестирование VPN IPSEC соединения.

Установим автоматическое поднятие сервиса racoon после перезагрузки системы Linux

#>chkconfig –a racoon

racoon                    0:off  1:off  2:off  3:on   4:off  5:on   6:off

стартуем Racoon сервис:

#> /etc/init.d/racoon start

#>setkey –D


194.168.23.12 213.168.22.6 
        esp mode=tunnel spi=92283250(0x05802172) reqid=0(0x00000000)
        E: 3des-cbc  e2b2536a 157689fa 9183459c aad0f468 b31d46e7 4462176c
        A: hmac-sha1  d61eea48 1728d7db 5492456c b8671b76 8c80b6c2
        seq=0x00000000 replay=4 flags=0x00000000 state=mature
        created: May 13 13:24:49 2009   current: May 13 13:26:28 2009
        diff: 99(s)     hard: 3600(s)   soft: 2880(s)
        last:                           hard: 0(s)      soft: 0(s)
        current: 0(bytes)       hard: 0(bytes)  soft: 0(bytes)
        allocated: 0    hard: 0 soft: 0
        sadb_seq=1 pid=11758 refcnt=0

213.168.22.6  194.168.23.12
        esp mode=tunnel spi=4060139395(0xf200cf83) reqid=0(0x00000000)
        E: 3des-cbc  6cef14c9 c303c606 c25b81fc 4884f2c8 47eff1f1 020313e9
        A: hmac-sha1  171200d0 3deaaafe 8452c125 4e7ada3e 9cc0aed5
        seq=0x00000000 replay=4 flags=0x00000000 state=mature
        created: May 13 13:24:49 2009   current: May 13 13:26:28 2009
        diff: 99(s)     hard: 3600(s)   soft: 2880(s)
        last: May 13 13:25:29 2009      hard: 0(s)      soft: 0(s)
        current: 12288(bytes)   hard: 0(bytes)  soft: 0(bytes)
        allocated: 111  hard: 0 soft: 0
        sadb_seq=0 pid=11758 refcnt=0

Туннель наш поднят, и пакеты идут.

Иногда (но редко), соединение по VPN IPSEC установлено, но пакеты, почему то не заворачиваются в туннель. Для этого я создал небольшой скрипт для автоматической перезагрузки racoon сервиса:

файл: vpn_restore

ping -c 3 10.9.0.1
    if [ $? != 0 ]
then
    echo "not ping"
    /etc/init.d/racoon restart
    ping -c 5 -i 3 10.9.0.1
else
    echo "ping ok"
fi

и поместил его в /etc/crontab (каждые 10 минут скрипт проверяет состояние туннеля)

*/10   9-21 * * *  root /usr/sbin/vpn_restore > /var/log/vpn_restore.log
Категория: Linux/Unix системы и приложения | Добавил: Inhibitz (13.05.2009)
Просмотров: 29911 | Рейтинг: 5.0/4 |
Всего комментариев: 4
4 scomp  
0
Но до пендосских мануалов конечн не дотягивает)

3 Владимир  
0
Все больше и больше адекватных людей. Радует.

2 DeGReeS  
0
Установи на лине пакет pppoeconf. Поставь модем в режим bridge и настрой на лине соединение при помощи pppoeconf. А потом далее по инструкции.

1 Владимир  
0
добрый день
у меня почти такая же схема, но в офисе_В стоит dsl- модем который имеет внешний ip, а уж потом cisco, не получается никак настроить тоннель, может посоветуете что нибудь

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
При копировании статей просьба указывать источник inhibitz.ucoz.ru © 2024