snowman5840
Goto Top

IEEE 802.1X Authentifizierung mit freeRADIUS

Hallo
und zwar ich hab die Aufgabe bei uns fürs kabelgebundene Netz eine IEEE 802.1X Authentifizierung mit freeRADIUS und LDAP Anbindung zu implementieren. Und dazu habe ich paar Fragen.

- Wenn ich Benutzer direkt im freeRADIUS anlege kann ich mich erfolgreich anmelden wenn der Client eine feste IP hat. Aber wenn der Client die IP vom DHCP Server beziehen soll gehts nicht (er bekommt keinen IP und Authentifizieren kann er sich auch nicht). Brauch ich wenn ich mich beim freeRADIUS authentifizieren will zuerst eine zugewiesen IP? Bzw wie kann ich das einstellen damit der Client sich authentifiziert und eine IP vom DHCP zugewiesen bekommt?

- Benötige ich überhaupt Zertifikate wenn ich mit freeRADIUS arbeiten möchte!? Wenn ich die LDAP Userdaten abfragen kann sollte das gnaze doch auch ohne Zertifikate funktionieren, oder habe ich was wichtiges übersehen? Die Zertifikate könnte ich ja anstelle einer LDAP abfrage benutzen?

Ich hoffe ihr könnt mir weiterhelfen.

Gruß

Content-ID: 152499

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

Ausgedruckt am: 26.11.2024 um 09:11 Uhr

dog
dog 06.10.2010 um 20:00:59 Uhr
Goto Top
Brauch ich wenn ich mich beim freeRADIUS authentifizieren will zuerst eine zugewiesen IP?

Nein.
Der Client sendet die Anmeldedaten an den Switch und der an den RADIUS-Server.
Ein Client muss dazu weder eine IP haben noch jemals mit dem RADIUS-Server selbst direkt kommunizieren können.

- Benötige ich überhaupt Zertifikate wenn ich mit freeRADIUS arbeiten möchte!?

Du kannst es bei Computern auch über MAC-IDs machen.
Das ist technisch so effizient wie einen Blinden vor die Disco zu stellen, der jeden fragt "Bist du schon 18?"

Bei Benutzern geht es auch über die einfachen Benutzerdaten gegen LDAP, aber da die jeder kennt macht 802.1x damit absolut keinen Sinn mehr (außer ihr habt in der Lobby jeden LAN-Port angeschlossen).

802.1x in Kabelgebundenen Netzwerken ist ohnehin vergleichbar mit http://stupid.sharp.fm/images/windows-xp-firewall.jpg

Es kümmert sich nur um die Zutrittskontrolle. Danach kann man machen was man will und selbst eine Zutrittskontrolle lässt sich mit 802.1x nicht sicher gestalten.
Snowman5840
Snowman5840 07.10.2010 um 08:27:13 Uhr
Goto Top
ok, muss ich aber dann noch was spezielles einstellen damit der CLient sich zuerst authentifiziert und dann den DHCP Server kontaktiert. Weil bei mir gehts so jetzt nicht.

Warum soll das mit den Bneutzerdaten über LDAP unsichern sein? Dachte der SUer bekommt dann erst Zugriff zum Netz wenn Username und PAsswort übereinstimmen. Das PAsswort kennt aber doch nicht ejder.

Ich dachte mit Zertifikate könnte ich generell die Abfrage von LDAP Daten ersetzen. Sodas jeder nur ein Zertifikat bekommt und somit Zugriff zum Netz bekommt.
Aber ich glaub das mit den Zertifikate und MAC IDs hab ich beim freeRADIUS noch niocht ganz kapiert!???
aqui
aqui 07.10.2010, aktualisiert am 15.05.2023 um 16:34:38 Uhr
Goto Top
Nein, DHCP kommt immer durch. So oder so gibt es nach dem 802.1x Login immer einen neuen DHCP Request. Mit DHCP gibt es deshalb keinerlei Probleme.
Weitere Infos bieten diese Threads:
Freeradius Management mit WebGUI
Fragen zu NAS, Radius und verschiedenen Authentifizierungsmöglichkeiten
Dynamische VLAN-Zuweisung mit FreeRADIUS und Active Directory
usw.
Snowman5840
Snowman5840 07.10.2010 um 18:08:37 Uhr
Goto Top
ok das mit dem DHCP geht jetzt. Keine Ahnung was da nicht gepasst hat.

