testing: Migrated ikev2 scenarios to swanctl
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
The roadwarrior <b>carol</b> sets up a connection to gateway <b>moon</b>.
|
||||
At the outset the gateway authenticates itself to the client by sending
|
||||
an IKEv2 <b>digital signature</b> accompanied by an X.509 certificate.
|
||||
<p/>
|
||||
Next <b>carol</b> uses the GSM <i>Subscriber Identity Module</i> (<b>EAP-SIM</b>)
|
||||
method of the <i>Extensible Authentication Protocol</i> to authenticate herself.
|
||||
In this scenario triplets from the file <b>/etc/ipsec.d/triplets.dat</b> are used
|
||||
instead of a physical SIM card.
|
||||
<p/>
|
||||
The gateway forwards all EAP messages to the RADIUS server <b>alice</b>
|
||||
which also uses static triplets. In addition to her IKEv2 identity
|
||||
<b>[email protected]</b>, roadwarrior <b>carol</b> uses the EAP
|
||||
identity <b>228060123456001</b>.
|
||||
@@ -0,0 +1,10 @@
|
||||
carol::cat /var/log/daemon.log::authentication of 'moon.strongswan.org' with RSA.* successful::YES
|
||||
moon:: cat /var/log/daemon.log::received EAP identity .*228060123456001::YES
|
||||
carol::cat /var/log/daemon.log::server requested EAP_SIM authentication::YES
|
||||
carol::cat /var/log/daemon.log::authentication of 'moon.strongswan.org' with EAP successful::YES
|
||||
moon:: cat /var/log/daemon.log::authentication of '[email protected]' with EAP successful::YES
|
||||
carol::ping -c 1 PH_IP_ALICE::64 bytes from PH_IP_ALICE: icmp_.eq=1::YES
|
||||
carol::swanctl --list-sas --raw 2> /dev/null::home.*version=2 state=ESTABLISHED local-host=192.168.0.100 local-port=4500 [email protected] remote-host=192.168.0.1 remote-port=4500 remote-id=moon.strongswan.org initiator=yes.*encr-alg=AES_CBC encr-keysize=128 integ-alg=HMAC_SHA2_256_128 prf-alg=PRF_HMAC_SHA2_256 dh-group=CURVE_25519.*child-sas.*home.*state=INSTALLED mode=TUNNEL.*ESP.*encr-alg=AES_GCM_16 encr-keysize=128.*local-ts=\[192.168.0.100/32] remote-ts=\[10.1.0.0/16]::YES
|
||||
moon:: swanctl --list-sas --ike-id 1 --raw 2> /dev/null::rw-eap.*version=2 state=ESTABLISHED local-host=192.168.0.1 local-port=4500 local-id=moon.strongswan.org remote-host=192.168.0.100 remote-port=4500 [email protected] remote-eap-id=228060123456001.*encr-alg=AES_CBC encr-keysize=128 integ-alg=HMAC_SHA2_256_128 prf-alg=PRF_HMAC_SHA2_256 dh-group=CURVE_25519.*child-sas.*net.*reqid=1 state=INSTALLED mode=TUNNEL.*ESP.*encr-alg=AES_GCM_16 encr-keysize=128.*local-ts=\[10.1.0.0/16] remote-ts=\[192.168.0.100/32]::YES
|
||||
moon::tcpdump::IP carol.strongswan.org > moon.strongswan.org: ESP::YES
|
||||
moon::tcpdump::IP moon.strongswan.org > carol.strongswan.org: ESP::YES
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
eap {
|
||||
default_eap_type = sim
|
||||
sim {
|
||||
}
|
||||
}
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
server default {
|
||||
|
||||
listen {
|
||||
type = auth
|
||||
ipaddr = 10.1.0.10
|
||||
port = 0
|
||||
}
|
||||
|
||||
authorize {
|
||||
preprocess
|
||||
files
|
||||
eap {
|
||||
ok = return
|
||||
}
|
||||
expiration
|
||||
logintime
|
||||
}
|
||||
|
||||
authenticate {
|
||||
eap
|
||||
}
|
||||
|
||||
preacct {
|
||||
preprocess
|
||||
acct_unique
|
||||
suffix
|
||||
files
|
||||
}
|
||||
|
||||
accounting {
|
||||
detail
|
||||
unix
|
||||
radutmp
|
||||
exec
|
||||
attr_filter.accounting_response
|
||||
}
|
||||
|
||||
session {
|
||||
radutmp
|
||||
}
|
||||
|
||||
post-auth {
|
||||
exec
|
||||
Post-Auth-Type REJECT {
|
||||
attr_filter.access_reject
|
||||
eap
|
||||
remove_reply_message_if_eap
|
||||
}
|
||||
}
|
||||
|
||||
pre-proxy {
|
||||
}
|
||||
|
||||
post-proxy {
|
||||
eap
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
228060123456001 EAP-Type := SIM, EAP-Sim-RAND1 := 0x30000000000000000000000000000000, EAP-Sim-SRES1 := 0x30112233, EAP-Sim-KC1 := 0x305566778899AABB, EAP-Sim-RAND2 := 0x31000000000000000000000000000000, EAP-Sim-SRES2 := 0x31112233, EAP-Sim-KC2 := 0x315566778899AABB, EAP-Sim-RAND3 := 0x32000000000000000000000000000000, EAP-Sim-SRES3 := 0x32112233, EAP-Sim-KC3 := 0x325566778899AABB
|
||||
@@ -0,0 +1,5 @@
|
||||
eap {
|
||||
default_eap_type = sim
|
||||
sim {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
realm LOCAL {
|
||||
type = radius
|
||||
authhost = LOCAL
|
||||
accthost = LOCAL
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
authorize {
|
||||
files
|
||||
update reply {
|
||||
EAP-Sim-Rand1 := "%{control:EAP-Sim-Rand1}"
|
||||
EAP-Sim-Rand2 := "%{control:EAP-Sim-Rand2}"
|
||||
EAP-Sim-Rand3 := "%{control:EAP-Sim-Rand3}"
|
||||
EAP-Sim-SRES1 := "%{control:EAP-Sim-SRES1}"
|
||||
EAP-Sim-SRES2 := "%{control:EAP-Sim-SRES2}"
|
||||
EAP-Sim-SRES3 := "%{control:EAP-Sim-SRES3}"
|
||||
EAP-Sim-KC1 := "%{control:EAP-Sim-KC1}"
|
||||
EAP-Sim-KC2 := "%{control:EAP-Sim-KC2}"
|
||||
EAP-Sim-KC3 := "%{control:EAP-Sim-KC3}"
|
||||
}
|
||||
eap {
|
||||
ok = return
|
||||
}
|
||||
}
|
||||
|
||||
authenticate {
|
||||
eap
|
||||
}
|
||||
|
||||
preacct {
|
||||
preprocess
|
||||
acct_unique
|
||||
suffix
|
||||
files
|
||||
}
|
||||
|
||||
accounting {
|
||||
detail
|
||||
unix
|
||||
radutmp
|
||||
attr_filter.accounting_response
|
||||
}
|
||||
|
||||
session {
|
||||
radutmp
|
||||
}
|
||||
|
||||
post-auth {
|
||||
exec
|
||||
Post-Auth-Type REJECT {
|
||||
attr_filter.access_reject
|
||||
}
|
||||
}
|
||||
|
||||
pre-proxy {
|
||||
}
|
||||
|
||||
post-proxy {
|
||||
eap
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
228060123456001 EAP-Type := SIM, EAP-Sim-RAND1 := 0x30000000000000000000000000000000, EAP-Sim-SRES1 := 0x30112233, EAP-Sim-KC1 := 0x305566778899AABB, EAP-Sim-RAND2 := 0x31000000000000000000000000000000, EAP-Sim-SRES2 := 0x31112233, EAP-Sim-KC2 := 0x315566778899AABB, EAP-Sim-RAND3 := 0x32000000000000000000000000000000, EAP-Sim-SRES3 := 0x32112233, EAP-Sim-KC3 := 0x325566778899AABB
|
||||
@@ -0,0 +1,3 @@
|
||||
228060123456001,30000000000000000000000000000000,30112233,305566778899AABB
|
||||
228060123456001,31000000000000000000000000000000,31112233,315566778899AABB
|
||||
228060123456001,32000000000000000000000000000000,32112233,325566778899AABB
|
||||
@@ -0,0 +1,9 @@
|
||||
# /etc/strongswan.conf - strongSwan configuration file
|
||||
|
||||
swanctl {
|
||||
load = pem pkcs1 x509 revocation constraints pubkey openssl random
|
||||
}
|
||||
|
||||
charon-systemd {
|
||||
load = random nonce aes sha1 sha2 fips-prf pem pkcs1 curve25519 gmp x509 curl revocation hmac vici kernel-netlink socket-default eap-identity eap-sim eap-sim-file updown
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
connections {
|
||||
|
||||
home {
|
||||
local_addrs = 192.168.0.100
|
||||
remote_addrs = 192.168.0.1
|
||||
|
||||
local {
|
||||
auth = eap
|
||||
id = [email protected]
|
||||
eap_id=228060123456001
|
||||
}
|
||||
remote {
|
||||
auth = pubkey
|
||||
id = moon.strongswan.org
|
||||
}
|
||||
children {
|
||||
home {
|
||||
remote_ts = 10.1.0.0/16
|
||||
|
||||
updown = /usr/local/libexec/ipsec/_updown iptables
|
||||
esp_proposals = aes128gcm128-x25519
|
||||
}
|
||||
}
|
||||
version = 2
|
||||
proposals = aes128-sha256-x25519
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
*filter
|
||||
|
||||
# default policy is DROP
|
||||
-P INPUT DROP
|
||||
-P OUTPUT DROP
|
||||
-P FORWARD DROP
|
||||
|
||||
# allow esp
|
||||
-A INPUT -i eth0 -p 50 -j ACCEPT
|
||||
-A OUTPUT -o eth0 -p 50 -j ACCEPT
|
||||
|
||||
# allow IKE
|
||||
-A INPUT -i eth0 -p udp --sport 500 --dport 500 -j ACCEPT
|
||||
-A OUTPUT -o eth0 -p udp --dport 500 --sport 500 -j ACCEPT
|
||||
|
||||
# allow MobIKE
|
||||
-A INPUT -i eth0 -p udp --sport 4500 --dport 4500 -j ACCEPT
|
||||
-A OUTPUT -o eth0 -p udp --dport 4500 --sport 4500 -j ACCEPT
|
||||
|
||||
# allow ssh
|
||||
-A INPUT -p tcp --dport 22 -j ACCEPT
|
||||
-A OUTPUT -p tcp --sport 22 -j ACCEPT
|
||||
|
||||
# allow crl fetch from winnetou
|
||||
-A INPUT -i eth0 -p tcp --sport 80 -s PH_IP_WINNETOU -j ACCEPT
|
||||
-A OUTPUT -o eth0 -p tcp --dport 80 -d PH_IP_WINNETOU -j ACCEPT
|
||||
|
||||
# allow RADIUS protocol with alice
|
||||
-A INPUT -i eth1 -p udp --sport 1812 -s PH_IP_ALICE -j ACCEPT
|
||||
-A OUTPUT -o eth1 -p udp --dport 1812 -d PH_IP_ALICE -j ACCEPT
|
||||
|
||||
COMMIT
|
||||
@@ -0,0 +1,16 @@
|
||||
# /etc/strongswan.conf - strongSwan configuration file
|
||||
|
||||
swanctl {
|
||||
load = pem pkcs1 x509 revocation constraints pubkey openssl random
|
||||
}
|
||||
|
||||
charon-systemd {
|
||||
load = random nonce aes sha1 sha2 md5 pem pkcs1 curve25519 gmp x509 curl revocation hmac vici kernel-netlink socket-default eap-identity eap-radius updown
|
||||
|
||||
plugins {
|
||||
eap-radius {
|
||||
secret = gv6URkSs
|
||||
server = PH_IP_ALICE
|
||||
}
|
||||
}
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
connections {
|
||||
|
||||
rw-eap {
|
||||
local_addrs = 192.168.0.1
|
||||
|
||||
local {
|
||||
auth = pubkey
|
||||
certs = moonCert.pem
|
||||
id = moon.strongswan.org
|
||||
}
|
||||
remote {
|
||||
auth = eap-radius
|
||||
eap_id = %any
|
||||
}
|
||||
children {
|
||||
net {
|
||||
local_ts = 10.1.0.0/16
|
||||
|
||||
updown = /usr/local/libexec/ipsec/_updown iptables
|
||||
esp_proposals = aes128gcm128-x25519
|
||||
}
|
||||
}
|
||||
version = 2
|
||||
send_certreq = no
|
||||
proposals = aes128-sha256-x25519
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
carol::systemctl stop strongswan-swanctl
|
||||
moon::systemctl stop strongswan-swanctl
|
||||
alice::killall freeradius
|
||||
moon::iptables-restore < /etc/iptables.flush
|
||||
carol::iptables-restore < /etc/iptables.flush
|
||||
@@ -0,0 +1,10 @@
|
||||
moon::iptables-restore < /etc/iptables.rules
|
||||
carol::iptables-restore < /etc/iptables.rules
|
||||
carol::cd /etc/swanctl; rm rsa/* x509/*
|
||||
carol::cat /etc/ipsec.d/triplets.dat
|
||||
alice::freeradius
|
||||
moon::systemctl start strongswan-swanctl
|
||||
carol::systemctl start strongswan-swanctl
|
||||
moon::expect-connection rw-eap
|
||||
carol::expect-connection home
|
||||
carol::swanctl --initiate --child home 2> /dev/null
|
||||
@@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# This configuration file provides information on the
|
||||
# guest instances used for this test
|
||||
|
||||
# All guest instances that are required for this test
|
||||
#
|
||||
VIRTHOSTS="alice carol moon"
|
||||
|
||||
# Corresponding block diagram
|
||||
#
|
||||
DIAGRAM="a-m-c.png"
|
||||
|
||||
# Guest instances on which tcpdump is to be started
|
||||
#
|
||||
TCPDUMPHOSTS="moon"
|
||||
|
||||
# Guest instances on which IPsec is started
|
||||
# Used for IPsec logging purposes
|
||||
#
|
||||
IPSECHOSTS="moon carol"
|
||||
|
||||
# Guest instances on which FreeRadius is started
|
||||
#
|
||||
RADIUSHOSTS="alice"
|
||||
|
||||
# charon controlled by swanctl
|
||||
#
|
||||
SWANCTL=1
|
||||
Reference in New Issue
Block a user