chulo01
Goto Top

Fehlende Konfigurationsinformationen zu RADIUS-Servern

Guten Morgen,

ich habe den Auftrag in meiner Firma einen RADIUS-Server aufzustellen um die Sicherheit über WLAN zu erhöhen.
Jetzt war ich schon mehrere Tage damit beschäftigt mir alle möglichen Theorien und Anleitungen durchzulesen.
Dabei habe ich festgestellt, dass der "freeradius" sehr effektiv und variabel einstellbar ist.
Leider habe ich keine Anleitung gefunden, die mir einen ordentlichen Überblick über mein Problemfall gibt.

RADIUS-Server für die Gegenauthentfizierung unserer WLAN-Hotspots mit Anbindung an einen LDAP.
Server: SLES 10.2

Der Server ist installiert. Ich habe mir auch so gut wie alles aufmerksam durchgelesen(ist wirklich viel), aber habe nicht den Zusammenhang aller Teile verstanden.

Wie Authentifizieren sich die Windows-Workstation-User an dem Access-Point:
Brauche ich dafür Zertifikate, geht das über ein Login oder gar beides?

Die Points die ich verwende geben die Möglichkeit "WPA with Radius" zu verwenden. Dementsprechend fehlt aber dann auf dem Point der Eintragungsbereich des Passphrases für den WPA-Key.
Wo kann ich denn den Key im RADIUS-Server eintragen?

Für die LDAP-Einbindung habe ich leider nichts richtiges gefunden. Hat da jemand einen Tipp für mich wie die config ausschauen soll?

Es kommen später sicher noch mehr Fragen auf.

Vielen Dank im Vorraus

Chulo

Content-Key: 109831

Url: https://administrator.de/contentid/109831

Printed on: April 23, 2024 at 15:04 o'clock

Member: dog
dog Feb 24, 2009 at 13:03:05 (UTC)
Goto Top
Wie Authentifizieren sich die Windows-Workstation-User an dem Access-Point:
Brauche ich dafür Zertifikate, geht das über ein Login oder gar beides?

Tja, das ganze ist etwas kompliziert - etwas sehr viel mehr als es hätte sein können ;)
Spaß bei Seite. Wenn du WLAN mit RADIUS benutzen willst geht die Authentifizierung am Access Point über die 802.1X Technik.
Windows kann von Haus aus drei Methoden um sich über diese Technik zu authentifizieren: PEAP mit MSCHAP v2, Smartcard oder Computerzertifikate.

Unabhängig davon erfordert die Verwendung aller drei Methoden aber, dass dein RADIUS-Server ein Zertifikat besitzt, was er an die Clients schickt - diese wiederum müssen entscheiden ob sie die Verbindung mit diesem Zertifikat annehmen oder nicht.

Nun kannst du dich noch zwischen den drei Authentifizierungsmethoden entscheiden, wobei die erste beim Login die Eingabe eines Benutzernamens/Passwort erfordert und die anderen über die gegenseitige Prüfung von Zertifikaten laufen.

Dementsprechend fehlt aber dann auf dem Point der Eintragungsbereich des Passphrases für den WPA-Key.
Wo kann ich denn den Key im RADIUS-Server eintragen?

Wenn du den oberen Absatz genau gelesen hast, ist dir sicher bereits aufgefallen, dass es bei 802.1x keine Passphrases mehr gibt. Die Authentifizierung übernimmt jetzt nicht mehr der AP sondern der RADIUS-Server im HIntergrund. Der AP schaut lediglich zu und entscheidet dann, ob er den Port aufmacht oder nicht.
Und am RADIUS-Server musst du eben eins der drei obigen Authentifikationsschemen auswählen.

Der RADIUS-Server selbst kann die Daten wiederum gegen sein Backend prüfen, was z.B. eine LDAP-Datenbank sein kann. Zu den Details unter Linux kann ich dir aber nichts sagen...

Grüße

Max
Member: Chulo01
Chulo01 Feb 24, 2009 at 14:17:43 (UTC)
Goto Top
Ok. Vielen Dank für die schnelle Antwort!
Das mit dem Passphrase hab ich wohl überlesen und schon überall gesucht, das wäre damit schon gelöst.
Ich probiere die Variante mit dem PEAP MSCHAP v2.

In der Anleitung der freeradius-discription steht folgender link der mir erst gerade eben aufgefallen ist.
Er beinhaltet eine sehr übersichtliche Anleitung für EAP-TLS sowie für PEAP.
dslreports.com
PEAP wird hier unter Punkt 7 aufgeführt. Sind das alle Einstellungen die zu tätigen wären auf dem Radius-Server?
Member: Chulo01
Chulo01 Feb 26, 2009 at 16:40:40 (UTC)
Goto Top
Nun habe ich meine Testumgebung komplett aufgebaut
AP Netgear WG302 eingerichtet
eap.conf konfiguriert (PEAP)
radiusd.conf konfiguriert (kleine Veränderungen)
users zum test an einem user-desktop konfiguriert (user rudimentär angelegt)
clients.conf konfiguriert (AP angelegt)