Jetzt habe ich aber ein anderes Problem. Und zwar wenn ich mich am Rechner (XP) mit einem Domain Account anmelde, möchte ich das er über LDAP die Userdaten abfrägt. Auf dem freeRadius sehe ich aber das er versucht sich mit dem Hostname anzumelden, was natürlich nicht geht. Wenn der Client das lokale Profil geladen hat bekomme ich einen Hinweis das ich mich authorisieren muss. Wenn ich dort dann den Username und PW eingeben vergleicht er es mit den LDAP Daten und gibt mir den Zugriff.

Wieso versucht er sich zuerst mit dem Hostname anzumelden und wo kann ich das den ändern, damit er gleich beim anmelden den Username benutzt der eingetragen wird!?
aqui
aqui 07.10.2010, aktualisiert am 18.10.2012 um 18:43:43 Uhr
Goto Top
Guckst du hier:
VLAN Zuweisung bevor man sich im System anmeldet
Gleiche Baustelle !
Snowman5840
Snowman5840 07.10.2010, aktualisiert am 18.10.2012 um 18:43:44 Uhr
Goto Top
Zitat von @aqui:
Guckst du hier:
VLAN Zuweisung bevor man sich im System anmeldet
Gleiche Baustelle !


jo das ist mir jetzt schon klar. Aber bei mir bekommt der Radius Server nicht den Benutzername sondern den Rechnername. Ist sicher nur eine Einstellungssache , weiß aber nur nicht wo!?

rad_recv: Access-Request packet from host 192.168.0.2 port 1812, id=11, length=141
	NAS-IP-Address = 192.168.0.2
	NAS-Port = 50009
	NAS-Port-Type = Ethernet
	User-Name = "host/lt-aba"  
	Called-Station-Id = "00-15-F9-D8-7C-C9"  
	Calling-Station-Id = "00-1A-4B-63-69-0B"  
	Service-Type = Framed-User
	Framed-MTU = 1500
	EAP-Message = 0x02060014014649524d41315c626c657273636861
	Message-Authenticator = 0xe225ca5a220de3fa522b468227c46acf
+- entering group authorize {...}
++[preprocess] returns ok
++[chap] returns noop
++[mschap] returns noop
[suffix] No '@' in User-Name = "host/lt-aba", looking up realm NULL  
[suffix] No such realm "NULL"  
++[suffix] returns noop
[eap] EAP packet type response id 6 length 20
[eap] No EAP Start, assuming it's an on-going EAP conversation  
++[eap] returns updated
++[unix] returns notfound
++[files] returns noop
[ldap] performing user authorization for host/lt-aba
[ldap] 	expand: %{Stripped-User-Name} -> 
[ldap] 	... expanding second conditional
[ldap] 	expand: %{User-Name} -> host/lt-aba
[ldap] 	expand: (uid=%{%{Stripped-User-Name}:-%{User-Name}}) -> (uid=host/lt-aba)
[ldap] 	expand: dc=firma1,dc=de -> dc=firma1,dc=de
  [ldap] ldap_get_conn: Checking Id: 0
  [ldap] ldap_get_conn: Got Id: 0
  [ldap] performing search in dc=firma1,dc=de, with filter (uid=host/lt-aba)
  [ldap] object not found
[ldap] search failed
aqui
aqui 08.10.2010 um 10:24:49 Uhr
Goto Top
Das ist eine Frage der Konfiguration des 802.1x Clients bzw. des switches der den finalen Radius Request ja losschickt. Vermutlich hast du ihn so eingestellt das er keine User/Passwort Abfrage macht sondern automatisch den Hostnamen schickt. Leider teilst du uns deinen verwendeten Switch ja nicht mit, dann hätten wir für dich mal das Handbuch dazu lesen können !
Mit dem FreeRadius hat das nix zu tun wie du ja am obigen Debug selber sehen kannst. Der Client bzw. der Switch schickt das ja schon so an den Radius.
Snowman5840
Snowman5840 08.10.2010 um 13:00:35 Uhr
Goto Top
Also im Handbuch hab ich nachgeguckt. Wäre mir neu das es für den Switch dafür einen Konfigurationsparameter gibt, lass mich aber gerne eines besseren belehren.

Ist ein Cisco C2950 Switch. Client ist XP SP3

Hier mal meine aktuelle Konfiguration:
aaa new-model
aaa authentication dot1x default group radius
dot1x system-auth-control
interface FastEthernet0/1
 switchport mode access
 dot1x port-control auto 

