Hello list,

I 'm trying to set up a VPN Remote Access aka Road Warrior with EAP-TLS similar as the scenario https://www.strongswan.org/testing/testresults/swanctl/rw-eap-tls-radius/.

I want to switch from Cisco ASA to Strongswan.

I use strongswan 5.8.1-1 on Debian Bullseye.

My Freeradius is 3.0.17+dfsg-1.1 on a Debian Buster and is already running a few years as KDC/LDAP/RADIUS etc:
    used for WLAN AAA EAP-TLS, EAP-TTLS/PAP, PEAP-MSCHAPv2
    used as AAA server for Cisco ASA ie authn via PAP
    used as KDC ...

The first setup with strongswan functions perfectly with EAP-TTLS with inner EAP-GTC against the Kerberos KDC.


The setup for EAP-TLS functions only, if I comment out the filter_username in sites-enabled/default, otherwise the passed username from strongswan to the AAA server is rejected.

# freeradius -X
...
} # if (&User-Name =~ / /)  = reject
(0)       } # if (&User-Name)  = reject
(0)     } # policy filter_username = reject
(0)   } # authorize = reject
(0) Invalid user (Rejected: User-Name contains whitespace): [0??1?0 ??U????DE1I0G??U? ?@Ingenieurbuero fuer IT/EDV und Netzwerktechnik - Stefan Hartmann1?0???U????Users1?0???U??? testuser-ldap] (from client BULLSEYE port 5 cli 172.31.201.100[500])


Analyzing with Wireshark shows, that the username is the passed ASN.1-Subject-DN from the certificate:
0000        30 81 81 31 0b 30  09 06 03 55 04 06 13 02   ..0..1.0 ...U....
0010  44 45 31 49 30 47 06 03  55 04 0a 0c 40 49 6e 67   DE1I0G.. U...@Ing
0020  65 6e 69 65 75 72 62 75  65 72 6f 20 66 75 65 72   enieurbu ero fuer
0030  20 49 54 2f 45 44 56 20  75 6e 64 20 4e 65 74 7a    IT/EDV  und Netz
...


# strongswan config
# VPN-Gw swanctl.conf
connections {
    RA-SRV4_IKE2-AUTHN-EAP {
    ...
    local {
        auth = pubkey
        certs = BULLSEYE_SAN-DNS-email.cert.pem
        }       
    remote {
        auth = eap-radius       
id = "C = DE, O = Ingenieurbuero fuer IT/EDV und Netzwerktechnik - Stefan Hartmann, OU = Users, CN = *"
        }
    ...


# Roadwarrior
connections {
    RA-KLIENT4_IKE2-AUTHN-EAP {
    ...
    local {
    auth = eap-tls
    certs = testuser-ldap.cert.pem
aaa_id = "C = DE, O = Ingenieurbuero fuer IT/EDV und Netzwerktechnik - Stefan Hartmann, OU = CA, CN = srv-kdc.hafenthal.de"

    # testing
#id = "C = DE, O = Ingenieurbuero fuer IT/EDV und Netzwerktechnik - Stefan Hartmann, OU = Users, CN = testuser-ldap"
    #id = testuser-lo...@hafenthal.de
        
       }


Can I configure strongswan client or server or eap-radius-plugin, that it passes either the subject-DN in ASCII or the SubjAltName email?

The scenario https://www.strongswan.org/testing/testresults/swanctl/rw-eap-tls-radius/ shows also the ASN.1 raw username, therefore I think, this is intended.

A possible workaround:
write a freeradius policy.d/filter_strongswan unlang function which transforms the username and then do the filter_username check.


Nb. With a fake certificate you can pass arbitrarily hex code to the freeradius daemon, from every user on the inet to the auth-server ie heart of your site! This could be/become a nice attack vector - this on my view as a pentester!


Thanks for your thoughts and replies!

--
stefanh
Ingenieurbuero fuer IT/EDV und Netzwerktechnik - Stefan Hartmann









Reply via email to