したがって、デフォルトの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/、ここで追加のアイデアを見つけました。