在两台主机(OpenBSD)之间build立局域网上的IPSEC

尝试在局域网上的两台主机之间使用IPSEC。 没有涉及VPN

使用OpenBSD 5.8(在VirtualBox中)。 我宁愿使用OpenBSD对IPSEC和密钥交换的内置支持,而不是第三方。

两台主机: 10.0.2.10 (主机“A”)和10.0.2.11 (主机“B”)

在尝试设置IPSEC之前,它们可以ping / ssh。

更新:我想也许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 

检查configuration:

 /sbin/iked -n Configuration OK 

我感到困惑,接下来该做什么。 我想我需要设置/etc/ipsec.conf ,但是我只findIKEv1文档。

重新启动两台机器。 没有错误。 iked守护进程开始了。 如果我把公钥重命名为任何东西,仍然可以互相ping通,所以IPSEC似乎没有工作。

  1. 我还需要configuration什么?
  2. 是否有IPSEC的日志和iked,如果有的话,我可以在哪里find它们?
  3. 如何判断IPSEC是否configuration一次,而不需要查看机器之间的数据包? 从B到A,从A到tcpdump。应该在tcpdump中看到“esp”和“spi”

更新:我得到了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的自动键控。 我能做什么?

回答我自己的问题,像个书呆子

问题1. OpenIKED(IKEv2)不支持传输模式,因此您只能将其用于VPN,而不能用于LAN。 使用isakmpd (IKEv1)

问题2: ipsec.conf的文档说authenc值有默认值,但你似乎需要设置它们

我还需要configuration什么?

你需要在isakmpd上设置正确的rc.d标志(见下面)

是否有IPSEC的日志和iked,如果有的话,我可以在哪里find它们?

日志在/var/log/daemon

如何判断IPSEC是否configuration一次,而不需要查看机器之间的数据包?

在B上运行tcpdump host A ,在A上运行ping B 你想在tcpdump输出中看到espspi

build立:

主机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 

主持人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 

所以我实际上有最近运行的东西 – 只是一个地址和我的networking之间的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创build的错误日志来决定。 请注意,手机服务器端完全是手工完成的,但防火墙方面是我的防火墙GUI的咳嗽。 下半年可能会有一些不必要/冗余的configuration位。

在得到它的工作之后,确保在传递任何“ipsec-worthy”之前,仔细检查所有的安全参数。

编辑01:我看到你想要更好的例子,所以我发布了一些新的configuration文件,我刚刚testing:

—————-电话服务器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" 

基本上,只要删除任何有关子网,并更改types来运输。

这是一个工作configuration。 我如何知道它的工作? IPTables阻止电话服务器上的所有内容。 一旦连接IPSec连接,我的SIPstream量和Webpipe理stream量就可以通过。