Ман написан в 2011 году, про актуальность его в 2018 ничего не могу сказать.
IPSec (сокращение от IP Security) — набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP, позволяет осуществлять подтверждение подлинности и/или шифрование IP-пакетов. IPsec также включает в себя протоколы для защищённого обмена ключами в сети Интернет.
IPSec (сокращение от IP Security) — набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP, позволяет осуществлять подтверждение подлинности и/или шифрование IP-пакетов. IPsec также включает в себя протоколы для защищённого обмена ключами в сети Интернет.
Делюсь с тем, с чем предоставилось познакомиться в ходе обучения на работе. Тут, конечно, далеко не всё, но я постарался расписать подробно, чтобы была ясна логика работы IPSec.
Система — Debian 6.0.2.1. Ставим на машины ipsec-tools, racoon. Для анализа сетевого трафика можно поставить tcpdump.
2 вида соединения: туннельный и транспортный.
Туннельный режим предполагает шифрование всего пакета, включая заголовок сетевого уровня. Туннельный режим применяется в случае необходимости скрытия информационного обмена организации с внешним миром.
Транспортный режим используется для шифрования поля данных IP пакета, содержащего протоколы транспортного уровня (TCP, UDP, ICMP), которое, в свою очередь, содержит информацию прикладных служб.
Правим /etc/sysctl.conf. Раскоменчиваем строчку
net.ipv4.ip_forward=1
Убираем ipv6 (мы его просто не используем, поэтому, чтобы не болтался, вырезаем):
#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
Настройки туннельного соединения:
Допустим, в нашем распоряжении 2 машины с двумя сетевыми интерфейсами с адресами 172.16.0.х и 10.0.х.х. Также имеется роутер, но не суть. В туннельном режиме связь между машинами реализуется так:
Например, нужно соединить машину 1 с адресами 172.16.0.2 и 10.0.100.1 с машиной 2 с адресами 172.16.0.3 и 10.0.101.1.
Во-первых:
На машине 1:
ip route add 10.0.101.0/24 via 10.0.100.1
На машине 2:
ip route add 10.0.100.0/24 via 10.0.101.1
Легче всего прописать это в автозагрузку. В Debian это файл /etc/rc.local. Пишем туда строчку:
/bin/ip route add 10.0.101.0/24 via 10.0.100.1
— на машине 1.
/bin/ip route add 10.0.101.0/24 via 10.0.100.1
— на машине 2.
Теперь перейдём к настройке IPSec. Главный конфигурационный файл — /etc/ipsec-tools.conf
Раскомментируем строчки:
flush;
spdflush;
Настраиваем шифрование:
Машина 1:
#ESP
add 172.16.0.2 172.16.0.3 esp 15701 -E 3des-cbc -m tunnel "13terrghe55634fhwg45wfeq";
add 172.16.0.3 172.16.0.2 esp 24501 -E 3des-cbc -m tunnel "13terrghe55634fhwg45wfeq";
Машина 2:
#ESP
add 172.16.0.3 172.16.0.2 esp 24501 -E 3des-cbc -m tunnel "13terrghe55634fhwg45wfeq";
add 172.16.0.2 172.16.0.3 esp 15701 -E 3des-cbc -m tunnel "13terrghe55634fhwg45wfeq";
Пояснение: ESP (Encapsulating Security Payload) — обеспечивает конфиденциальность данных. Здесь мы указываем адреса соединяемых машин, индексы, метод шифрования, ключ. Длина ключа, кстати, равняться должна 24, иначе не пойдёт (по крайней мере, с шифрованием 3des).
Ну и, соответственно, при туннельном режиме параметр -m tunnel обязателен.
Настраиваем SPD:
Машина 1:
spdadd 10.0.100.1 10.0.101.1 any -P out ipsec esp/tunnel/172.16.0.2-172.16.0.3/require; spdadd 10.0.101.1 10.0.100.1 any -P in ipsec esp/tunnel/172.16.0.3-172.16.0.2/require;
Машина 2:
spdadd 10.0.101.1 10.0.100.1 any -P out ipsec esp/tunnel/172.16.0.3-172.16.0.2/require; spdadd 10.0.100.1 10.0.101.1 any -P in ipsec esp/tunnel/172.16.0.2-172.16.0.3/require;
Как видно, настройки зеркальные.
Рестартуем службу: /etc/init.d/setkey restart
Пингуем машины, убеждаемся, что пинги идут, выполняем команду tcpdump (для исключения ssh-трафика набираем tcpdump | grep -v ssh), и если видим строчки вида
17:52:08.868024 IP 172.16.0.2 > 172.16.0.3: ESP(spi=0x00003d56,seq=0x1687), length 112
то всё хорошо.
Также можно посмотреть системный лог:
tail -f /var/log/syslog
При таких настройках, если в сети есть машина 3, настроенная, например, в туннельном режиме с машиной 2, то машина 3 никак не увидит машину 1 и наоборот.
Транспортный режим
Допустим, имеется 3 машины. Создаем GRE-туннель на всех машинах:
ip tunnel add mgre0 mode gre key 0xfffffffe ttl 255
Прописываем IP-адреса (для каждой машины, соответственно, свой IP):
На машине 1:
ip addr add 10.0.100.1/24 dev mgre0
На машине 2:
ip addr add 10.0.101.1/24 dev mgre0
На машине 3:
ip addr add 10.0.102.1/24 dev mgre0
Чтобы машины видели друг-друга, прописываем на машине 1 (в нашем случае добавляем адреса 2 машин):
ip neigh add 10.0.101.1 lladdr 172.16.0.3 dev mgre0
ip neigh add 10.0.102.1 lladdr 172.16.0.4 dev mgre0
На машине 2:
ip neigh add 10.0.100.1 lladdr 172.16.0.2 dev mgre0
ip neigh add 10.0.102.1 lladdr 172.16.0.4 dev mgre0
На машине 3:
ip neigh add 10.0.100.1 lladdr 172.16.0.2 dev mgre0
ip neigh add 10.0.101.1 lladdr 172.16.0.3 dev mgre0
В общем, смысл должен быть ясен.
Также не забываем про ip route:
На машине 1:
ip route add 10.0.101.0/24 dev mgre0
ip route add 10.0.102.0/24 dev mgre0
На машине 2:
ip route add 10.0.100.0/24 dev mgre0
ip route add 10.0.102.0/24 dev mgre0
На машине 3:
ip route add 10.0.100.0/24 dev mgre0
ip route add 10.0.101.0/24 dev mgre0
Ну и, естественно, прописываем всё это в /etc/rc.local (пример машины 1):
/bin/ip tunnel add mgre0 mode gre key 0xfffffffe ttl 255
/bin/ip link set mgre0 up
/bin/ip addr add 10.0.100.1/24 dev mgre0
/bin/ip route add 10.0.101.0/24 dev mgre0
/bin/ip route add 10.0.102.0/24 dev mgre0
/bin/ip neigh add 10.0.101.1 lladdr 172.16.0.3 dev mgre0
/bin/ip neigh add 10.0.102.1 lladdr 172.16.0.4 dev mgre0
ip link set mgre0 up — поднимает наше устройство mgre0.
Вроде бы организационные моменты сделаны, перейдём к настройке IPSec.
Настроим так, чтобы каждая машина знала друг о друге. Так будет выглядеть секция шифрования для машины 1:
#ESP
add 172.16.0.2 172.16.0.3 esp 15701 -E 3des-cbc "13terrghe55634fhwg45wfeq";
add 172.16.0.3 172.16.0.2 esp 24501 -E 3des-cbc "13terrghe55634fhwg45wfeq";
add 172.16.0.2 172.16.0.4 esp 15702 -E 3des-cbc "13terrghe55634fhwg45wfeq";
add 172.16.0.4 172.16.0.2 esp 24502 -E 3des-cbc "13terrghe55634fhwg45wfeq";
Для машины 2:
#ESP
add 172.16.0.3 172.16.0.2 esp 24501 -E 3des-cbc "13terrghe55634fhwg45wfeq";
add 172.16.0.2 172.16.0.3 esp 15701 -E 3des-cbc "13terrghe55634fhwg45wfeq";
add 172.16.0.3 172.16.0.4 esp 15703 -E 3des-cbc "13terrghe55634fhwg45wfeq";
add 172.16.0.4 172.16.0.3 esp 24503 -E 3des-cbc "13terrghe55634fhwg45wfeq";
Для машины 3:
#ESP
add 172.16.0.4 172.16.0.3 esp 24503 -E 3des-cbc "13terrghe55634fhwg45wfeq";
add 172.16.0.3 172.16.0.4 esp 15703 -E 3des-cbc "13terrghe55634fhwg45wfeq";
add 172.16.0.4 172.16.0.2 esp 24502 -E 3des-cbc "13terrghe55634fhwg45wfeq";
add 172.16.0.2 172.16.0.4 esp 15702 -E 3des-cbc "13terrghe55634fhwg45wfeq";
Обратите внимание на индексы esp xxxxx. Для одинаковых записей они должны совпадать.
Настраиваем SPD:
Машина 1:
spdadd 172.16.0.2 172.16.0.3 any -P out ipsec
esp/transport//require;
spdadd 172.16.0.3 172.16.0.2 any -P in ipsec
esp/transport//require;
spdadd 172.16.0.2 172.16.0.4 any -P out ipsec
esp/transport//require;
spdadd 172.16.0.4 172.16.0.2 any -P in ipsec
esp/transport//require;
Машина 2:
spdadd 172.16.0.3 172.16.0.2 any -P out ipsec
esp/transport//require;
spdadd 172.16.0.2 172.16.0.3 any -P in ipsec
esp/transport//require;
spdadd 172.16.0.3 172.16.0.4 any -P out ipsec
esp/transport//require;
spdadd 172.16.0.4 172.16.0.3 any -P in ipsec
esp/transport//require;
Машина 3:
spdadd 172.16.0.4 172.16.0.2 any -P out ipsec
esp/transport//require;
spdadd 172.16.0.2 172.16.0.4 any -P in ipsec
esp/transport//require;
spdadd 172.16.0.4 172.16.0.3 any -P out ipsec
esp/transport//require;
spdadd 172.16.0.3 172.16.0.4 any -P in ipsec
esp/transport//require;
Рестартуем службу: /etc/init.d/setkey restart
Опят пингуем машины, убеждаемся, что пинги идут, выполняем команду tcpdump (для исключения ssh-трафика набираем tcpdump | grep -v ssh), и если видим строчки вида
17:52:08.868024 IP 172.16.0.2 > 172.16.0.3: ESP(spi=0x00003d56,seq=0x1687), length 112
то всё хорошо.
Также можно посмотреть системный лог:
tail -f /var/log/syslog
У вас в начале написано /etc/init.d/setkey restart
ОтветитьУдалитьзачем? если в него никаких настроек не внесено,
и куда писать эти команды?
add 172.16.0.2 172.16.0.3 esp 15701 -E 3des-cbc -m tunnel "13terrghe55634fhwg45wfeq";
add 172.16.0.3 172.16.0.2 esp 24501 -E 3des-cbc -m tunnel "13terrghe55634fhwg45wfeq";
В конфиге /etc/ipsec-tools.conf такого нет.
И как добавить марштур, вот результат выполнение команды
ОтветитьУдалитьroot@PIVO:/# ip route add 10.200.1.0/24 via 192.168.251.0
RTNETLINK answers: No such process
Las Vegas Casino to Reopen for COVID-19 Day on June 25
ОтветитьУдалитьThe casino 태백 출장샵 will remain closed until Monday and will reopen on 공주 출장마사지 June 25. The casino 고양 출장마사지 will 군산 출장마사지 remain open 전라남도 출장마사지 until Friday night. Casino owner Sylvester Stallone