web-dev-qa-db-ja.com

2つのホスト間のLANでのIPSECのセットアップ(OpenBSD)

LAN上の2つのホスト間でIPSECを使用しようとしています。 VPNは関係ありません

OpenBSD 5.8(VirtualBox内)の使用。サードパーティではなく、OpenBSDのIPSECとキー交換の組み込みサポートを使用したいと思います。

2つのホスト: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

構成を確認します。

/sbin/iked -n
Configuration OK

私は次に何をすべきかについて混乱しています。 /etc/ipsec.confを設定する必要があると思いますが、IKEv1のドキュメントしか見つかりませんでした。

両方のマシンを再起動しました。エラーはありません。 ikedデーモンが起動したと言います。公開鍵の名前を何かに変更しても、相互にpingを実行できるため、IPSECが機能していないようです。

  1. 他に何を設定する必要がありますか?
  2. IPSECとikedのログはありますか?ある場合、どこで見つけることができますか?
  3. マシン間のパケットを確認せずに、構成後にIPSECが機能しているかどうかを確認する方法は? BからAにpingを実行し、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

16進数はすべて大文字にする必要があります

chmod 640 /etc/ipsec.conf

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

IKEv2の自動キーイングを使用したいと思います。私に何ができる?

6
Neil McGuigan

オタクのように自分の質問に答える

問題1.OpenIKED(IKEv2)はトランスポートモードをサポートしていないため、VPNでのみ使用でき、LANでは使用できません。 isakmpd(IKEv1)を使用します

問題2.ipsec.confのドキュメントには、authencの値にはデフォルトがあると記載されていますが、とにかく設定する必要があるようです。

他に何を設定する必要がありますか?

isakmpdに正しいrc.dフラグを設定する必要があります(以下を参照)

IPSECとikedのログはありますか?ある場合、どこで見つけることができますか?

ログは/var/log/daemonにあります

マシン間のパケットを確認せずに、構成後にIPSECが機能しているかどうかを確認するにはどうすればよいですか?

bではtcpdump Host Aを実行し、Aではping Bを実行します。 tcpdumpの出力にespspiを表示したい

セットアップ:

ホスト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
2
Neil McGuigan

だから私は実際に最近このようなものを実行していました-1つの単一のアドレスと私のネットワークの間のIPSecリンクだけです。私はそれを私の電話サーバーの1つに使用したので、インターネット経由で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に作成されるエラーログであなた次第です。電話サーバー側はすべて手作業で行われたが、ファイアウォール側は私のファイアウォールGUIが苦しんだものであったことに注意してください。後半には、不要な/冗長な構成ビットがいくつかある可能性があります。

動作させたら、「ipsec-worthy」を渡す前に、すべてのセキュリティパラメータを再確認してください。

編集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トラフィックとWeb管理トラフィックが通過します。

0
Neil