radius-server host 192.168.0.3 auth-port 1812 acct-port 1813 key test123
aqui
aqui 08.10.2010 um 19:17:26 Uhr
Goto Top
Dann kann es nur der Client selber sein. Normalerweise fragt der Client auch nach Username/Passwort. Er bietet aber auch immer die Authentifizierungs Option umzustellen z.B. Zertifikate usw. usw. Muss ja auch so sein, wenn man diese Optionen nutzen muss.
Also in den .1x Client Eigenschaften nachsehen !
Etwas fehlt auch noch an deiner Konfig:
interface FastEthernet0/1
switchport mode access
authentication port-control auto
dot1x pae-authenticator
dot1x tx-period 5
Snowman5840
Snowman5840 12.10.2010 um 09:06:41 Uhr
Goto Top
Zitat von @aqui:
interface FastEthernet0/1
switchport mode access
authentication port-control auto
dot1x pae-authenticator
dot1x tx-period 5



DIe Prameter sind nur optional. Müssen niocht sein, laut Hndbuch und hat auch am Verhalten nichts geändert.

Wenn ich beim XP Client die Option " Automatisch eigene Windows-Anmeldedaten und Kennwort verwenden" aktiviere, seh ich im Debug utput folgendes:

rad_recv: Access-Request packet from host 192.168.0.2 port 1812, id=62, length=240
	NAS-IP-Address = 192.168.0.2
	NAS-Port = 50009
	NAS-Port-Type = Ethernet
	User-Name = "FIRMA1\\usera"  
	Called-Station-Id = "00-15-F9-D8-7C-C9"  
	Calling-Station-Id = "00-1A-4B-63-69-0B"  
	Service-Type = Framed-User
	Framed-MTU = 1500
	State = 0xc5fe953bc3f98c0b9575e677705364e2
	EAP-Message = 0x0207006119001703010056b327be51594f6985d1854f17199fefe7151d57481c244787051f7067a50a0056a15e0a831a3aa3661a61aeed66e3c7dc85cd3315301bfd825c786fd60e0110f5124e76e2d543c9a6fd99371be7f1a9637b8ce527669f
	Message-Authenticator = 0xad6e1b5107c7af4b9a5ba3e648d65859
+- entering group authorize {...}
++[chap] returns noop
++[mschap] returns noop
++[unix] returns notfound
[suffix] No '@' in User-Name = "FIRMA1\usera", looking up realm NULL  
[suffix] No such realm "NULL"  
++[suffix] returns noop
++[control] returns noop
[eap] EAP packet type response id 7 length 74
[eap] No EAP Start, assuming it's an on-going EAP conversation  
++[eap] returns updated
++[files] returns noop
[ldap] performing user authorization for FIRMA1\usera
[ldap] WARNING: Deprecated conditional expansion ":-".  See "man unlang" for details  
[ldap] 	... expanding second conditional
[ldap] 	expand: %{User-Name} -> FIRMA1\5cusera
[ldap] 	expand: (uid=%{Stripped-User-Name:-%{User-Name}}) -> (uid=FIRMA1\5cusera)
[ldap] 	expand: dc=firma1,dc=de -> dc=firma1,dc=de
  [ldap] ldap_get_conn: Checking Id: 0
  [ldap] ldap_get_conn: Got Id: 0
  [ldap] performing search in dc=firma1,dc=de, with filter (uid=FIRMA1\5cusera)
  [ldap] object not found
[ldap] search failed
  [ldap] ldap_release_conn: Release Id: 0
++[ldap] returns notfound

Jetzt bekommt der Radius zumindest den USername mitgeschickt. ABer ich vermute das er durch die 2 "\\" ein Problem hat. Und dadurch eine entsprechende Suche aufem LDAP Server fehlschlägt. Warum werden vom XP Client 2 Backslash verschickt!? Bzw wie kann ich den Suchfilter aufem Radius anpassen, damit er z.b. einen Backslash einfach ignoriert!?