Problem ist, dass der User/Windows-Workstation keinen Zugriff auf das Netz bekommt.

Bilder der Config auf imageshack.us
Netgear Auszug der Radius-Server-Settings
Netgear Auszug des Security Profils

Auszüge aus der eap.conf (etwas verkürzt kopiert, damit der ganze Info-Text hier nicht alles wegspamt. nur die Aktiven Sachen reinkopiert)

eap {
		default_eap_type = peap
		timer_expire     = 60
	tls {
		private_key_password = bootybay 
		private_key_file = ${raddbdir}/certs/cert-srv.pem
		certificate_file = ${raddbdir}/certs/cert-srv.pem

			#  Trusted Root CA list
		CA_file = ${raddbdir}/certs/demoCA/cacert.pem

		dh_file = ${raddbdir}/certs/dh
		random_file = ${raddbdir}/certs/random
	}
	peap {
	default_eap_type = mschapv2
	}
	mschapv2 {
	}
}

Ich bin mir nicht sicher, ob ich in der eap.conf etwas falsch gemacht habe. Sobald ich versuche mich mit dem Clienten auf dem Point zu verbinden kommt auf dem Point lediglich die Aussage "WLAN0: Station 00:0E:35:D2:27:5F associated."

Hat jemand vielleicht einen Tipp für mich? face-smile
Muss ich generic tokens verwenden?

lg

Chulo
Member: dog
dog Mar 01, 2009 at 00:58:57 (UTC)
Goto Top
Wenn du unter Windows zu einem RADIUS-Netzwerk einfach nur "Verbinden" wählst geht das du 98% daneben.
Damit sich Windows richtig verbinden kann musst du das Netzwerk unter Windows manuell konfigurieren.
Sprich im WLAN-Dialog neues Netzwerk hinzufügen, SSID angeben, (Firmenweites) WPA mit TKIP auswählen.
Dabei musst du im Authentifizierung-Tab EAP oder so auswählen (grade kein Windows Rechner da) - jedenfalls nicht "Smartcard".
Dann klickst du auf Eingschaften. Dort hakst du "Serverzertifikat prüfen" ab.
Dort musst du auch nochmal im Dropdown "Sicheres Kennwort" auswählen und auf Konfigurieren... klicken und dort "Eigene Windows-Anmeldedaten verwenden" deaktivieren.

Erst jetzt kannst du dich mit dem Netz verbinden. Dann wird nach einiger Zeit eine kleine Info-Bubble kommen, die sagt "Es sind weiter Anmeldedaten" erforderlich. Wenn du dort draufklickst wirst du nach deinem Benutzernamen/Kennwort gefragt...

Grüße

Max
Member: Chulo01
Chulo01 Mar 28, 2009 at 15:13:44 (UTC)
Goto Top
Ich musste leider zwangsweise eine Pause einlegen. Danke für die Antwort. Ich hoffe ich habe alles richtig eingestellt. bei mir gibts eine Fehlermeldung, die ich nicht lösen kann. Ich vermute dass die Zertifikate selber dahinter stecken oder ich in der eap.conf etwas falsch eingestellt habe.

	eap {
		default_eap_type = peap 
		timer_expire     = 60
		ignore_unknown_eap_types = no
		cisco_accounting_username_bug = no
		md5 {
		}
		leap {
		}
		gtc {
			#challenge = "Password: " 
			auth_type = PAP
		}
		tls {
			private_key_password = qwertz 
			private_key_file = ${raddbdir}/certs/servercert.pem
			certificate_file = ${raddbdir}/certs/servercert.pem
			CA_file = ${raddbdir}/certs/demoCA/cacert.pem
			dh_file = ${raddbdir}/certs/dh
			random_file = ${raddbdir}/certs/random
			fragment_size = 1024
			include_length = yes
		#	check_crl = yes
		#       check_cert_issuer = "/C=GB/ST=Berkshire/L=Newbury/O=My Company Ltd" 
		#	check_cert_cn = %{User-Name}
		#	cipher_list = "DEFAULT" 
		}
		#ttls {
		#	default_eap_type = md5
		#	copy_request_to_tunnel = no
		#	use_tunneled_reply = no
		#}
		peap {
			default_eap_type = mschapv2
		#	copy_request_to_tunnel = no
		#	use_tunneled_reply = no
	    	#	proxy_tunneled_request_as_eap = yes
		}
		mschapv2 {
		}
	}

seit dem ich von md5 auf peap umgestellt habe trtitt bei mir folgender Fehler beim ausführen des debug-test modes -X auf:

rlm_eap_tls: Loading the certificate file as a chain
rlm_eap: SSL error error:02001002:system library:fopen:No such file or directory
rlm_eap_tls: Error reading Trusted root CA list
rlm_eap: Failed to initialize type tls
radiusd.conf[1]: eap: Module instantiation failed.
radiusd.conf[1939] Unknown module "eap".  
radiusd.conf[1886] Failed to parse authenticate section.

Im Netz finden sich verschiedene Antworten, die sich aber so gut wie alle ausschließen lassen.

lg

Steph
Member: dog
dog Mar 28, 2009 at 16:14:45 (UTC)
Goto Top
rlm_eap: SSL error error:02001002:system library:fopen:No such file or directory

Das kann zweierlei bedeuten:

a) Eine deiner angegebenen Dateien wurde nicht gefunden

b) Eines der Systemlibraries gegen das FreeRADIUS dynamisch gelinkt wurde, wurde nicht gefunden.
Dieses Problem ist besonders diffizil, weil man es u.U. nicht direkt sieht. Ich hatte z.B. mit OpenSSL schon häufiger das Problem, dass es direkt nach dem build problemlos ging, aber als danach einige Umgebungsvariablen gefehlt haben ging es plötzlich nicht mehr.

Wie hast du freeradius installiert? Von Hand oder per Paketmanager?
Wie startest du freeradius? Aus deiner Sitzung herraus oder beim Systemstart?

Grüße

Max
Member: Chulo01
Chulo01 Mar 28, 2009 at 17:54:11 (UTC)
Goto Top
Ich habe den Radiusserver über den Paketmanager installiert. (in vielen Anleitungen wird es mit make, make install usw gemacht)
Den Radiusserver starte ich über die Sitzung heraus.

Ohje, wie hast du es gelöst?
Ich hab nochmal im Paketmanager nachgeschlagen ob es weitere Libraries gibt, die ich installieren kann, aber da ist nichts vorhanden. Lediglich der Radiusserver und noch ein Client(den ich nicht brauche).

lg

Steph
Member: Chulo01
Chulo01 Apr 14, 2009 at 14:17:59 (UTC)
Goto Top
Ok.
Ich habe den Server nochmal neu aufgesetzt, nachdem ich ein paar Flüchtigkeitsfehler eingebaut hatte..
Die Zertifizierung ging ich nochmal an und funktioniert jetzt ordentlich, wie sie sollte.
Ich erhalte beim Connecten über einen Client noch ein paar nette Logs.

Wenn ich das richtig interpretiere funktioniert es. " rlm_eap_peap: EAPTLS_HANDLED "
Der Client ist dennoch nicht verbunden.

Wie man hieran sieht: " Sending Access-Challenge of id 49 to 192.168.62.49 port 1046 ", sendet der Server den Access über den Port 1046.
Hat das seine Richtigkeit? Ich dachte es läuft alles über 1812 / 1813?

Waking up in 1 seconds...
rad_recv: Access-Request packet from host 192.168.62.49:1046, id=49, length=160
        User-Name = "radiustest\\seufert"  
        NAS-IP-Address = 192.168.62.49
        Connect-Info = "CONNECT 802.11"  
        Called-Station-Id = "00095bb73678"  
        Calling-Station-Id = "00166f3c5cea"  
        NAS-Identifier = "ap"  
        NAS-Port-Type = Wireless-802.11
        NAS-Port = 14
        NAS-Port-Id = "14"  
        Framed-MTU = 1400
        State = 0xcd322051f084077dcc092e9f35be1fab
        EAP-Message = 0x020400061900
        Message-Authenticator = 0x0fca32d4d7ace2726d6ce248b355f8cf
  Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 12
  modcall[authorize]: module "preprocess" returns ok for request 12  
  modcall[authorize]: module "chap" returns noop for request 12  
  modcall[authorize]: module "mschap" returns noop for request 12  
    rlm_realm: No '@' in User-Name = "radiustest\seufert", looking up realm NULL  
    rlm_realm: No such realm "NULL"  
  modcall[authorize]: module "suffix" returns noop for request 12  
  rlm_eap: EAP packet type response id 4 length 6
  rlm_eap: No EAP Start, assuming it's an on-going EAP conversation  
  modcall[authorize]: module "eap" returns updated for request 12  
  modcall[authorize]: module "files" returns notfound for request 12  
modcall: leaving group authorize (returns updated) for request 12
  rad_check_password:  Found Auth-Type EAP
auth: type "EAP"  
  Processing the authenticate section of radiusd.conf
modcall: entering group authenticate for request 12
  rlm_eap: Request found, released from the list
  rlm_eap: EAP/peap
  rlm_eap: processing type peap
  rlm_eap_peap: Authenticate
  rlm_eap_tls: processing TLS
rlm_eap_tls: Received EAP-TLS ACK message
  rlm_eap_tls: ack handshake fragment handler
  eaptls_verify returned 1
  eaptls_process returned 13
  rlm_eap_peap: EAPTLS_HANDLED
  modcall[authenticate]: module "eap" returns handled for request 12  
modcall: leaving group authenticate (returns handled) for request 12
Sending Access-Challenge of id 49 to 192.168.62.49 port 1046
        EAP-Message = 0x010502f71900170d3036303132343133323630375a30819f310b30090603550406130243413111300f0603550408130850726f76696e63653112301006035504071309536f6d65204369747931153013060355040a130c4f7267616e697a6174696f6e31123010060355040b13096c6f63616c686f7374311b301906035504031312436c69656e742063657274696669636174653121301f06092a864886f70d0109011612636c69656e74406578616d706c652e636f6d30819f300d06092a864886f70d010101050003818d0030818902818100d4c5b19724f164acf1ffb189db1c8fbff4f14396ea7cb1e90f78d69451725377895dfe52ccb99b41e8
        EAP-Message = 0x0ddeb58b127a943f4f58cbc562878192fbdc6fece9f871e7c130d35cf5188817e9b133249edd2a1c75d31043ae87553cec7a77ef26aa7d74281db9b77e17c6446c5dd9b188b43250ca0229963722a123a726b00b4027fd0203010001a381ff3081fc301d0603551d0e0416041468d36d3e1ee7bc9d5a057021c363da1365d1ade33081cc0603551d230481c43081c1801468d36d3e1ee7bc9d5a057021c363da1365d1ade3a181a5a481a230819f310b30090603550406130243413111300f0603550408130850726f76696e63653112301006035504071309536f6d65204369747931153013060355040a130c4f7267616e697a6174696f6e31123010
        EAP-Message = 0x060355040b13096c6f63616c686f7374311b301906035504031312436c69656e742063657274696669636174653121301f06092a864886f70d0109011612636c69656e74406578616d706c652e636f6d820100300c0603551d13040530030101ff300d06092a864886f70d01010405000381810033c00b66b1e579ef73a06798252dab8d5e5511fc00fd276d80d12f834777c6743fdc2743fca1507704e4bc0979e4f60ac3ad9ee83e6f347369229d1f77229ba2e982359da563024a00163dba6d6c986c0bad28af85132ff8f0d76501bf1b7c2dff658ce1e62c01997b6e64e3e8d4373354ce9912847651539063b85bbc5485c516030100040e000000
        Message-Authenticator = 0x00000000000000000000000000000000
        State = 0x26505ca4b61ff6e84a35e8a1f22237cf
Finished request 12

lg

Steph
Member: dog
dog Apr 14, 2009 at 20:07:01 (UTC)
Goto Top
1046 ist lediglich der Anfrageport des Clients (du brauchst immer zwei Ports: Den von dem die Anfrage kommt und den auf den sie geht). Dieser Port ist komplett zufällig und hat nichts weiter zu bedeuten.

Dein Problem könnte hier:

rlm_realm: No '@' in User-Name = "radiustest\seufert", looking up realm NULL
rlm_realm: No such realm "NULL"

oder hier

eaptls_verify returned 1
eaptls_process returned 13

liegen.
Mehr kann ich dir dazu aber auch nicht sagen, weil ich mit mit freeRadius eben nicht auskenne.

Vielleicht hilft dir aber:

I set "nastype = other" in the clients.conf file as per an example I saw from someone using the same WAP, and it started working after restarting Radius.

Grüße

Max
Member: Chulo01
Chulo01 Apr 16, 2009 at 09:03:00 (UTC)
Goto Top
Ok. Vielen Dank für die guten Informationen, Mühe und Tipps Max aka Dog.

Das Problem war wie du beschrieben hast das was da steht. Die perfekte Lösung gabs auch gleich noch dazu. Einfach Klasse.
Nachdem ich noch einige weitere kleine Konfigurationsprobleme gelöst hatte, geht der Server jetzt.
Windows-User können sich nun mit Eingabe Ihrer Daten anmelden.
Somit habe ich jetzt meinen ersten Radiusserver aufgesetzt.

Ich binde das ganze noch an den LDAP an und hoffe es klappt auch dann noch. face-smile

lg

Steph