Gebruik maken van EAP-TLS icm OPNsense

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • MisterE
  • Registratie: April 2002
  • Laatst online: 27-09 18:30
Ik probeer wat te spelen met RADIUS en EAP-TLS. Begrijp dat dit zo'n beetje de veiligste is.
Ik heb een OPNsense box met de RADIUS plugin. Een losse TP-Link Wifi AP. Dit SSID is zonder VLAN. Een PEAP MD5 login lijkt te lukken. (vanuit Linux XFCE)
Echter met TLS kom ik maar niet verder.

Eerst volgt de instellingen om PEAP te bereiken. Daarna de aanpassingen voor TLS.

Veel combinaties getest. Wat niet helpt is dat nm-cli bij het minste of geringste crasht. Logging aan de AP of OPNsense kant is ook minimaal.

192.168.1.1 = OPNsense/RADIUS
192.168.1.2 = AP


Installeer "os-freeradius" plugin.

code:
1
2
3
4
5
Services -> FreeRADIUS -> General
  Enable: true
  Log Authentication Request: true
  Log Authentication Bad Password: true
  Log Authentication Good Password: true

code:
1
2
3
4
Services -> FreeRADIUS -> Users
  Username: <MIJNUSERNAME>
  Password: <MIJNWACHTWOORD>
  Description: <MIJNUSERNAME>

code:
1
2
3
4
Services -> FreeRADIUS -> Clients
  Name: RADIUS_WIFI_AP
  Secret: <MIJN_SECRET>
  IP Address or Network with CIDR: 192.168.1.2/24

