Вопрос: Настройка IPSEC в локальной сети между двумя хостами (OpenBSD)


Попытка использовать IPSEC между двумя хостами в локальной сети. Не задействован VPN

Использование OpenBSD 5.8 (в VirtualBox). Я бы предпочел использовать встроенную поддержку OpenBSD для IPSEC и обмена ключами, а не сторонних.

Два хоста: 10.0.2.10 (хост "А") и 10.0.2.11 (хост "B")

Они могут ping / ssh друг друга, прежде чем пытаться настроить IPSEC.

UPDATE: Я думаю, возможно, OpenIKED (IKE v2) не поддерживает transport , поэтому я буду принимать ответы на isakmp (IKE v1) тоже

Скопированные A /etc/iked/local.pub на B /etc/iked/pubkeys/ipv4/10.0.2.10
Скопированные B /etc/iked/local.pub как /etc/iked/pubkeys/ipv4/10.0.2.11

На обоих:

echo "ikev2 esp from any to any" > /etc/iked.conf

chmod 640 /etc/iked.conf

echo "ipsec=YES" > /etc/rc.conf.local

echo "iked_flags=" >> /etc/rc.conf.local

Проверьте конфигурацию:

/sbin/iked -n
Configuration OK

Я смущен, что делать дальше. Я думаю, мне нужно настроить /etc/ipsec.conf , но я нашел там только документацию IKEv1.

Перезагрузили обе машины. Нет ошибок. Говорит, что демона началась. Если я переименую открытые ключи на что-нибудь, все еще могу пинговать друг друга, поэтому IPSEC, похоже, не работает.

  1. Что еще мне нужно настроить?
  2. Есть ли журналы для IPSEC и iked, и если да, где я могу их найти?
  3. Как определить, работает ли IPSEC после настройки, не глядя на пакеты между машинами? Ping от B до A, tcpdump на A. Должен увидеть «esp» и «spi» в tcpdump

ОБНОВЛЕНИЕ: Я получил IPSEC, работающий с ручным обменом ключами

/etc/ipsec.conf:

# .10 is source, .11 is destination
flow esp from 10.0.2.10 to 10.0.2.11 type require

esp transport from 10.0.2.10 to 10.0.2.11 \
spi 0xCAFEBABE:0xCAFEBABE \
authkey 0x64CHARHEX:0x64CHARHEX \
enckey 0x64CHARHEX:0x64CHARHEX

hex должен быть во всех прописных

chmod 640 /etc/ipsec.conf

ipsecctl -F (delete config)
ipsecctl -f /etc/ipsec.conf (load config)
ipsecctl -s all -v (show config)

Я бы предпочел использовать автоматическую клавиатуру IKEv2. Что я могу сделать?


5
2017-10-27 01:10


Источник




Ответы:


Отвечая на мой собственный вопрос, как ботаник

Проблема 1. OpenIKED (IKEv2) не поддерживает транспортный режим, поэтому вы можете использовать его только для VPN, а не в локальной сети. использование isakmpd (IKEv1)

Проблема 2. Документация для ipsec.conf говорит, что auth а также enc значения имеют значения по умолчанию, но вам, похоже, необходимо их установить

Что еще мне нужно настроить?

Вы должны установить правильную rc.d флаги на isakmpd (Смотри ниже)

Есть ли журналы для IPSEC и iked, и если да, где я могу их найти?

Журналы находятся в /var/log/daemon

Как определить, работает ли IPSEC после настройки, не глядя на пакеты между машинами?

на B, запустите tcpdump host A, и на пробеге ping B , Ты хочешь увидеть esp а также spi в выводе tcpdump

Настроить:

Хост A (10.0.2.10)

# cat << EOF > /etc/ipsec.conf
ike active esp transport from 10.0.2.10 to 10.0.2.11 \
  main auth hmac-sha1 enc aes \
  quick auth hmac-sha2-256 enc aes 
EOF
# chmod 640 /etc/ipsec.conf

