Configurando o IPSEC na LAN entre dois hosts (OpenBSD)

6

Tentando usar o IPSEC entre dois hosts em uma LAN. Nenhuma VPN envolvida

Usando o OpenBSD 5.8 (no VirtualBox). Eu prefiro usar o suporte embutido do OpenBSD para IPSEC e troca de chaves e não um terceiro.

Dois hosts: 10.0.2.10 (host "A") e 10.0.2.11 (host "B")

Eles podem pingar / ssh uns aos outros antes de tentar configurar o IPSEC.

UPDATE: Eu acho que talvez o OpenIKED (IKE v2) não suporte o modo transport , então eu também aceito respostas para o isakmp (IKE v1)

Copied A's /etc/iked/local.pub para B's /etc/iked/pubkeys/ipv4/10.0.2.10
/etc/iked/local.pub de B copiado para A /etc/iked/pubkeys/ipv4/10.0.2.11

Em ambos:

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

Verifique a configuração:

/sbin/iked -n
Configuration OK

Estou confuso sobre o que fazer a seguir. Acho que preciso configurar o /etc/ipsec.conf , mas só encontrei a documentação do IKEv1 por aí.

Reiniciou as duas máquinas. Sem erros. Diz que o daemon iked foi iniciado. Se eu renomear as chaves públicas para qualquer coisa, ainda posso pingar umas nas outras, então o IPSEC não parece estar funcionando.

  1. O que mais eu preciso configurar?
  2. Existem logs para o IPSEC e iked e, em caso afirmativo, onde posso encontrá-los?
  3. Como saber se o IPSEC está funcionando uma vez configurado, sem olhar para os pacotes entre as máquinas? Ping de B para A, tcpdump em A. Deve ver "esp" e "spi" no tcpdump

UPDATE: Eu tenho IPSEC trabalhando com troca de chave manual

/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 precisa estar em maiúsculas

chmod 640 /etc/ipsec.conf

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

Eu prefiro usar a codificação automática do IKEv2. O que posso fazer?

    
por Neil McGuigan 27.10.2015 / 02:10

2 respostas

2

Respondendo a minha própria pergunta como um nerd

Problema 1. O OpenIKED (IKEv2) não suporta o modo de transporte, então você só pode usá-lo para VPNs, e não em uma LAN. Use isakmpd (IKEv1)

Problema 2. A documentação de ipsec.conf diz que os valores de auth e enc têm padrões, mas parece que você precisa defini-los de qualquer maneira

What else do I need to configure?

Você precisa definir os sinalizadores rc.d corretos em isakmpd (veja abaixo)

Are there logs for IPSEC and iked, and if so, where can I find them?

Os registros estão em /var/log/daemon

How to tell if IPSEC is working once configured, without looking at packets between the machines?

em B, execute tcpdump host A e em A run ping B . Você quer ver esp e spi na saída do tcpdump

Configuração:

Anfitrião 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 [email protected]:/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

Host 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 [email protected]:/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
    
por 15.09.2017 / 00:15
0

Então, na verdade, tive algo parecido com isso ocorrendo recentemente - apenas um link IPSec entre um único endereço e minha rede. Eu usei para um dos meus servidores de telefone para que eu pudesse tentar obter o TFTP pela internet (por diversão).

------------------------- o lado remoto, meu servidor de telefone --------------- -

para /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

para /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!"

---------------------- o lado local, meu firewall ------------------- --------

/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"

para /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!"

Isso vai te dar 99% do caminho até lá. O outro 1% é com os logs de erro que estão sendo criados em /var/log/ipsec.log. Por favor, note que o lado do servidor de telefone foi feito à mão, mas o lado do firewall era o que minha GUI de firewall fazia. Pode haver alguns bits de configuração desnecessários / redundantes no segundo semestre.

Depois de trabalhar, verifique novamente todos os parâmetros de segurança antes de passar qualquer coisa 'digna de ipsec' por meio dela.

Editar 01: Eu vi que você queria exemplos melhores, então estou postando alguns novos arquivos de configuração que acabei de testar:

---------------- servidor de telefone 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"

Basicamente, basta remover qualquer coisa sobre sub-redes e alterar o tipo a ser transportado.

Esta é uma configuração de trabalho. Como eu sei que está funcionando? O IPTables bloqueia tudo no servidor do telefone. Depois que eu conecto a conexão IPSec, meu tráfego SIP e o tráfego de gerenciamento da Web passam.

    
por 27.10.2015 / 07:08