code:
1
2
3
4
5
6
7
8
9
TP-Link Access Point
  SSID: <MIJN_SSID>
  Security mode: WPA-Enterprise
  Version: WPA2-Enterprise
  Encryption: AES
  RADIUS Server IP: 192.168.1.1
  RADIUS Port: 1812
  RADIUS Password: <MIJN_SECRET>
  RADIUS Accounting: [[https://docs.opnsense.org/manual/how-tos/accounting.html|Niet gebruiken?]]


Hierna kunnen we connecten met nm-cli vanuit Linux
code:
1
2
3
4
5
6
7
8
9
  Security: WPA & WPA2 Enterprise
  Authentication: Protected EAP (PEAP)
  Anonymous identity: <LEEG>
  Domain: <LEEG>
  No CA certificate required: true
  PEAP version: Automatic
  Inner authentication: MD5
  Username: <MIJNUSERNAME>
  Password: <MIJNWACHTWOORD>


==== EAP over TLS ====


== Aanmaken certificaten ==
code:
1
2
3
4
5
6
7
8
9
10
11
12
System -> Trust -> Authorities
  Descriptive name: RADIUS_CA
  Method: Create an internal Certificate Authority
  Key Type: Elliptic Curve (denk beter dan "RSA")
  Curve: secp521r1 (nog 2 andere keuzes)
  Digest Algorithm: SHA512
  Country Code: NL (Netherlands)
  State or Province: <MIJN_PROVINCE>
  City: <MIJN_CITY>
  Organization: RADIUS
  Email Address: <MIJN_MAIL>
  Common Name: radius-ca

code:
1
2
3
4
5
6
7
8
9
10
11
System -> Trust -> Certificates
  Method: Create an internal Certificate
  Descriptive name: RADIUS Server Certificate
  Certificate authority: RADIUS_CA
  Type: Server Certificate
  Key Type: Elliptic Curve (denk beter dan "RSA")
  Curve: secp521r1
  Digest Algorithm: SHA512
  Lifetime (days): 397
  Private key location: Save on this Firewall
  Common Name: radius-server

code:
1
2
3
4
5
6
7
8
9
10
11
System -> Trust -> Certificates
  Method: Create an internal Certificate
  Descriptive name: RADIUS Client Certificate
  Certificate authority: RADIUS_CA
  Type: Client Certificate
  Key Type: Elliptic Curve (denk beter dan "RSA")
  Curve: secp521r1
  Digest Algorithm: SHA512
  Lifetime (days): 397
  Private key location: Save on this Firewall
  Common Name: radius-client


== Downloaden certificaten ==

code:
1
2
3
4
5
6
7
8
9
Export CA cert "RADIUS_CA.crt"

Export user cert "RADIUS+Server+Certificate.crt"
Export user key "RADIUS+Server+Certificate.key"
Export ca+user cert+user key in .p12 format "RADIUS+Server+Certificate.p12" (gebruik <MIJN_KEY_PASSWORD>)

Export user cert "RADIUS+Client+Certificate.crt"
Export user cert "RADIUS+Client+Certificate.key"
Export ca+user cert+user key in .p12 format "RADIUS+Client+Certificate.p12" (gebruik <MIJN_KEY_PASSWORD>)


== OPNsense instellingen aanpassen ==

code:
1
2
3
4
5
Services -> FreeRADIUS -> EAP
  Default EAP Type: TLS
  Use own certificates: Enabled
  Root Certificate: RADIUS_CA
  Server Certificate: RADIUS Server Certificate

code:
1
2
3
4
5
6
7
8
9
10
Linux Connection screen:
  Security: WPA & WPA2 Enterprise
  Authentication: TLS
  Identity: <MIJNUSERNAME> (required)
  Domain: <LEEG>
  CA certificate: RADIUS_CA.crt
  No CA certificate is required: false
  User certificate: RADIUS+Client+Certificate.p12
  User private key: RADIUS+Client+Certificate.p12
  User key password: <MIJN_KEY_PASSWORD>

Alle reacties


Acties:
  • 0 Henk 'm!

  • Frogmen
  • Registratie: Januari 2004
  • Niet online
Geen ervaring maar gokje, je gebruikt self signed certificates die worden steeds vaker niet geaccepteerd door systemen met problemen tot gevolg probeer letsencrypt te gebruiken.

Voor een Tweaker is de weg naar het resultaat net zo belangrijk als het resultaat.


Acties:
  • 0 Henk 'm!

  • MisterE
  • Registratie: April 2002
  • Laatst online: 27-09 18:30
Even een update. Het probleem lijkt te liggen aan de elliptic curve certificaten.

<code>
(5) eap_tls: (TLS) Handshake state - Server SSLv3/TLS read client certificate
(5) eap_tls: (TLS) recv TLS 1.2 Handshake, ClientKeyExchange
(5) eap_tls: (TLS) Handshake state - Server SSLv3/TLS read client key exchange
(5) eap_tls: (TLS) recv TLS 1.2 Handshake, CertificateVerify
(5) eap_tls: (TLS) send TLS 1.2 Alert, fatal illegal_parameter
(5) eap_tls: ERROR: (TLS) Alert write:fatal:illegal parameter
(5) eap_tls: ERROR: (TLS) Server : Error in error
(5) eap_tls: ERROR: (TLS) Failed reading from OpenSSL: error:1414D17A:SSL routines:tls12_check_peer_sigalg:wrong curve
(5) eap_tls: ERROR: (TLS) System call (I/O) error (-1)
(5) eap_tls: ERROR: (TLS) EAP Receive handshake failed during operation
(5) eap_tls: ERROR: [eaptls process] = fail
(5) eap: ERROR: Failed continuing EAP TLS (13) session. EAP sub-module failed
</code>

Met RSA gaat alles goed. Dezelfde certificaten ook op een Debian Freeradius getest. Daarmee is mijn conclusie dat:
* OPNsense maakt foute certs
* Freeradius geen support voor elliptic curve certs?

Acties:
  • 0 Henk 'm!

  • BlaTieBla
  • Registratie: November 2000
  • Laatst online: 22-09 11:02

BlaTieBla

Vloeken En Raak Schieten

In tegenstelling tot de RSA crypto zijn er voor EC certificaten veel meer opties en mogelijkheden (zie screenshot van XCA).

Afbeeldingslocatie: https://tweakers.net/i/buIAFISK5Xtv6oygc6k_o8hfjbg=/x800/filters:strip_icc():strip_exif()/f/image/leJRORXXF7MufSAjfoHXJY0X.jpg?f=fotoalbum_large

Niet alle curves worden door alle clients ondersteund is mijn ervaring. De prime variant die in de screenshot gehighlite is werkt in ieder geval met de standaard browsers, maar heel veel anderen niet. Ik denk dus dat er een verkeerde curve gekozen is (door de gebruiker of het systeem) waar de client en/of FreeRADIUS niet mee overweg kan.

Als je het niet zeker weet ga dan voor zekerheid en pak RSA 4096. Die werkt over het algemeen altijd wel. Zeker als je zelf niet alle controle hebt over de instellingen e.d. (zoals binnen een omgeving als opnsense).

[ Voor 5% gewijzigd door BlaTieBla op 26-06-2022 10:58 ]

leica - zeiss - fuji - apple | PSN = Sh4m1n0