Ubuntu IPSec Konfiguration für EAP-Radius
Hallo Zusammen,
ich versuche, eine Verbindung zu einem IPSec-VPN-Gateway herzustellen, welches EAP-Radius-Authentifizierung verwendet. Der folgende PowerShell-Befehl richtet die Client-Konfiguration unter Windows korrekt ein und ermöglicht die Anmeldung mit my.domain\user und Passwort.
Unter Ubuntu habe ich das CA-Zertifikat unter abgelegt.
Werte in geschweiften Klammern sind Platzhalter für FQDNs und IP-Adressen
ipsec.conf
Auch habe ich es mit eap-radius & mschapv2 als auth Parameter und dem User aus der ipsec.secrets als eap_identity versucht.
ipsec.secrets
Log Output
Hat hier jemand eine Idee?
ich versuche, eine Verbindung zu einem IPSec-VPN-Gateway herzustellen, welches EAP-Radius-Authentifizierung verwendet. Der folgende PowerShell-Befehl richtet die Client-Konfiguration unter Windows korrekt ein und ermöglicht die Anmeldung mit my.domain\user und Passwort.
Add-VpnConnection -Name MyVPN -ServerAddress {Remote Public FQDN} -TunnelType ikev2 -EncryptionLevel Required -AuthenticationMethod Eap -SplitTunneling -AllUserConnection -RememberCredential -Force -PassThru -DnsSuffix some.suffix
Unter Ubuntu habe ich das CA-Zertifikat unter
/etc/ipsec.d/cacerts/ca.crt
Werte in geschweiften Klammern sind Platzhalter für FQDNs und IP-Adressen
ipsec.conf
conn MyVPN
type=tunnel
left=@any
leftid=my.domain\user
leftauth=eap
leftcert=/etc/ipsec.d/cacerts/ca.crt
right={Remote Public FQDN}
rightsubnet={First Subnet}, {Second Subnet}
dpdaction=restart
keyexchange=ikev2
authby=secret
aggressive=no
keyingtries=%forever
ikelifetime=28800s
lifetime=3600s
dpddelay=30s
dpdtimeout=120s
auto=start
Auch habe ich es mit eap-radius & mschapv2 als auth Parameter und dem User aus der ipsec.secrets als eap_identity versucht.
ipsec.secrets
my.domain\user : EAP "Passwort"
Log Output
initiating IKE_SA MyVPN[34] to {Remote Public IP}
generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(REDIR_SUP) ]
sending packet: from 0.0.0.0[500] to {Remote Public IP}[500] (1096 bytes)
received packet: from {Remote Public IP}[500] to {Local Private IP}[500] (38 bytes)
parsed IKE_SA_INIT response 0 [ N(INVAL_KE) ]
peer didn't accept DH group CURVE_25519, it requested MODP_2048
initiating IKE_SA MyVPN[34] to {Remote Public IP}
generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(REDIR_SUP) ]
sending packet: from {Local Private IP}[500] to {Remote Public IP}[500] (1320 bytes)
received packet: from {Remote Public IP}[500] to {Local Private IP}[500] (472 bytes)
parsed IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(CHDLESS_SUP) N(MULT_AUTH) ]
selected proposal: IKE:AES_CBC_256/HMAC_SHA2_384_192/PRF_HMAC_SHA2_384/MODP_2048
local host is behind NAT, sending keep alives
remote host is behind NAT
sending cert request for "{Cert Details}"
establishing CHILD_SA MyVPN{24}
generating IKE_AUTH request 1 [ IDi N(INIT_CONTACT) CERTREQ IDr SA TSi TSr N(MOBIKE_SUP) N(NO_ADD_ADDR) N(MULT_AUTH) N(EAP_ONLY) N(MSG_ID_SYN_SUP) ]
sending packet: from {Local Private IP}[4500] to {Remote Public IP}[4500] (584 bytes)
received packet: from {Remote Public IP}[4500] to {Local Private IP}[4500] (88 bytes)
parsed IKE_AUTH response 1 [ N(AUTH_FAILED) ]
received AUTHENTICATION_FAILED notify error
establishing connection 'MyVPN' failed
Hat hier jemand eine Idee?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1216046685
Url: https://administrator.de/contentid/1216046685
Ausgedruckt am: 25.11.2024 um 03:11 Uhr
16 Kommentare
Neuester Kommentar
Die alte Stroke Based Config ist schon lange deprecated.
Heute nutzt man die in Strongswan präferierte moderne Vici-Config.
Hier anhand des EAP-MSChapV2 Beispiels
Achtung bei der Identity kann es sein das man den Backslash entweder verdoppeln oder die Domain auch ganz weglassen muss. Das kommt dann auf den Radius drauf an der dahinter steht.
Oder man nimmt einfach den NetworkManager mit Strongswan-Plugin dann gehts auch komfortabel über die GUI:
Gruß siddius
Heute nutzt man die in Strongswan präferierte moderne Vici-Config.
Hier anhand des EAP-MSChapV2 Beispiels
- https://www.strongswan.org/testing/testresults/ikev2/rw-eap-mschapv2-id- ...
- https://www.strongswan.org/testing/testresults/ikev2/rw-eap-mschapv2-id- ...
- CA Zertifikat des VPN-Servers nach
/etc/swanctl/x509ca
kopieren - Neue Config unter
/etc/swanctl/conf.d
erstellen (whatevername.conf) mit Inhalt
connections {
myIKEv2Client {
remote_addrs = X.X.X.X
# wenn VPN Server keine virtuellen IPs vergibt, nächste Zeile auskommentieren
vips = 0.0.0.0
local {
auth = eap
eap_id = "DOMAIN\myuser"
}
remote {
auth = pubkey
id = myserver.domain.de
}
children {
net {
remote_ts = X.X.X.X/24,Y.Y.Y.Y/24
esp_proposals = aes256-aes128-sha256-sha1-modp2048-modp1024
start_action = start
}
}
version = 2
proposals = aes256-aes128-sha256-sha1-modp2048-modp1024
}
}
secrets {
eap-myuser {
id = "DOMAIN\myuser"
secret = Passw0rd
}
}
- Config neu laden mit
swanctl -q
- Fertig
Achtung bei der Identity kann es sein das man den Backslash entweder verdoppeln oder die Domain auch ganz weglassen muss. Das kommt dann auf den Radius drauf an der dahinter steht.
Oder man nimmt einfach den NetworkManager mit Strongswan-Plugin dann gehts auch komfortabel über die GUI:
Gruß siddius
Zitat von @opsec2022:
Schraube mal testweise die Verbosity des Daemons hoch. Ist das MSCHAPv2 Plugin in Strongswan installiert und aktiviert?parsed IKE_AUTH response 1 [ N(AUTH_FAILED) ]
[IKE] received AUTHENTICATION_FAILED notify error
Müssen hier evtl. noch die übrigen Parameter aus dem PowerShell Command in die config übertragen werden? Habe zu SplitTunneling etc. nichts gefunden
Nein, Linux macht per Default Split-Tunneling wenn man kein 0.0.0.0/0 als remote_ts angibt.Beachte auch den Hinweis zu den Virtual IPs in der Config.
Der mag auch die DH Gruppe nicht und erfordert DH Group 14 (2048) die vermutlich nicht konfiguriert ist.
"peer didn't accept DH group CURVE_25519, it requested MODP_2048"
Wie Kollege @7907292512 schon sagt solltest du dringenst auf das modernere vici Interface mit swanctl umstellen!! Die veraltete ipsec.conf Version ist deprecated.
Wie sowas aussieht kannst du HIER sehen. Dort findest du auch entsprechende Beispiele.
"peer didn't accept DH group CURVE_25519, it requested MODP_2048"
Wie Kollege @7907292512 schon sagt solltest du dringenst auf das modernere vici Interface mit swanctl umstellen!! Die veraltete ipsec.conf Version ist deprecated.
Wie sowas aussieht kannst du HIER sehen. Dort findest du auch entsprechende Beispiele.
Ohne deine Strongswan Konfig zu kennen bleibt das alles Kristallkugelei.
Ein Output von swanctl -T vom Einwahlvorgang wäre auch hilfreich.
Du hast ja mit dem obigen Tutorial eine funktionierende Strongswan Beispielkonfig zumindestens was das IPsec Client VPN angeht.
Die Problematiken bei der Radius Mitgabe einer Client Domain hast du gelesen??
Freeradius Management mit WebGUI
Ein Output von swanctl -T vom Einwahlvorgang wäre auch hilfreich.
Du hast ja mit dem obigen Tutorial eine funktionierende Strongswan Beispielkonfig zumindestens was das IPsec Client VPN angeht.
Die Problematiken bei der Radius Mitgabe einer Client Domain hast du gelesen??
Freeradius Management mit WebGUI
- Bekommst du wenn du das VPN unter Windows einrichtest eine virtuelle IP von der Gegenstelle? Wenn ja dann solltest du in der Strongswan-Config noch das vips = 0.0.0.0 ergänzen.
- Was sagen denn die Logs der Gegenstelle, bzw. welche generellen Anforderungen wurden dir für das VPN mitgeteilt wenn du selbst nicht der Server-Admin bist?
- Wenn im Passwort Sonderzeichen vorhanden sind solltest du das Passwort auch in Anführungszeichen einschließen.
- Auch mal nur den reinen Usernamen ohne den Domain-Prefix versuchen.
start_action = start
Du kannst hier mal temporär auf "none" stellen, dann die Config mit swanctl -q
neu laden und dann die IKE und die SA manuell aufbauen und zeitgleich das Verbosity Level schrittweise erhöhen.swanctl -i "MY-VPN" -c net -v 5
Vergleicht man das einmal mit der wasserdicht funktionierenden Tutorial Konfig:
fehlen da aber auch noch einige Kommandos bzw. manche sind völlig überflüssig da sie eh Default sind.
Oder....
Habe ich das jetzt ganz falsch verstanden das du mit dem Strongswan auf einen bestehenden IKEv2 VPN Server connecten willst?! 🤔
Die o.a. Konfig ist ja nur für die Einwahl für mobile IKEv2 Clients gedacht...
Ansonsten sähe ein Debug einer erfolgreichen Einwahl mit der o.a. Konfig so aus:
connections {
ikev2-mobile-vpn {
unique = replace
version = 2
proposals = aes256-sha512-modp2048,aes256-sha256-modp2048,aes256-sha256-modp1024
send_cert = always
pools = pool-ipv4
local_addrs = <lokale_Server_IP>
remote_addrs = 0.0.0.0/0,::/0
local {
auth = pubkey
certs = server-cert.pem
id = fqdn:<fqdn_hostname>
}
remote {
id = %any
auth = eap-mschapv2
eap_id = %any
}
children {
ikev2-mobile {
local_ts = 0.0.0.0/0
esp_proposals = aes256-sha512,aes256-sha384,aes256-sha256,aes256-sha1
start_action = trap
}
}
}
}
pools {
pool-ipv4 {
addrs = 172.25.25.0/24
dns = 9.9.9.9
}
}
secrets {
eap-1 {
id = user
secret = "test123"
}
eap-2 {
id = user2
secret = "user2"
}
}
Oder....
Habe ich das jetzt ganz falsch verstanden das du mit dem Strongswan auf einen bestehenden IKEv2 VPN Server connecten willst?! 🤔
Die o.a. Konfig ist ja nur für die Einwahl für mobile IKEv2 Clients gedacht...
Ansonsten sähe ein Debug einer erfolgreichen Einwahl mit der o.a. Konfig so aus:
root@server:/home/admin# swanctl -T
05[NET] received packet: from 80.1.2.3[517] to 212.1.2.3[500] (432 bytes)
05[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(REDIR_SUP) N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) ]
05[IKE] 80.1.2.3 is initiating an IKE_SA
05[CFG] selected proposal: IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
05[IKE] remote host is behind NAT
05[IKE] sending cert request for "CN=Server CA"
05[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(FRAG_SUP) N(CHDLESS_SUP) N(MULT_AUTH) ]
05[NET] sending packet: from 212.1.2.3[500] to 80.1.2.3[517] (481 bytes)
12[NET] received packet: from 80.1.2.3[5217] to 212.1.2.3[4500] (368 bytes)
12[ENC] unknown attribute type INTERNAL_DNS_DOMAIN
12[ENC] parsed IKE_AUTH request 1 [ IDi N(INIT_CONTACT) IDr CPRQ(ADDR MASK DHCP DNS ADDR6 DHCP6 DNS6 DOMAIN) N(ESP_TFC_PAD_N) N(NON_FIRST_FRAG) SA TSi TSr N(MOBIKE_SUP) N(EAP_ONLY) ]
12[CFG] looking for peer configs matching 212.1.2.3[server.meine.domain]...80.1.2.3[192.168.7.162]
12[CFG] selected peer config 'ikev2-mobile-defaults'
12[IKE] initiating EAP_IDENTITY method (id 0x00)
12[IKE] peer supports MOBIKE
12[IKE] received ESP_TFC_PADDING_NOT_SUPPORTED, not using ESPv3 TFC padding
12[IKE] authentication of 'server.meine.domain' (myself) with RSA signature successful
12[IKE] sending end entity cert "C=DE, O=strongSwan, CN=server.meine.domain"
12[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH EAP/REQ/ID ]
12[NET] sending packet: from 212.1.2.3[4500] to 80.1.2.3[5217] (1232 bytes)
07[NET] received packet: from 80.1.2.3[5217] to 212.1.2.3[4500] (96 bytes)
07[ENC] parsed IKE_AUTH request 2 [ EAP/RES/ID ]
07[IKE] received EAP identity 'user1'
07[IKE] initiating EAP_MSCHAPV2 method (id 0x4E)
07[ENC] generating IKE_AUTH response 2 [ EAP/REQ/MSCHAPV2 ]
07[NET] sending packet: from 212.1.2.3[4500] to 80.1.2.3[5217] (112 bytes)
16[NET] received packet: from 80.1.2.3[5217] to 212.1.2.3[4500] (144 bytes)
16[ENC] parsed IKE_AUTH request 3 [ EAP/RES/MSCHAPV2 ]
16[ENC] generating IKE_AUTH response 3 [ EAP/REQ/MSCHAPV2 ]
16[NET] sending packet: from 212.1.2.3[4500] to 80.1.2.3[5217] (144 bytes)
14[NET] received packet: from 80.1.2.3[5217] to 212.1.2.3[4500] (80 bytes)
14[ENC] parsed IKE_AUTH request 4 [ EAP/RES/MSCHAPV2 ]
14[IKE] EAP method EAP_MSCHAPV2 succeeded, MSK established
14[ENC] generating IKE_AUTH response 4 [ EAP/SUCC ]
14[NET] sending packet: from 212.1.2.3[4500] to 80.1.2.3[5217] (80 bytes)
07[NET] received packet: from 80.1.2.3[5217] to 212.1.2.3[4500] (112 bytes)
07[ENC] parsed IKE_AUTH request 5 [ AUTH ]
07[IKE] authentication of '192.168.7.162' with EAP successful
07[IKE] authentication of 'server.meine.domain' (myself) with EAP
07[IKE] peer requested virtual IP %any
07[CFG] reassigning offline lease to 'user1'
07[IKE] assigning virtual IP 172.25.25.1 to peer 'user1'
07[IKE] peer requested virtual IP %any6
07[IKE] no virtual IP found for %any6 requested by 'user1'
07[IKE] IKE_SA ikev2-mobile-defaults[24] established between 212.1.2.3[server.meine.domain]...80.1.2.3[192.168.178.162]
07[IKE] scheduling rekeying in 13340s
07[IKE] maximum IKE_SA lifetime 14780s
07[CFG] selected proposal: ESP:AES_CBC_256/HMAC_SHA2_256_128/NO_EXT_SEQ
07[IKE] CHILD_SA ikev2-mobile{4} established with SPIs c32f0222_i 08bbc79e_o and TS 0.0.0.0/0 === 172.25.25.1/32
07[ENC] generating IKE_AUTH response 5 [ AUTH CPRP(ADDR DNS DNS) SA TSi TSr N(MOBIKE_SUP) N(ADD_4_ADDR) N(ADD_6_ADDR) ]
07[NET] sending packet: from 212.1.2.3[4500] to 80.1.2.3[5217] (288 bytes)
Ich habe dich vermutlich falsch verstanden wie oben schon beim Debugging geschrieben. 😵💫
Dein Ubuntu ist ein IKEv2 Client der sich auf einen VPN Server einwählt, richtig?
Das hatte ich dann völlig in den falschen Hals bekommen, denn die gepostete Konfig ist selber eine IKEv2 Server Konfig. Sorry, für die Verwirrung! Shame on me... 🙈
Dein Ubuntu ist ein IKEv2 Client der sich auf einen VPN Server einwählt, richtig?
Das hatte ich dann völlig in den falschen Hals bekommen, denn die gepostete Konfig ist selber eine IKEv2 Server Konfig. Sorry, für die Verwirrung! Shame on me... 🙈
Meine Config von oben authentifiziert sich erfolgreich an einer OPNSense, die im Backend per Radius auf eine Server 2022 NPS-Instanz leitet.
Wenn es das denn nun war bitte deinen Thread hier dann auch als erledigt schliessen!