Установка IPSEC на LAN между двумя хостами (OpenBSD)

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

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

Два хоста: 10.0.2.10 (разместите), и 10.0.2.11 (разместите "B"),

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

ОБНОВЛЕНИЕ: Я думаю, возможно, что 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 к A /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 там.

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

  1. Что еще я должен настроить?
  2. Есть ли журналы для IPSEC и iked, и если так, где я могу найти их?
  3. Как сказать, работает ли IPSEC когда-то настроенный, не смотря на пакеты между машинами? Ping от B до A, tcpdump на A. Должен видеть "особенно" и "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

преобразуйте в шестнадцатеричную систему должен быть во всем верхнем регистре

chmod 640 /etc/ipsec.conf

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

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

6
задан 13 September 2017 в 20:50
2 ответа

Отвечаю на свой вопрос как ботаник

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

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

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

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

Существуют ли журналы для IPSEC и iked, и если да, то где их найти?

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

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

на B запустите tcpdump host A , а на 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
2
ответ дан 3 December 2019 в 00:40

Так что недавно у меня действительно было что-то подобное - просто связь 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

--------------------- брандмауэр 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
ответ дан 3 December 2019 в 00:40

Теги

Похожие вопросы