Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия | |||
— | ipsec [2025/07/06 12:39] (текущий) – внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== IPSec Tools Racoon ====== | ||
+ | |||
+ | ~~Title: IPSec — протокол защиты сетевого трафика на IP-уровне ~~ | ||
+ | {{htmlmetatags> | ||
+ | metatag-description=(Диагностика IPSec. IPSec — протокол защиты сетевого трафика на IP-уровне. Настройка утилит Racoon, setkey и IPSec OpenSWAN.) | ||
+ | }} | ||
+ | |||
+ | |||
+ | Homepage: [[http:// | ||
+ | |||
+ | |||
+ | **IPsec-Tools** это порт c [[FreeBSD]] использует утилиты setkey, racoon. | ||
+ | |||
+ | **IPSec** (сокращение от спецификации IP Security) - надстройка к протоколу IP, обеспечивающая безопасность протоколов более высокого уровня. IPSec был разработан для IPv6 протокола, | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | * **pre-shared key**: Два даемона racoon подключаются друг к другу, подтверждают, | ||
+ | |||
+ | * **IPsec состоит из двух протоколов: | ||
+ | - Encapsulated Security Payload (ESP), защищающей данные IP пакета от вмешательства третьей стороны путем шифрования содержимого с помощью симметричных криптографических алгоритмов (таких как Blowfish, | ||
+ | - Authentication Header (AH), защищающий заголовок IP пакета от вмешательства третьей стороны и подделки путем вычисления криптографической контрольной суммы и хеширования полей заголовка IP пакета защищенной функцией хеширования. К пакету добавляется дополнительный заголовок с хэшем, позволяющий аутентификацию информации пакета. | ||
+ | |||
+ | ESP и AH могут быть использованы вместе или по отдельности, | ||
+ | {{ :: | ||
+ | |||
+ | ===== Режимы работы IPsec(транспортный, | ||
+ | |||
+ | Существует два режима работы IPsec: транспортный режим и туннельный режим(когда в транспортном режиме работают только маршрутизаторы). | ||
+ | |||
+ | IPsec может быть использован или для непосредственного шифрования трафика между двумя хостами (транспортный режим); | ||
+ | |||
+ | В **транспортном режиме** шифруется (или подписывается) только информативная часть IP-пакета. Маршрутизация не затрагивается, | ||
+ | |||
+ | ^Транспортный режим^^ | ||
+ | |IP заголовок |ESP/ | ||
+ | |||
+ | В **туннельном режиме** IP-пакет шифруется целиком. Для того, чтобы его можно было передать по сети, он помещается в другой IP-пакет. По существу, | ||
+ | |||
+ | ^Туннельный режим^^^^ | ||
+ | |IP заголовок |ESP/ | ||
+ | |||
+ | < | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | **Security Associations (SA)**. Для возможности проводить инкапсуляцию/ | ||
+ | |||
+ | **Security Policy (SP)** - политика безопасности, | ||
+ | |||
+ | ===== IPSec (сеть-сеть) между серверами FreeBSD ===== | ||
+ | * **Шаг 1**: Создание и тестирование " | ||
+ | * Настройте оба ядра с '' | ||
+ | * Отредактируйте / | ||
+ | # IPsec №1 gateway | ||
+ | > ee / | ||
+ | ... | ||
+ | # IPsec to S through ISP_V | ||
+ | gif_interfaces=" | ||
+ | # gifconfig_gif0=" | ||
+ | gifconfig_gif0=" | ||
+ | ifconfig_gif0=" | ||
+ | static_routes=" | ||
+ | route_vpn=" | ||
+ | route_vpn1=" | ||
+ | |||
+ | # IPsec №2 gateway | ||
+ | > ee / | ||
+ | ... | ||
+ | # IPsec na G through ISPGate | ||
+ | gif_interfaces=" | ||
+ | # gifconfig_gif0=" | ||
+ | gifconfig_gif0=" | ||
+ | ifconfig_gif0=" | ||
+ | static_routes=" | ||
+ | route_vpn=" | ||
+ | </ | ||
+ | * Отредактируйте скрипт брандмауэра на обеих маршрутизаторах и добавьте< | ||
+ | # IPFW | ||
+ | ipfw add 1 allow ip from any to any via gif0 | ||
+ | # PF | ||
+ | set skip on gif0 | ||
+ | </ | ||
+ | Теперь ping должны ходить между сетями. | ||
+ | * **Защита соединения с помощью IPsec** | ||
+ | * **Шаг 2**: Защита соединения с помощью IPsec | ||
+ | * Настройте оба ядра:< | ||
+ | # IPSEC for FreeBSD 7.0 and above | ||
+ | options IPSEC | ||
+ | options IPSEC_FILTERTUNNEL | ||
+ | device crypto | ||
+ | |||
+ | # IPSEC for FreeBSD 6.3 | ||
+ | options | ||
+ | options | ||
+ | options | ||
+ | * Устанавливаем порт ipsec-tools.< | ||
+ | > cd / | ||
+ | > make config | ||
+ | > make install clean | ||
+ | > ee / | ||
+ | racoon_enable=" | ||
+ | ipsec_enable=" | ||
+ | > mkdir -p / | ||
+ | > cp / | ||
+ | > cd / | ||
+ | </ | ||
+ | > openssl req -new -nodes -newkey rsa:1024 -sha1 -keyform PEM -keyout your.key1.private -outform PEM -out your.key1.pem | ||
+ | > openssl x509 -req -in your.key1.pem -signkey your.key.private | ||
+ | </ | ||
+ | |||
+ | |||
+ | * Создаем файл ipsec.conf. Настройка на шлюзе #1 (где есть публичный IP адрес A.B.C.D) для включения шифрования всего предназначенного W.X.Y.Z трафика. A.B.C.D/32 и W.X.Y.Z/32 это IP адреса и сетевые маски, определяющие сети или хосты, к которым будет применяться данная политика. В данном случае мы хотим применить их к трафику между этими двумя хостами. Параметр ipencap сообщает ядру, что эта политика должна применяться только к пакетам, | ||
+ | |||
+ | Оставшаяся часть строки определяет, | ||
+ | |||
+ | Это правило соответствует только исходящим пакетам. Вам потребуется похожее правило, | ||
+ | < | ||
+ | > ee / | ||
+ | spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec esp/ | ||
+ | spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec esp/ | ||
+ | </ | ||
+ | Настройка на шлюзе #2 аналогична только меняются IP местами. | ||
+ | ==== Настройка утилиты racoon ==== | ||
+ | |||
+ | < | ||
+ | > ee / | ||
+ | path include "/ | ||
+ | path certificate "/ | ||
+ | # following line activates logging & should deactivated later | ||
+ | log debug; | ||
+ | |||
+ | # если директива listen не задана, | ||
+ | # адреса интерфейсов. | ||
+ | |||
+ | listen | ||
+ | { | ||
+ | #isakmp ::1 [7000]; | ||
+ | isakmp 202.249.11.124 [500]; | ||
+ | #admin [7002]; | ||
+ | # | ||
+ | } | ||
+ | |||
+ | # описываем удалённый хост (на второй машине - идентично, | ||
+ | # тока другой IP и ключи) | ||
+ | remote | ||
+ | { | ||
+ | exchange_mode aggressive, | ||
+ | my_identifier asn1dn; | ||
+ | peers_identifier asn1dn; | ||
+ | # сертификаты этой машины | ||
+ | certificate_type x509 " | ||
+ | # сертификат удлённой машины | ||
+ | peers_certfile x509 " | ||
+ | proposal { | ||
+ | encryption_algorithm 3des; | ||
+ | hash_algorithm sha1; | ||
+ | authentication_method rsasig; | ||
+ | dh_group 2 ; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | sainfo anonymous | ||
+ | { | ||
+ | pfs_group 2; | ||
+ | encryption_algorithm 3des; | ||
+ | authentication_algorithm hmac_sha1; | ||
+ | compression_algorithm deflate; | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | * Настройка пакетного фильтра PF, где esp_peers шлюз с которым создается шифрованный туннель. Разрешаем прохождение пакетов ESP и IPENCAP в обе стороны. | ||
+ | < | ||
+ | #pass IPSec | ||
+ | pass in on $ext_if_a inet proto udp from { $esp_peers } to ($ext_if_a) port isakmp | ||
+ | pass in on $ext_if_a inet proto esp from { $esp_peers } to ($ext_if_a) | ||
+ | # | ||
+ | pass out on $ext_if_a inet proto udp from { $esp_peers } to ($ext_if_a) port isakmp | ||
+ | pass out on $ext_if_a inet proto esp from { $esp_peers } to ($ext_if_a) | ||
+ | </ | ||
+ | Cмотрим логи / | ||
+ | |||
+ | Как только параметры безопасности установлены, | ||
+ | > / | ||
+ | > / | ||
+ | > setkey -D # список созданных защищенных каналов | ||
+ | > setkey -DP # покажет список политик безопасности | ||
+ | </ | ||
+ | |||
+ | * Проверка работоспособности: | ||
+ | * ping между сетями должен работать | ||
+ | * [[tcpdump]] запускаем для прослушки физического интерфейса на котором построен туннель (а не виртуального gif0). В другом окне например ping -ем удаленную серую сеть (например, | ||
+ | ... | ||
+ | 16: | ||
+ | ... | ||
+ | </ | ||
+ | [[tcpdump]] должен показывать ESP пакеты. | ||
+ | |||
+ | ===== IPSec (сеть-сеть) между серверами Linux ===== | ||
+ | < | ||
+ | # aptitude install ipsec-tools racoon | ||
+ | </ | ||
+ | |||
+ | * **Алгоритм настройки IPsec** | ||
+ | - Настройка пакета racoon | ||
+ | - Создание политики безопасности | ||
+ | - Виртуальные интерфейсы. Они нужны для маршрутизации сетей находящихся в локальных сетях. Два соединенных сервера будут видеть себя без интерфейсов(иногда без них не заводится и между серверами, | ||
+ | |||
+ | Ниже приведены конфиги для случая с предопределёнными ключами. | ||
+ | < | ||
+ | > nano / | ||
+ | path include "/ | ||
+ | path pre_shared_key "/ | ||
+ | #path certificate "/ | ||
+ | |||
+ | remote 10.5.21.23 | ||
+ | { | ||
+ | exchange_mode aggressive, | ||
+ | doi ipsec_doi; | ||
+ | situation identity_only; | ||
+ | my_identifier address; # | ||
+ | lifetime time 2 min; | ||
+ | initial_contact on; | ||
+ | proposal { | ||
+ | encryption_algorithm 3des; | ||
+ | hash_algorithm sha1; | ||
+ | authentication_method pre_shared_key; | ||
+ | dh_group 2; | ||
+ | } | ||
+ | proposal_check strict; | ||
+ | } | ||
+ | |||
+ | sainfo anonymous # Отмечает, | ||
+ | { | ||
+ | pfs_group 2; | ||
+ | lifetime time 2 min ; | ||
+ | encryption_algorithm 3des, blowfish 448, des, rijndael ; | ||
+ | authentication_algorithm hmac_sha1, hmac_md5 ; | ||
+ | compression_algorithm deflate ; | ||
+ | } | ||
+ | </ | ||
+ | Создадим политику безопасности | ||
+ | < | ||
+ | > nano pol.cfg | ||
+ | # | ||
+ | flush; | ||
+ | spdflush; | ||
+ | |||
+ | spdadd | ||
+ | |||
+ | spdadd 10.5.21.23 10.5.21.24 any -P in ipsec esp/ | ||
+ | > chmod +x pol.cfg | ||
+ | > ./pol.cfg | ||
+ | </ | ||
+ | Создадим выполняемый файл для создания интерфейсов и запустим его. | ||
+ | < | ||
+ | >nano tun.sh | ||
+ | #!/bin/sh | ||
+ | ip tunnel del tun0 | ||
+ | ip tunnel add tun0 mode ipip remote 10.5.21.23 local 10.5.21.24 dev eth0 # создаем интерфейс tun0 и устанавливаем туннель | ||
+ | # между хостами (здесь нужно использовать реальные IP адреса сетевых интерфейсов). | ||
+ | ifconfig tun0 10.0.9.1 pointopoint 10.0.9.2 | ||
+ | # туннеля (не обязательно). | ||
+ | ifconfig tun0 mtu 1472 | ||
+ | ifconfig tun0 up | ||
+ | |||
+ | # ниже можно прописать нужные нам маршруты, | ||
+ | route add -net ... netmask 255.255.255.0 gw ... | ||
+ | route add -net ... netmask 255.255.255.0 gw ... | ||
+ | |||
+ | > ./tun.sh | ||
+ | </ | ||
+ | < | ||
+ | |||
+ | **Все IPSec тунель между сетями настроен.** | ||
+ | ===== iptables IPSec ===== | ||
+ | <file bash> | ||
+ | $IPT -A INPUT -p udp -m udp -s xxx.xxx.xxx.xxx -d xxx.xxx.xxx.xx --dport 500 -j ACCEPT | ||
+ | $IPT -A INPUT -p esp -j ACCEPT | ||
+ | $IPT -A INPUT -p ah -j ACCEPT | ||
+ | $IPT -A INPUT -p ipencap -j ACCEPT | ||
+ | $IPT -A INPUT -p udp -m udp -s xxx.xxx.xxx.xxx -d xxx.xxx.xxx.xx --dport 4500 -j ACCEPT | ||
+ | </ | ||
+ | ===== IPsec «узел-узел» без виртуальных интерфесов ===== | ||
+ | **Задача**. При помощи IPSec (pre_shared_key) соединить два сервера (Debian 5 и Debian 7). У обоих реальные IP. Никаких сетей пробрасывать не надо. Должен шифроваться трафик между этими IP. То есть строим транспортный режим (между двумя хостами). | ||
+ | |||
+ | Настройка сводится к двум пунктам | ||
+ | * Настройка пакета racoon | ||
+ | * Создание политики безопасности: | ||
+ | spdadd x.x.x.x/32 y.y.y.y/32 any -P out ipsec esp/ | ||
+ | spdadd y.y.y.y/32 x.x.x.x/32 any -P in ipsec esp/ | ||
+ | </ | ||
+ | |||
+ | ===== IPSec (GRE) (узел-сеть) между Debian и Cisco ===== | ||
+ | **Задача: | ||
+ | |||
+ | * Клиент tunnel-endpoint is: 193.xxx.xxx.xxx | ||
+ | * Сервер tunnel-endpoint is: 62.xxx.xxx.xxx | ||
+ | * Клиент Sip Server is : 193.xxx.xxx.xxx | ||
+ | * Сервер SIP Servers are : 62.xxx.237.xxx/ | ||
+ | |||
+ | да и перед настрокой туннеля (перед auto tun0) прописать | ||
+ | pre-up modprobe ip_gre | ||
+ | < | ||
+ | # modprobe ip_gre | ||
+ | </ | ||
+ | |||
+ | Скрипт для создания [[GRE]] туннеля в Debian: | ||
+ | < | ||
+ | #!/bin/sh -e | ||
+ | |||
+ | modprobe ip_gre | ||
+ | #ip tunnel del tun0 | ||
+ | ip tunnel add tun0 mode gre remote 62.xxx.xxx.xxx local 193.xxx.xxx.xxx dev eth0 | ||
+ | ifconfig tun0 mtu 1472 | ||
+ | ifconfig tun0 up | ||
+ | route add -net 62.xxx.237.xxx netmask 255.255.255.192 dev tun0 | ||
+ | route add -net 62.xxx.246.xxx netmask 255.255.255.192 | ||
+ | </ | ||
+ | ====== Утилиты ====== | ||
+ | * Для управления можно использовать утилиту racoonctl< | ||
+ | racoonctl show-sa esp | ||
+ | </ | ||
+ | * Cписок созданных защищенных каналов< | ||
+ | > setkey -D | ||
+ | </ | ||
+ | * список политик безопасности < | ||
+ | > setkey -DP | ||
+ | </ | ||
+ | ====== Мониторинг IPsec ====== | ||
+ | Мониторинг IPsec в [[Debian]] 5.0 2.6.26-2-686-bigmem i686. В уровень детализации логов log notify или log debug устанавливается в файле racoon.conf. | ||
+ | < | ||
+ | # tail -F / | ||
+ | </ | ||
+ | |||
+ | ====== IPSec Openswan ====== | ||
+ | |||
+ | * Homepage: [[https:// | ||
+ | * Homepage: [[http:// | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | OpenSWAN начал разрабатываться как форк прекратившего в настоящее своё существование проекта FreeS/WAN (Free Secure Wide-Area Networking), | ||
+ | OpenSWAN обеспечивает стек протоколов IpSec: AH и ESP для ядра Linux,а также инструментарий для управления ими. | ||
+ | |||
+ | OpenSWAN для ветки ядра 2.6 предоставляет встроенную, | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | |||
+ | **Задача**. Создать шифрованный туннель между [[CentOS]] 6.6 и [[Debian]] 7.8 Wheezy. [[GRE]] + Openswan (type=transport) | ||
+ | |||
+ | * В первую очередь создаем интерфейсы [[GRE]] и проверяем маршрутизацию между нашими сетями. | ||
+ | * Openswan будет шифровать наш трафик в транспортном режиме(host-to-host), | ||
+ | yum install openswan | ||
+ | aptitude install openswan | ||
+ | </ | ||
+ | * На обоих концах туннеля настраиваем [[iptables]]. Открыть 500 порт, по которому идет обмен сертификатам и ключами.< | ||
+ | iptables -A INPUT -p udp --dport 500 -j ACCEPT | ||
+ | iptables -A INPUT -p tcp --dport 4500 -j ACCEPT | ||
+ | iptables -A INPUT -p udp --dport 4500 -j ACCEPT | ||
+ | |||
+ | # Более строго выпишем правила для IPSec | ||
+ | IPT="/ | ||
+ | $IPT -A INPUT -p udp -s x.x.x.x -d x.x.x.x --dport 500 -m comment --comment " | ||
+ | $IPT -A INPUT -p tcp -s x.x.x.x -d x.x.x.x --dport 4500 -m comment --comment " | ||
+ | $IPT -A INPUT -p udp -s x.x.x.x -d x.x.x.x --dport 4500 -m comment --comment " | ||
+ | </ | ||
+ | |||
+ | * **Подготовка конфигурационных файлов.** Используемые файлы и директории< | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | * Проверка системы на правильность окружения для IPsec< | ||
+ | ipsec verify | ||
+ | </ | ||
+ | # IPSec Verify Compliant | ||
+ | # Разрешить пересылку пакетов между интерфейсами для IPv4 | ||
+ | net.ipv4.ip_forward = 1 | ||
+ | # отключаем icmp redirect | ||
+ | net.ipv4.conf.all.send_redirects = 0 | ||
+ | net.ipv4.conf.all.accept_redirects = 0 | ||
+ | net.ipv4.conf.default.send_redirects = 0 | ||
+ | net.ipv4.conf.default.accept_redirects = 0 | ||
+ | </ | ||
+ | sysctl -p | ||
+ | </ | ||
+ | |||
+ | * [[Webmin]] имеет встроенный модуль IPsec VPN Configuration Openswan version U2.6.37/ | ||
+ | * Первым конфигурационным файлом является / | ||
+ | config setup | ||
+ | protostack=netkey | ||
+ | plutoopts=" | ||
+ | dumpdir=/ | ||
+ | nat_traversal=yes | ||
+ | virtual_private=%v4: | ||
+ | %v4: | ||
+ | oe=off | ||
+ | # | ||
+ | </ | ||
+ | * В первую очередь вам необходимо сформировать ключи, используемые шлюзами для аутентификации. В Debian это ключ можно создать при инсталляции. Запускаем на обеих системах ipsec newhostkey, генерируя нужные нам ключи.< | ||
+ | ipsec newhostkey --output / | ||
+ | |||
+ | ipsec showhostkey --left | ||
+ | ipsec showhostkey --right | ||
+ | </ | ||
+ | * Независимо от того, как вы сконфигурируете сервер, | ||
+ | conn gagahost-to-miraxhost | ||
+ | auto=start | ||
+ | left=188.x.x.x | ||
+ | leftrsasigkey=0sN4vI6ooUyMyL ... | ||
+ | right=91.x.x.x | ||
+ | rightrsasigkey=0sfAhuo4SQ0Qt ... | ||
+ | type=transport | ||
+ | </ | ||
+ | scp / | ||
+ | </ | ||
+ | * [[ipsec?&# | ||
+ | service ipsec start | ||
+ | ipsec verify | ||
+ | ip xfrm state list | ||
+ | </ | ||
+ | ===== Диагностика IPSec Openswan ===== | ||
+ | |||
+ | Запуск сервиса и поиск возникающих проблем. | ||
+ | |||
+ | **Openwan logs (pluto)**: / | ||
+ | * The / | ||
+ | * The / | ||
+ | * / | ||
+ | |||
+ | Если на обоих серверах нет ошибок, | ||
+ | |||
+ | Кроме того, в таблице маршрутизации сервера должны появиться маршруты к частной подсети.< | ||
+ | # ip route | ||
+ | [siteB-private-subnet] via [siteA-gateway] dev eth0 src [siteA-public-IP] | ||
+ | default via [siteA-gateway] dev eth0 | ||
+ | </ | ||
+ | |||
+ | * Команды проверки состояний соединений:< | ||
+ | ipsec verify | ||
+ | service ipsec status | ||
+ | ip xfrm state list - управления SAD, возможности шире, чем у setkey | ||
+ | ipsec addconn --checkconfig - проверка конфигурации | ||
+ | ipsec auto --status - подробное состояние | ||
+ | ip xfrm monitor | ||
+ | </ | ||
+ | * Политики ipsec, согласно которым принимается решение какой трафик направлять в туннель< | ||
+ | ip xfrm pol show | ||
+ | </ | ||
+ | |||
+ | * [[tcpdump]] запускаем для прослушки физического интерфейса на котором построен туннель (а не виртуального GRE). В другом окне например ping -ем удаленную серую сеть (например, | ||
+ | ... | ||
+ | 16: | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Читайте также: | ||
+ | |||
+ | * [[GRE]] - протокол туннелирования сетевых пакетов | ||
+ | * [[sobstvennyj_vpn_servis]] | ||
+ | |||
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга