Sichere WLAN-Verbindung mit FreeRADIUS, MySQL, EAP-PEAP, TLS

2439
Eastman

Ich versuche, ein drahtloses Netzwerk wie in der Abbildung gezeigt einzurichten, und ich habe Schwierigkeiten, es zu sichern.

Bild des WLAN-Netzwerks:

enter image description here

Meine grundlegende Frage ist: Wie kann ich Kennwörter sicher in der MySQL-Datenbank speichern, damit FreeRADIUS sie lesen kann?

Hier ist eine längere Version, die ich erreichen möchte:

  1. Der Benutzer stellt eine Verbindung zum drahtlosen Netzwerk her
  2. Der Benutzer wird aufgefordert, einen Benutzernamen und ein Kennwort einzugeben
  3. Mit den richtigen Anmeldeinformationen sendet der RADIUS-Server ein Zertifikat und eine TLS-Verbindung kann hergestellt werden.

Ich habe das Setup mit Cleartext-Passwörtern arbeiten lassen, aber natürlich möchte ich die Passwörter mit einer Art Hash sichern. Nun werden die Passwörter auch in der Datenbank als Klartext gespeichert. Aus dieser Kompatibilitätstabelle habe ich verstanden, dass ich, wenn ich PEAP mit MSCHAPv2 verwende, NT-Hash-Kennwörter verwenden muss. http://deployingradius.com/documents/protocols/compatibility.html

Wenn ich einen Benutzer mit daloRADIUS hinzufüge, gibt es nur Optionen für Cleartext-, Benutzer-, Crypt-, MD5-, SHA1- und CHAP-Passwort. Es gibt keine Option für das NT-Hash-Passwort. Ich denke, das bedeutet, dass ich DaloRADIUS nicht als Web-GUI verwenden kann. Ich habe gedacht, dass ich einfach ein Shell-Skript erstellen werde, das Benutzer leicht in die Datenbank aufnehmen und entfernen kann.

In FreeRADIUS habe ich konfiguriert /etc/freeradius/mods-available/eap

eap { default_eap_type = peap peap { default_eap_type = mschapv2 

Wenn ich es richtig verstanden habe, verwende ich jetzt EAP-PEAP mit MSCHAPv2 und TLS. Ich weiß, ich verwende TLS, weil der Freeradius- -XDebugging-Modus beim ersten Anmeldeversuch zum drahtlosen Netzwerk den folgenden Fehler angibt . Nach dem Versuch von TLS wird der Benutzer nach Benutzername und Kennwort gefragt.

(28) eap_peap: <<< TLS 1.2 [length 0002] (28) eap_peap: ERROR: TLS Alert read:fatal:unknown CA  (28) eap_peap: ERROR: TLS_accept: Failed in SSLv3 read client certificate A (28) eap_peap: ERROR: SSL says: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca (28) eap_peap: ERROR: SSL_read failed inside of TLS (-1), TLS session failed (28) eap_peap: ERROR: TLS receive handshake failed during operation (28) eap_peap: ERROR: [eaptls process] = fail (28) eap: ERROR: Failed continuing EAP PEAP (25) session. EAP sub-module failed (28) eap: Sending EAP Failure (code 4) ID 162 length 4 (28) eap: Failed in EAP select 

Mit Cleartext-Password funktioniert die Authentifizierung, aber wenn ich versuche, ein Hash-Passwort einzugeben, schlägt die Authentifizierung fehl (siehe unten).

(36) Found Auth-Type = EAP (36) # Executing group from file /etc/freeradius/sites-enabled/inner-tunnel (36) authenticate { (36) eap: Expiring EAP session with state 0x024362c402167826 (36) eap: Finished EAP session with state 0x024362c402167826 (36) eap: Previous EAP request found for state 0x024362c402167826, released from the list (36) eap: Peer sent packet with method EAP MSCHAPv2 (26) (36) eap: Calling submodule eap_mschapv2 to process data (36) eap_mschapv2: # Executing group from file /etc/freeradius/sites-enabled/inner-tunnel (36) eap_mschapv2: Auth-Type MS-CHAP { (36) mschap: WARNING: No Cleartext-Password configured. Cannot create NT-Password (36) mschap: WARNING: No Cleartext-Password configured. Cannot create LM-Password (36) mschap: Creating challenge hash with username: joujou (36) mschap: Client is using MS-CHAPv2 (36) mschap: ERROR: FAILED: No NT/LM-Password. Cannot perform authentication (36) mschap: ERROR: MS-CHAP2-Response is incorrect (36) [mschap] = reject (36) } # Auth-Type MS-CHAP = reject (36) eap: Sending EAP Failure (code 4) ID 85 length 4 

Könnten Sie mir helfen, welche Möglichkeiten ich habe, um die Passwörter zu haschen?

Hier ist die Software und Hardware, die ich verwende:

  • Hauptsächlich Windows 10 Laptops
  • TP-Link Archer C7 v2 Wireless Access Points mit OpenWRT Chaos Calmer 15.05 / Luci (git-15.248.30277-3836b45)
  • 2 virtuelle ESXi-Maschinen: Auf einer wird PfSense 2.2.6 und auf der anderen Ubuntu Server 14.04 ausgeführt.
  • Auf Ubuntu Server habe ich FreeRADIUS 3.0.10 mit MySQL und DaloRADIUS 0.9-9 installiert.
1
Für MSCHAPv2 haben Sie genau wie in der Tabelle genau zwei Optionen: Unhashed oder NT-Hash. grawity vor 8 Jahren 0
Gibt es eine Möglichkeit, Passwörter sicherer als nur NT-Hash (auch bekannt als NTLM) in der Datenbank zu speichern? Es spielt keine Rolle, ob die Passwörter eindeutig sind oder NT-Hashes ausgeführt werden, da das Knacken von NT-Hashes so einfach ist. Wenn der Benutzer eine Verbindung zum WLAN herstellt, werden die Passwörter für die Authentifizierung in NT-Hash konvertiert. Wenn also jemand das Passwort während der Authentifizierung ausspioniert, erhält er nur ein Passwort. Eastman vor 8 Jahren 0
Wie genau würden Sie einen Hash in einen anderen "konvertieren"? grawity vor 8 Jahren 0
Ich dachte, dass der NT-Hash vielleicht mit einer anderen kryptographischen Hashmethode gehasht und gesalzen werden könnte, und dieser neue Hash würde in der Datenbank gespeichert werden. Natürlich müsste eine Software das extra gehashte Passwort lesen, aber dafür gibt es keine Software. Randbemerkung: Ich habe die NT-Hash-Passwörter mit meinem Setup erhalten, indem ich sie manuell zur Datenbank hinzufügte. daloRADIUS unterstützt kein NT-Hash (oder NT-Passwort, wie es in FreeRADIUS genannt wird), so dass ich es einfach aus meinem Setup verwende. Eastman vor 8 Jahren 0
Und ähm, wenn Sie den NT-Hash für MS-CHAPv2 benötigen, wie wollen Sie ihn aus dem "neuen" Hash extrahieren? grawity vor 8 Jahren 0
Das ist es, was ich frage, ob es dafür eine Methode gibt. Ich denke, dass das Speichern der Passwörter als NT-Hash (alias NTLM-Hash aka NT-Password) in der Datenbank ein großer Sicherheitsmangel ist. Aber vielleicht muss ich einfach damit leben und prüfen, ob die Benutzer nicht dasselbe Kennwort für WLAN und kritischere Systeme verwenden. Eastman vor 8 Jahren 0
Wenn Sie MS-CHAPv2 verwenden, ist dies nicht der Fall. Ihre einzige andere Möglichkeit ist, PAP über EAP-TTLS anzufordern. grawity vor 8 Jahren 0

0 Antworten auf die Frage