# cd /etc/isakmpd/pubkeys/ipv4
# scp notRoot@10.0.2.11:/etc/isakmpd/local.pub 10.0.2.11 `# copy remote's public key`

# rcctl enable ipsec
# rcctl enable isakmpd
# rcctl set isakmpd flags "-KTv" `#K = use ipsec.conf for configuration, T = disable NAT traversal, v = verbose logging`

# ipsecctl -vf /etc/ipsec.conf  `# start ipsec, or reboot`
# rcctl start isakmpd

Хост B (10.0.2.11)

# cat << EOF > /etc/ipsec.conf
ike active esp transport from 10.0.2.11 to 10.0.2.10 \
  main auth hmac-sha1 enc aes \
  quick auth hmac-sha2-256 enc aes 
EOF
# chmod 640 /etc/ipsec.conf

# cd /etc/isakmpd/pubkeys/ipv4
# scp notRoot@10.0.2.10:/etc/isakmpd/local.pub 10.0.2.10 `# copy remote's public key`

# rcctl enable ipsec
# rcctl enable isakmpd
# rcctl set isakmpd flags "-KTv" `#K = use ipsec.conf for configuration, T = disable NAT traversal, v = verbose logging`

# ipsecctl -vf /etc/ipsec.conf  `# start ipsec, or reboot`
# rcctl start isakmpd

1
2017-09-14 22:15





Таким образом, у меня на самом деле было что-то вроде этого в последнее время - просто связь IPSec между одним адресом и моей сетью. Я использовал его для одного из моих телефонных серверов, чтобы попытаться получить TFTP через Интернет (для удовольствия).

------------------------- удаленная сторона, мой телефонный сервер ----------------

для /etc/ipsec.conf:

config setup
        plutodebug=none
        klipsdebug=none
        dumpdir=/var/run/pluto/
        nat_traversal=yes
        protostack=netkey
        plutostderrlog=/var/log/ipsec.log

conn L2TP-PSK-noNAT
        type=tunnel
        authby=secret
        pfs=no
        compress=no
        keyexchange=ike
        auth=esp
        keyingtries=3
        rekey=no
        ike=aes256-md5-modp1536
        ikelifetime=7800s
        esp=aes128-md5
        keylife=3600s
        left=XXX.XXX.XXX.XXX
        leftid=XXX.XXX.XXX.XXX
        leftsubnet=XXX.XXX.XXX.XXX/32  
        ####Those three addresses are all the same - No NAT/routing###
        right=hq.myDynDNSDomainToMyOffice.com
        rightid=hq.myDynDNSDomainToMyOffice.com
        rightsourceip=10.0.0.1
        rightsubnet=10.0.0.0/24
        auto=add

для /etc/ipsec.secrets:

# this file is managed with debconf and will contain the automatically created RSA keys
include /var/lib/openswan/ipsec.secrets.inc
XXX.XXX.XXX.XXX hq.myDynDNSDomainToMyOffice.com: PSK "mySuperSecretPassword!"

---------------------- местная сторона, мой брандмауэр ---------------------- -----

/etc/ipsec.conf

config setup
        plutodebug="none"
        nat_traversal="yes"
        dumpdir=/var/run/pluto/
        keep_alive="60"
        probe_psk="no"
        plutostderrlog=/var/log/ipsec.log

# Phone Server
conn S_REF_IpsSitPhoneServe_0
        authby="psk"
        auto="start"
        compress="no"
        ecn="no"
        esp="aes128-md5"
        ike="aes256-md5-modp1536"
        ikelifetime="7800"
        keyexchange="ike"
        keylife="3600"
        left="hq.myDynDNSDomainToMyOffice.com"
        leftid="hq.myDynDNSDomainToMyOffice.com"
        leftsourceip="10.0.0.1"
        leftsubnet="10.0.0.0/24"
        pfs="no"
        pmtu_discovery="no"
        rekeymargin="540"
        right="XXX.XXX.XXX.XXX"
        rightid="XXX.XXX.XXX.XXX"
        rightsubnet="XXX.XXX.XXX.XXX/32"
        type="tunnel"

