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자리를 대체하려고 하기 때문에 루트로 실행해야 합니다 /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/, 여기서 추가에 대한 아이디어를 찾았습니다.

관련 정보