IPsec PSK VPN、StrongSwanをFortiGateとして使用、使い捨てパスワード(Fortitoken)を使用

IPsec PSK VPN、StrongSwanをFortiGateとして使用、使い捨てパスワード(Fortitoken)を使用

したがって、デフォルトのFortinet VPNクライアントはIPsecをサポートしていないため、Strongswanを使用してリモートFortigateに接続しました。 OTPを提供するハードウェアFortiToken 200もあります。

私の現在の構成は次のとおりです。

/etc/ipsec.conf

conn my-config
keyexchange=ikev1
aggressive=yes
ike = aes256-sha256-modp1536
esp = aes256-sha1-modp1536

right=remote_ip
rightid=%any
rightsubnet=0.0.0.0/0
rightauth=psk

leftsourceip=%config
leftauth=psk
leftauth2=xauth
xauth_identity="username"
auto=add

/etc/ipsec.secrets

remote_ip : PSK "passphrase_here"
username : XAUTH "password_here"

私が実行したとき:

IPsecの私の設定

initiating Aggressive Mode IKE_SA german[5] to remote_ip
generating AGGRESSIVE request 0 [ SA KE No ID V V V V V ]
sending packet: from 10.0.2.15[500] to remote_ip[500] (460 bytes)
received packet: from remote_ip[500] to 10.0.2.15[500] (536 bytes)
parsed AGGRESSIVE response 0 [ SA KE No ID HASH V NAT-D NAT-D V V V V V ]
received NAT-T (RFC 3947) vendor ID
received DPD vendor ID
received XAuth vendor ID
received unknown vendor ID: 82:99:03:17:57:a3:60:82:c6:a6:21:de:00:00:00:00
received FRAGMENTATION vendor ID
received FRAGMENTATION vendor ID
selected proposal: IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_1536
local host is behind NAT, sending keep alives
generating AGGRESSIVE request 0 [ HASH NAT-D NAT-D ]
sending packet: from 10.0.2.15[4500] to remote_ip[4500] (140 bytes)
received packet: from remote_ip[4500] to 10.0.2.15[4500] (92 bytes)
parsed TRANSACTION request 1581697690 [ HASH CPRQ(X_TYPE X_USER X_PWD) ]
no XAuth method found
generating TRANSACTION response 1581697690 [ HASH CP ]
sending packet: from 10.0.2.15[4500] to remote_ip[4500] (76 bytes)

明らかに、ある時点でOTPを求めるプロンプトが表示されるように、構成を何らかの方法で編集する必要があります。

問題は私が何をすべきかです。

答え1

StrongSwanとFortiTokenの使い捨てパスワード(OTP)を使用してFortiGate VPNに接続できます。ハードウェアトークンを使ったことはありませんが、同じ機能を実行できることを願っています。

主な秘訣はXAuthパスワードへのOTP接続

この回答の残りの部分は、役に立つヒントを作成することに関するものであり、作業構成が含まれています。


/etc/ipsec.secrets接続するたびにそれを変更しないようにOTPを要求し、zenityそれに応じて秘密ファイルを変更する小さなスクリプトを作成しました。このスクリプトは便宜上、既存の6桁を置き換えようとするため、rootとして実行する必要があります/etc/ipsec.secrets。つまり、最初に設定するときにXAuthパスワードの後に​​6桁を入力する必要があります。

婦人声明:このスクリプトは、二重引用符の後に続く6桁の数字をそれぞれ置き換えます"。スクリプトは XAuth 資格情報のセットを想定し、必要な他の情報を破損する可能性があります。その目的を完全に理解した場合にのみ、リスクを取って使用してください。

#!/bin/bash

SECRETS_FILE="/etc/ipsec.secrets"

TOKEN=$(zenity --entry --title "FortiToken" --text "Enter FortiToken")

if [ ${#TOKEN} -ne 6 ]; then
    echo "The token needs to be exactly 6 characters. Quitting."
    exit
fi

# Expects a 6-digit token to be already present after the password.
sed -Ei 's/[0-9]{6}\"/'"$TOKEN"'\"/' "$SECRETS_FILE"

echo "Updated $SECRETS_FILE"

ipsec restart --nofork

完全性のために、以下は私のものです/etc/ipsec.conf

conn fortigate_vpn
    type = tunnel
    dpdaction = restart
    dpddelay = 30
    dpdtimeout = 60
    keyexchange = ikev1
    ike = aes128-sha1-modp1536
    esp = aes256-sha256-modp1536
    aggressive = yes
    right = 1.2.3.4                  # fortigate gateway
    rightsubnet = 192.168.15.0/24    # subnet
    rightid = %any
    rightauth = psk

    left = %defaultroute
    leftsourceip = %config
    leftauth = psk
    leftauth2 = xauth
    xauth_identity = "foo"           # XAuth id
    leftid = "bar"                   # local id / peer id
    auto = start

さらに/etc/ipsec.secrets:

: PSK "foobarpsk"
foo : XAUTH "pa$$word990099"         # where pa$$word is your XAuth password

ありがとうhttps://blog.boll.ch/fortigate-ipsec-vpn-with-native-macos-client/、ここで追加のアイデアを見つけました。

関連情報