testing: Created ikev2/rw-eap-aka-sql-rsa scenario

This test scenario tests the eap-simaka-sql plugin.
This commit is contained in:
Andreas Steffen
2017-04-26 20:38:23 +02:00
parent 2fad3460fa
commit 64f9fa9e9f
15 changed files with 163 additions and 0 deletions
@@ -28,6 +28,7 @@ CONFIG_OPTS = \
--enable-eap-aka-3gpp2 \
--enable-eap-sim \
--enable-eap-sim-file \
--enable-eap-simaka-sql \
--enable-eap-md5 \
--enable-md4 \
--enable-eap-mschapv2 \
@@ -0,0 +1,9 @@
At the outset the gateway authenticates itself to the client by sending an
IKEv2 <b>RSA signature</b> accompanied by a certificate.
The roadwarrior <b>carol</b> sets up a connection to gateway <b>moon</b>.
<b>carol</b> uses the <i>Extensible Authentication Protocol</i>
in association with the <i>Authentication and Key Agreement</i> protocol
(<b>EAP-AKA</b>) to authenticate against the gateway. In this scenario,
quintuplets from the SQL database /etc/ipsec.d/ipsec.db are used instead
of a physical USIM card on the client <b>carol</b>. The USIM provider on
gateway <b>moon</b> also stores the quintuplets in an SQL database.
@@ -0,0 +1,14 @@
carol::cat /var/log/daemon.log::authentication of 'moon.strongswan.org' with RSA.* successful::YES
carol::cat /var/log/daemon.log::server requested EAP_AKA authentication::YES
carol::cat /var/log/daemon.log::authentication of 'moon.strongswan.org' with EAP successful::YES
moon:: cat /var/log/daemon.log::EAP method EAP_AKA succeeded, MSK established
moon:: cat /var/log/daemon.log::authentication of '[email protected]' with EAP successful::YES
moon:: ipsec status 2> /dev/null::rw-eap.*ESTABLISHED.*moon.strongswan.org.*[email protected]::YES
carol::ipsec status 2> /dev/null::home.*ESTABLISHED.*[email protected].*moon.strongswan.org::YES
moon:: ipsec status 2> /dev/null::rw-eap.*INSTALLED, TUNNEL::YES
carol::ipsec status 2> /dev/null::home.*INSTALLED, TUNNEL::YES
carol::ping -c 1 PH_IP_ALICE::64 bytes from PH_IP_ALICE: icmp_.eq=1::YES
moon::tcpdump::IP carol.strongswan.org > moon.strongswan.org: ESP::YES
moon::tcpdump::IP moon.strongswan.org > carol.strongswan.org: ESP::YES
@@ -0,0 +1,21 @@
# /etc/ipsec.conf - strongSwan IPsec configuration file
config setup
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev2
conn home
left=PH_IP_CAROL
[email protected]
leftfirewall=yes
leftauth=eap
right=PH_IP_MOON
[email protected]
rightsubnet=10.1.0.0/16
rightauth=pubkey
auto=add
@@ -0,0 +1,9 @@
INSERT INTO quintuplets
(id, used, rand, autn, ck, ik, res) VALUES
('[email protected]', 0,
X'00112233445566778899AABBCCDDEEFF',
X'112233445566778899AABBCCDDEEFF00',
X'2233445566778899AABBCCDDEEFF0011',
X'33445566778899AABBCCDDEEFF001122',
X'00112233445566778899'
);
@@ -0,0 +1,10 @@
DROP TABLE IF EXISTS quintuplets;
CREATE TABLE quintuplets (
id TEXT NOT NULL,
used INTEGER NOT NULL,
rand BLOB NOT NULL,
autn BLOB NOT NULL,
ck BLOB NOT NULL,
ik BLOB NOT NULL,
res BLOB NOT NULL
);
@@ -0,0 +1 @@
# /etc/ipsec.secrets - strongSwan IPsec secrets file
@@ -0,0 +1,11 @@
# /etc/strongswan.conf - strongSwan configuration file
charon {
load = random nonce aes sha1 sha2 pem pkcs1 curve25519 gmp x509 curl revocation hmac stroke kernel-netlink socket-default sqlite fips-prf eap-aka eap-simaka-sql updown
plugins {
eap-simaka-sql {
database = sqlite:///etc/ipsec.d/ipsec.db
}
}
}
@@ -0,0 +1,23 @@
# /etc/ipsec.conf - strongSwan IPsec configuration file
config setup
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev2
conn rw-eap
left=PH_IP_MOON
leftsubnet=10.1.0.0/16
[email protected]
leftcert=moonCert.pem
leftauth=pubkey
leftfirewall=yes
right=%any
rightid=*@strongswan.org
rightsendcert=never
rightauth=eap-aka
auto=add
@@ -0,0 +1,9 @@
INSERT INTO quintuplets
(id, used, rand, autn, ck, ik, res) VALUES
('[email protected]', 0,
X'00112233445566778899AABBCCDDEEFF',
X'112233445566778899AABBCCDDEEFF00',
X'2233445566778899AABBCCDDEEFF0011',
X'33445566778899AABBCCDDEEFF001122',
X'00112233445566778899'
);
@@ -0,0 +1,10 @@
DROP TABLE IF EXISTS quintuplets;
CREATE TABLE quintuplets (
id TEXT NOT NULL,
used INTEGER NOT NULL,
rand BLOB NOT NULL,
autn BLOB NOT NULL,
ck BLOB NOT NULL,
ik BLOB NOT NULL,
res BLOB NOT NULL
);
@@ -0,0 +1,11 @@
# /etc/strongswan.conf - strongSwan configuration file
charon {
load = random nonce aes sha1 sha2 pem pkcs1 curve25519 gmp x509 curl revocation hmac stroke kernel-netlink socket-default sqlite fips-prf eap-aka eap-simaka-sql updown
plugins {
eap-simaka-sql {
database = sqlite:///etc/ipsec.d/ipsec.db
}
}
}
@@ -0,0 +1,4 @@
moon::ipsec stop
carol::ipsec stop
moon::iptables-restore < /etc/iptables.flush
carol::iptables-restore < /etc/iptables.flush
@@ -0,0 +1,9 @@
moon::iptables-restore < /etc/iptables.rules
carol::iptables-restore < /etc/iptables.rules
carol::cd /etc/ipsec.d; cat tables.sql data.sql > ipsec.sql; cat ipsec.sql | sqlite3 ipsec.db
moon::cd /etc/ipsec.d; cat tables.sql data.sql > ipsec.sql; cat ipsec.sql | sqlite3 ipsec.db
moon::ipsec start
carol::ipsec start
moon::expect-connection rw-eap
carol::expect-connection home
carol::ipsec up home
@@ -0,0 +1,21 @@
#!/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"