Hab dazu einfach nix gefunden. Die Doku für den freeRadius ist recht rar in bezug auf LDAP.
Snowman5840
Snowman5840 15.10.2010 um 21:12:17 Uhr
Goto Top
hat da noch jemand eine Idee was ich falsch mache bzw wo das Problem liegt? Habs immer noch nicht hinbekommen.
aqui
aqui 15.10.2010 um 22:05:24 Uhr
Goto Top
Hat dein XP den klassischen onboard Client oder ienen externen wie den Aegis etc. ?? Lönnte sein das es daran liegt.
Hier rennt die gleiche Konstellation mit XP onboard, Cisco, und HP Switch vollkommen problemlos !
Halte dich Schritt für Schritt and dieses Tutorial:
http://security.fi.infn.it/TRIP/802.1x-wired/802.1x-wired.html
Damit sollte es ja auch bei dir klappen !
Snowman5840
Snowman5840 22.10.2010 um 18:40:28 Uhr
Goto Top
Hi

also, das ganze geht zwar immer noch nicht so wie ich das will, aber da muss ich noch etwas an der config drehen.

Das mit dem "\\" hab ich gelöst.

Man muss vom realm modul den ntdomain part nutzen, damit er die \\ in \ umwandelt. Wichtig dabei ist ebenfalls in der proxy.conf einen Bereich für seine Domain anzulegen, da das ganze bei mir sonst nicht geklappt hat.

also z.b. so (proxy.conf):

realm DOMAIN {
type = radius
authhost = LOCAL
accthost = LOCAL
secret = pw
}
aqui
aqui 24.10.2010 um 16:50:13 Uhr
Goto Top
Danke für das Feedback. Ich habe das gerade mal nachgestellt und du hast recht. Wenn man im 802.1x Client den Haken in der erweiterten Eigenschaften setzt das er sich mit dem Anmeldenamen am Radius anmelden soll wird immer der Hostname ala:
rad_recv: Access-Request packet from host 192.168.123.252 port 1645, id=14, length=197
User-Name = "LAPTOP\\willi"
Service-Type = Framed-User
Framed-MTU = 1500
NAS-IP-Address = 192.168.123.252
NAS-Port = 10
Calling-Station-Id = "00-82-6E-81-3F-37"


Da "willi" mit der Einstellung:
"willi" Cleartext-Password := "willi"
in der users Datei steht, schlägt die Authentifizierung dann fehl, genau wie du oben beschreibst face-sad
Nimmt man den Haken raus bekommt man ein PoPup Window zur manuellen Eingabe der .1x Daten und wenn man hier "willi" manuell eingibt rennt alles sauber durch.

390b6ae682b6c4b79698f112c7b3bb1b

Leider gibt die FreeRadius Doku nicht so viel her wie man den Hostpart vom Usernamen "abklemmen" kann bei der automatischen User Authentifizierung.
Also das letztlich bei einer rein statischen Authentisierung über die users Datei ohne Domain vom übertragenen Usernamen LAPTOP\\willi das der vorangehende Hostname "LAPTOP\\" ignoriert wird und nur auf den Usernamen "willi" authentisiert wird.

In /etc/raddb/modules gibt es die "realm" Datei die das mit der NTDOMAIN relam vermutlich realisieren kann.
realm ntdomain {
format = prefix
delimiter = "\\"
}

Die Frage ist nur wie man das aktiviert in der proxy.conf oder der radisud.conf ?!

Es wäre sehr interessant WO du diese Geschichte mit dem NT Domain Part gefunden hat um das einmal nachzulesen.
Hast du da einen URL für die Dou oder ein HowTo ??
Snowman5840
Snowman5840 24.10.2010 um 19:32:14 Uhr
Goto Top
Nein hab da leider kein Link dafür, da wie du selbst sagst die Doku sehr mager ist. Ich werd aber wenn ich fertig bin ein HowTo erstellen und das dann online stellen..

Im Realm Modul kannst du nur die verscheidenen Trennzeichen eingeben bzw ändern. Um das Modul letzendlich auch zu benutzen muss die Datei unter: /etc/freeradius/sites-available/default und innrer-tunnel angepasst werden um den ntdomain delimiter zu laden.
Wichtig dabei ist, das nur ein Trennzeichen akiviert werden kann. Wenn mehrer benutzt werden sollen steht dazu ein Hinweis in dem obne angegebenen Konfig File.

Zusatzlich muss in /etc/freeradius/proxy.conf die Domain angelegt werden.


Soll die mschap Authentifizierung benutzt werden und nicht das "user" File muss zusätzlich im mschap Modul der nt_domain_hack aktiviert werden, da sonst die Authentifizierung wegen einem falsch formatierten Usernamen fehl schlägt.