для /etc/ipsec.secrets:

# this file is managed with debconf and will contain the automatically created RSA keys
include /var/lib/openswan/ipsec.secrets.inc
hq.myDynDNSDomainToMyOffice.com XXX.XXX.XXX.XXX : PSK "mySuperSecretPassword!"

Они доставят вам 99% пути. Остальные 1% зависят от вас с журналами ошибок, создаваемыми в /var/log/ipsec.log. Обратите внимание, что серверный телефон был выполнен вручную, но сторона брандмауэра - это то, что мой графический интерфейс брандмауэра кашлял. Во второй половине могут быть некоторые ненужные / избыточные биты конфигурации.

После того, как вы его заработаете, убедитесь, что вы дважды проверяете все параметры безопасности, прежде чем передавать через него что-нибудь «ipsec-достойное».

Edit 01: Я видел, что вам нужны лучшие примеры, поэтому я отправляю несколько новых файлов конфигурации, которые я только что тестировал:

---------------- телефонный сервер ipsec.conf -----------------

root@phoneServerName:/home/neil# cat /etc/ipsec.conf
# /etc/ipsec.conf - Openswan IPsec configuration file

version 2.0

config setup
        plutodebug=all
        klipsdebug=none
        dumpdir=/var/run/pluto/
        protostack=netkey
        plutostderrlog=/var/log/ipsec.log

conn PSK-noNAT
        type=transport
        authby=secret
        keyexchange=ike
        ike=aes256-md5-modp1536
        ikelifetime=7800s
        phase2alg=aes128-md5
        keylife=3600s
        left=XXX.XXX.XXX.XXX
        leftid=XXX.XXX.XXX.XXX
        right=hq.myDynDNSDomainToMyOffice.com
        rightid=hq.myDynDNSDomainToMyOffice.com
        auto=add

--------------------- firewall ipsec.conf -------------------------

hq:/var/sec/chroot-ipsec/etc # cat ipsec.conf
#/etc/ipsec.conf - strongSwan IPsec configuration file

config setup
        #metric="0"
        charonstart="no"
        plutodebug="none"
        uniqueids="no"
        nocrsend="yes"
        nat_traversal="no"
        keep_alive="60"
        crlcheckinterval="0"
        strictcrlpolicy="no"
        probe_psk="no"

conn %default
        rekeyfuzz="100%"
        keyingtries="0"
        leftsendcert="always"
        dpddelay="30"
        dpdtimeout="120"
        dpdaction="restart"

conn transportModeFirewallToPhoneServer
        authby="psk"
        auto="start"
        compress="no"
        ecn="no"
        esp="aes128-md5"
        ike="aes256-md5-modp1536"
        ikelifetime="7800"
        keyexchange="ike"
        keylife="3600"
        left="hq.myDynDNSDomainToMyOffice.com"
        leftid="hq.myDynDNSDomainToMyOffice.com"
        leftupdown="/usr/libexec/ipsec/updown classic"
        pfs="yes"
        pfsgroup="modp1536"
        pmtu_discovery="no"
        rekeymargin="540"
        right="XXX.XXX.XXX.XXX"
        rightid="XXX.XXX.XXX.XXX"
        type="transport"

В принципе, просто удалите что-нибудь о подсетях и измените тип транспорта.

Это рабочая конфигурация. Откуда я знаю, что он работает? IPTables блокирует все на сервере телефона. Как только я подключаю IPSec-соединение, мой трафик SIP и трафик веб-управления проделывают его.


0
2017-10-27 06:08



это похоже на настройки VPN нет? Я ищу хозяина для размещения ipsec на том же языке - Neil McGuigan
Да, правильно. Но если вы переключите тип из туннеля на транспорт, это должно быть много. Я сам это испытал и отредактировал ответ с рабочей конфигурацией. Позвольте мне знать, если это помогает! - Neil
Кроме того, это настройки для openswan, а не встроенный ipsec openbsd - Neil McGuigan