Документация по ОС FreeBSD Понедельник, 29.04.2024, 00:22
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Безопасность

Настройка IPSEC-тоннеля на FreeBSD [2010]
В этой статье я покажу как настроить IPSec между двумя удаленными серверами FreeBSD. Для чего это нужно? Например, есть у Вас (и у меня) главный офис предприятия в каком-то городе и есть в этого предприятия филиалы или предприятия в других городах. Значит нужно между этими филиалами, офисами и предприятиями организовать постоянную связь, чтобы локальные сети этих точек были соединены и данные между ними были зашифрованы (т.к. соединение происходит через Интернет). Вот для этого служит IPSec, с помощью которого можно сделать этот канал зашифрованным. 

И так,  IPsec (сокращение от IP Security) — набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP, позволяет осуществлять подтверждение подлинности и/или шифрование IP-пакетов. IPsec также включает в себя протоколы для защищённого обмена ключами в сети Интернет.
 
Для организации канала передачи данных с шифрованием нам нужно:
1. Два системных блока (по одному с каждой стороны) с двумя сетевыми картами в каждом и с ОС FreeBSD;
2. Широкополосный (желательно) Интернет;
3. Прямые руки 

Ядро в FreeBSD должно быть пересобрано с этими параметрами:

# firewall      options         IPFIREWALL       
options         IPFIREWALL_VERBOSE       
options         IPFIREWALL_VERBOSE_LIMIT=1000
# IPSEC      options         IPSEC       
options         IPSEC_DEBUG       
device          crypto
       
Как пересобрать ядро смотрите здесь.
 
Затем необходимо установить пакет ipsec-tools из портов FreeBSD.
 
Устанавливаем:
yurasik# cd /usr/ports/security/ipsec-tools/      
yurasik# make install clean     
  
Во время установки будут появляться окна где нажимаем ОК оставляя все по умолчанию.
 
После установки в rc.conf добавляем следующее содержание:

firewall_enable="YES"     
firewall_type="/etc/ipfw.rules"     
firewall_quiet="NO"      
firewall_logging="YES" 
racoon_enable="YES" 
ipsec_enable="YES"     
ipsec_file="/etc/ipsec.conf" 
gif_interfaces="gif0"     
gifconfig_gif0="192.168.2.130 192.168.1.130"      
ifconfig_gif0="inet 192.168.200.200 192.168.201.10 netmask 255.255.255.0" 
static_routes="RemoteLan"     
route_RemoteLan="192.168.201.0/24 -interface gif0"

У меня файл rc.conf получился следующего содержания:
# -- sysinstall generated deltas -- # Mon Dec 13 01:18:08 2010     
# Created: Mon Dec 13 01:18:08 2010      
# Enable network daemons for user convenience.      
# Please make all changes to this file, not to /etc/defaults/rc.conf.      
# This file now contains just the overrides from /etc/defaults/rc.conf.      gateway_enable="YES"      
sshd_enable="YES" 
ifconfig_rl1="inet 192.168.2.130  netmask 255.255.255.0"     
ifconfig_re0="inet 192.168.200.200  netmask 255.255.255.0"      defaultrouter="192.168.2.1"      hostname="AVTO" 
firewall_enable="YES"     
firewall_type="/etc/ipfw.rules"      
firewall_quiet="NO"     
firewall_logging="YES" 
racoon_enable="YES" 
ipsec_enable="YES"    
 ipsec_file="/etc/ipsec.conf" 
gif_interfaces="gif0"     
gifconfig_gif0="192.168.2.130 192.168.1.130"     
ifconfig_gif0="inet 192.168.200.200 192.168.201.10 netmask 255.255.255.0" 
static_routes="RemoteLan"     
route_RemoteLan="192.168.201.0/24 -interface gif0"
 
Cоздаем каталоги и конфигурационные файлы:
 
Для racoon:
AVTO# cd /usr/local/etc/      
AVTO# mkdir racoon      
AVTO# cd racoon/      
AVTO# touch racoon.conf      
AVTO# touch psk.txt       
 
В файл racoon.conf необходимо вставить это:
# $KAME: racoon.conf.in,v 1.18 2001/08/16 06:33:40 itojun Exp $ 
# "path" affects "include" directives.  "path" must be specified before any     
# "include" directive with relative file path.      
# you can overwrite "path" directive afterwards, however, doing so may add      
# more confusion.     
path include "/usr/local/etc/racoon/racoon.conf";      
#include "remote.conf"; 

# the file should contain key ID/key pairs, for pre-shared key authentication.     
path pre_shared_key "/usr/local/etc/racoon/psk.txt"; 

# racoon will look for certificate file in the directory,     
# if the certificate/certificate request payload is received.      
# path certificate "/usr/local/etc/racoon/cert"; 

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

# "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.      

# if no listen directive is specified, racoon will listen on all     
# available interface addresses.      
listen      {              
#isakmp ::1 [7000];              
isakmp 192.168.2.130 [500];              
#admin [7002];          # administrative port for racoonctl.              
#strict_address;       
# requires that all addresses must be bound.      
}
 
# 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 60 sec;              
phase2 30 sec;      

remote 192.168.1.130 
{         
exchange_mode main;          
passive off;          
my_identifier address 192.168.2.130;         
verify_identifier off;          
verify_cert off;          
lifetime time 1440 min;         
initial_contact on;          
dpd_delay 20;          
proposal 
{             
 encryption_algorithm 3des;             
 hash_algorithm sha1;             
 authentication_method pre_shared_key;             
 # authentication_method rsasig;            
 dh_group 2;          
}      
}      
sainfo address 192.168.2.130[500] 4 address 192.168.1.130[500] 4 {      
pfs_group 2;         
lifetime time 90 min;          
encryption_algorithm 3des;          
authentication_algorithm hmac_sha1;          
compression_algorithm deflate;      
}
 
- где, 

192.168.1.130 – удаленная фряха (тут обычно реальный IP который виден через интернет);
 
192.168.2.130 – текущая фряха.
 
В файл psk.txt вставляем IP удаленной машины и пароль (через пробел):
192.168.1.130 password

Далее необходимо в каталоге /etc создать два файла:
AVTO# touch ipsec.conf    
AVTO# touch ipfw.rules
     
В файл ipsec.conf вставляем это (без переносов):
spdadd 192.168.2.130/32 192.168.1.130/32 ipencap -P out ipsec esp/tunnel/192.168.2.130-192.168.1.130/require;      
spdadd 192.168.1.130/32 192.168.2.130/32 ipencap -P in ipsec esp/tunnel/192.168.1.130-192.168.2.130/require;

В файл ipfw.rules необходимо вставить правила разрешающие ipsec "общаться" между собой. В моем случае это выглядит так:
${fw} add allow icmp from any to any via gif0    
${fw} add allow ipencap from 192.168.1.130 to me      
${fw} add allow ipencap from me to 192.168.1.130      
${fw} add allow esp from me to 192.168.1.130      
${fw} add allow esp from 192.168.1.130 to me      
${fw} add allow udp from me 500 to 192.168.1.130 500 via rl1      
${fw} add allow udp from 192.168.1.130 500 to me 500 via rl1
 
И так-же правила которые будут разрешать обмениваться пакетами внутри тоннеля между подсетями которые мы объединяем:
${fw} add allow all from 192.168.200.0/24 to 192.168.201.0/24 via gif0    
${fw} add allow all from 192.168.201.0/24 to 192.168.200.0/24 via gif0

 
То-же самое делаем на второй машине с тем отличием, что нужно поменять айпишки в конфигурационных файлах. У меня на второй машине, как видно из конфигов, айпишка 192.168.1.130 и локальный 192.168.201.10, значит вместо 192.168.2.130 я ставлю 192.168.1.130, вместо  192.168.1.130 - 192.168.2.130, вместо 192.168.200.200 - 192.168.201.10 и наоборот…..
 
Напоминаю, что это конфиги взяты из реально работающих серверов и они рабочие 100%.
 
В следующей статье будет немного теории и практики…. 


Источник: http://yurasik.org.ua/nastrojka-ipsec-tonnelya-na-freebsd/
Категория: Безопасность | Добавил: oleg (28.06.2011) | Автор: Yurasik
Просмотров: 1792 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

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

Copyright MyCorp © 2024