tobiasd
Goto Top

FreeRadius Dynamic Vlan mit zertifikatsbasierter Authentifizierung

Hallo an all die klugen Köpfe da draußen,

für den Einsatz in unserem Unternehmen wurde ich beauftragt, alle unsere Workstations in unserm kabelgebundenen Netzwerk per 802.1x zu authentifizieren. Dies sollte über Zertifikate geschehen. Nun wäre es schön, wenn die Clients durch den RadiusServer gleich dem richtigen Vlan zugeordnet werden könnten. Laut meinen Rechcherchen wird dies von den verwendeten Extreme Summit x450e Switchen unterstützt.

Was bisher läuft:
- Freeradius v2.1.12 auf Debian
- RadiusClient: Extreme Summit x450e

Es wurden Zertifikate generiert und auf Testclients verteilt. Sobald ein Client versucht, sich mit dem Netzwerk zu verbinden, überprüft der Switch das Clientzertifikat am Freeradius und öffnet im Erfolgsfall den Port. Das Ganze habe ich im Debugmodus (freeradius -X -f) und NTRadPing erfrolgreich getestet.

Da die Authentifizierung über Zertifikate läuft, habe ich in der "users"-Datei noch keine Änderungen vorgenommen.
In der clients.conf habe ich den Switch eingertragen:

client 192.168.1.2/32 {
secret = radiustest123
shortname = ExtrSw
nastype = other
}


Nun meine Schwierigkeiten:
{GELÖST}
Ich habe mich hier im Forum bereits umgesehen und (so glaube ich) die entsprechende Konfiguration gefunden um ein gewünschtes VLAN durch den Freeradius propagieren zu lassen. Die folgenden Zeilen habe ich an das Ende meiner (bis Dato) unveränderten users gesetzt:

DEFAULT
Tunnel-Type = 13,
Tunnel-Medium-Type = 6,
Tunnel-Private-Group-Id = 7

Sobald ich nun den Server mit "freeradius -X -f" im Debuggin-Mode starten möchte, erhalte ich folgenden Fehler:

/etc/freeradius/users[207]: Parse error (check) for entry Tunnel-Type: Unknown attribute "" requires a hex string, not "13"
Errors reading /etc/freeradius/users

Wenn ich nun diese zeile auskommentiere um schonmal das nächste Attribut zu prüfen, erhalte ich eine äquivalente Fehlermeldung. Offensichtlich ist FreeRadius mit keinem dieser Attribute zufrieden?

Ich habe es auch schon mit Strings versucht:

Tunnel-Medium-Type = IEEE-802,
Tunnel-Type = VLAN,
Tunnel-Private-Group-Id = "7"

Auch dies wird nicht akzeptiert.


{NICHT-GELÖST}
Das Problem, das dannach ansteht wäre:
Lässt sich diese Information über das zu verwendende VLAN mit dem Zertifikat verbinden, so dass nicht jeder Nutzer, für den bereits ein Zertifikat erstellt worden ist, auch noch in die User-Datei oder eine SQL Datenbank einzutragen ist, wobei dort für Ihn das VLAN definiert wird?

Content-Key: 188794

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

Printed on: April 19, 2024 at 01:04 o'clock

Member: catachan
catachan Jul 30, 2012 updated at 09:26:09 (UTC)
Goto Top
Hi

/etc/freeradius/users[207]: Parse error (check) for entry Tunnel-Type: Unknown attribute "" requires a hex string, not "13"

Was passiert wenn du statt 13 D schreibst ?

LG
Member: TobiasD
TobiasD Jul 30, 2012 at 09:43:28 (UTC)
Goto Top
Zitat von @catachan:
> /etc/freeradius/users[207]: Parse error (check) for entry Tunnel-Type: Unknown attribute "" requires a hex string,
not "13"
Was passiert wenn du statt 13 D schreibst ?


Hallo Catachan,

ich habe die users wie folgt editiert:

DEFAULT
Tunnel-Type = D,
Tunnel-Medium-Type = 6,
Tunnel-Private-Group-Id = 3

Das Ergebnis ist unverändert:
/etc/freeradius/users[207]: Parse error (check) for entry Tunnel-Type: Unknown attribute "" requires a hex string, not "D"
Errors reading /etc/freeradius/users

Auch das Setzen von Attributsname und/oder Wert in "", wie ich es in anderen Beiträgen beobachtet habe, schafft hier keine Veränderung. Auch Werte wie "1" oder "0x01" werden zurückgewiesen.

Bei letzterem (0x01) erhalte ich eine etwas andere Fehlermeldung:
/etc/freeradius/users[207]: Parse error (check) for entry Tunnel-Type: Invalid vendor name in attribute name ""
Errors reading /etc/freeradius/users

Über deren Bedeutung bin ich mir allerdings noch nicht im klaren.

LG
Member: TobiasD
TobiasD Jul 30, 2012 at 10:16:39 (UTC)
Goto Top
Ok.. Das Problem mit dem nicht akzeptierten Attribut habe ich wohl soeben selbst gelöst. Scheinbar mein Fehler. Es lag daran, dass die Attribute nicht mit TAB eingerückt waren.

Der Eintrag in der Users sieht nun wie folgt aus:

DEFAULT
Tunnel-Type = 13,
Tunnel-Medium-Type = 6,
Tunnel-Private-Group-Id = 3


Dies funktioniert in ersten Tests mit NTRadPing und die VLANid 3 wird wie gewünscht übertragen. Nun muss ich noch testen ob dies wie gewünscht vom Switch bearbeitet wird.

Meine nächste Frage wäre nun:
Wie kann ich diese Definition eines gewünschten VLANs an ein Zertifikat binden? Geht dies OHNE alle User, für die ein Zertifikat erstellt wurde, in die users-datei oder eine SQL Datenbank aufzunehmen?
Member: aqui
aqui Jul 30, 2012, updated at May 15, 2023 at 14:28:30 (UTC)
Goto Top
Das entsprechende Tutorial dazu hier im Forum zu dem Thema:
Freeradius Management mit WebGUI
Netzwerk Zugangskontrolle mit 802.1x und FreeRadius am LAN Switch
hast du gelesen ??
Member: TobiasD
TobiasD Jul 31, 2012 at 12:18:05 (UTC)
Goto Top
Danke, das habe ich mittlerweile durchgearbeitet.

Ich habe Freeradius nun mit MySQL-Anbindung konfiguriert und die folgenden Tabellen angelegt.

mysql> select * from radcheck;
+----+-----------------+--------------------+----+-----------+
| id | username | attribute | op | value |
+----+-----------------+--------------------+----+-----------+
| 1 | workstation1 | Cleartext-Password | := | testpass1 |
| 2 | workstation2 | Cleartext-Password | := | testpass2 |
+----+-----------------+--------------------+----+-----------+
2 rows in set (0.00 sec)

mysql> select * from radusergroup;
+---------------+-------------+----------+
| username | groupname | priority |
+---------------+-------------+----------+
| workstation1 | projekt1 | 1 |
| workstation2 | projekt2 | 1 |
+---------------+-------------+----------+
2 rows in set (0.00 sec)

mysql> select * from radgroupreply;
+----+-------------+-------------------------+----+-------+
| id | groupname | attribute | op | value |
+----+-------------+-------------------------+----+-------+
| 1 | projekt1 | Tunnel-Type | = | 13 |
| 2 | projekt1 | Tunnel-Medium-Type | = | 6 |
| 3 | projekt1 | Tunnel-Private-Group-Id | = | 3 |
| 4 | projekt2 | Tunnel-Type | = | 13 |
| 5 | projekt2 | Tunnel-Medium-Type | = | 6 |
| 6 | projekt2 | Tunnel-Private-Group-Id | = | 4 |
+----+-------------+-------------------------+----+-------+
6 rows in set (0.00 sec)


Wenn ich mit NTRadPing die Benutzerdaten "workstation1/testpass1" verwende, wird der Zugriff gewährt und die VLan ID 3 übermittelt. Soweit alles in Ordnung.

Um mein nächstes Anliegen verständlich rüberzubringen, hier nochmals eine kurze Info zur Organisation:
-Es gibt viele Projekte.
-Jedes Projekt hat einen eigenen Subnetzbereich und damit verbunden, ein eigenes VLAN.
-Jedes Projekt besitzt Workstations. Diese Workstations sollen immer die gleiche VLAN ID erhalten. Egal wer daran angemeldet ist und egal an welchen Switchport sie angeschlossen werden.
-Die Workstations verwenden MS XP SP3 und sind in einer Domäne.
-Die Workstations sollen sich mit einem Zertifikat authentifizieren, dass auf die jeweilige Workstation ausgestellt ist. Nicht auf Benutzer. Denn diese spielen für die VLAN-Zuweisung keine Rolle.

Mein Problem ist nun, dass sich meine Test-Workstation immer mit Domäne/Benutzername authentifizieren möchte. Wünschenswert wäre hier der Computername (=WorkstationX), oder der Name des Benutzers auf den das Clientzertifikat ausgestellt wurde (=WorkstationX).

Ich grübel nun schon eine ganze Weile darüber und hab das gesamte Tutorial schon mehrfach gelesen ohne eine Lösung gefunden zu haben.

LG
Member: TobiasD
TobiasD Aug 01, 2012 at 11:06:11 (UTC)
Goto Top
Auch nach einem weiteren Tag, an dem ich das Tutorial und alle möglichen Beträge zum FreeRadius studiert habe, hänge ich immer noch bei der Authentifizierung mit dem Zertifikat fest face-sad

Nachdem ich alle hier (Netzwerk Zugangskontrolle mit 802.1x und FreeRadius am LAN Switch) beschrieben Konfigurationseinstellungen bis ins kleinste Detail befolgt habe, weigert sich der Radiusserver nach wie vor, die EAP Authentifizierung zu akzeptieren. Einzig das Serverzertifikat lasse ich aufgrund der Schwierigkeiten zunächst nicht auch noch überprüfen.

Hier scheint er in der SQL-Tabelle den User erst zu finden, nachdem ich den User "P2510=5Cwsvisu" hinzugefügt habe. Vorher hat er den user nicht gefunden. Warum er dies so seltsam formatiert ist mir schleierhaft. Weiterhin verstehe ich die Aussage des Warnings "WARNING: Auth-Type already set. Not setting to PAP" nicht?
[ntdomain] Looking up realm "P2510" for User-Name = "P2510\wsvisu"  
[ntdomain] No such realm "P2510"  
++[ntdomain] returns noop
[eap] EAP packet type response id 116 length 17
[eap] No EAP Start, assuming it's an on-going EAP conversation  
++[eap] returns updated
[sql]   expand: %{User-Name} -> P2510\wsvisu
[sql] sql_set_user escaped user --> 'P2510\wsvisu'  
rlm_sql (sql): Reserving sql socket id: 4
[sql]   expand: SELECT id, username, attribute, value, op           FROM radcheck           WHERE username = '%{SQL-User-Name}'           ORDER BY id -> SELECT id, username, attribute, value, op           FROM radcheck           WHERE username = 'P2510=5Cwsvisu'           ORDER BY id  
[sql] User found in radcheck table
[sql]   expand: SELECT id, username, attribute, value, op           FROM radreply           WHERE username = '%{SQL-User-Name}'           ORDER BY id -> SELECT id, username, attribute, value, op           FROM radreply           WHERE username = 'P2510=5Cwsvisu'           ORDER BY id  
[sql]   expand: SELECT groupname           FROM radusergroup           WHERE username = '%{SQL-User-Name}'           ORDER BY priority -> SELECT groupname           FROM radusergroup           WHERE username = 'P2510=5Cwsvisu'           ORDER BY priority  
rlm_sql (sql): Released sql socket id: 4
++[sql] returns ok
++[expiration] returns noop
++[logintime] returns noop
[pap] WARNING: Auth-Type already set.  Not setting to PAP
++[pap] returns noop
Found Auth-Type = EAP

Die User-Tabelle sieht wie folgt aus. Hier habe ich den Benutzernamen anfänglich in vielen Varianten eingetragen. In den zuerst gemachten Einträgen "wsvisu" und "P2510\wsvisu" erkannte FreeRadius keine Übereinstimmung mit dem User. Erst seit ich "P2510=5Cwsvisu" hinzugefügt habe, findet er den Benutzer auch. "certpass" ist das im Clientzertifikat hinterlegte input- und outputpasswort.
mysql> select * from radcheck;
+----+-----------------+--------------------+----+----------+
| id | username        | attribute          | op | value    |
+----+-----------------+--------------------+----+----------+
|  1 | P2510wsvisu     | Auth-Type          | := | EAP      |
|  2 | P2510           | Auth-Type          | := | EAP      |
|  3 | wsvisu          | Auth-Type          | := | EAP      |
|  4 | P2510\wsvisu    | Auth-Type          | := | EAP      |
|  5 | Testworkstaion1 | Auth-Type          | := | EAP      |
|  6 | P2510           | Cleartext-Password | := | certpass |
|  7 | wsvisu          | Cleartext-Password | := | certpass |
|  8 | P2510wsvisu     | Cleartext-Password | := | certpass |
|  9 | P2510wsvisu     | Cleartext-Password | := | certpass |
| 10 | Testworkstaion1 | Cleartext-Password | := | certpass |
| 11 | P2510=5Cwsvisu  | Auth-Type          | := | EAP      |
| 12 | P2510\wsvisu    | Auth-Type          | := | EAP      |
| 13 | P2510=5Cwsvisu  | Cleartext-Password | := | certpass |
| 14 | P2510\wsvisu    | Cleartext-Password | := | certpass |
+----+-----------------+--------------------+----+----------+

Weiter unten im Log missfällt mschap eine fehlende Übereinstimmung beim Usernamen. Soweit ich verstanden habe, sollte die in modules/mschap gemachte Änderung "with_ntdomain_hack = yes" dies eigentlich richten?
Found Auth-Type = EAP
# Executing group from file /etc/freeradius/sites-enabled/inner-tunnel
+- entering group authenticate {...}
[eap] Request found, released from the list
[eap] EAP/mschapv2
[eap] processing type mschapv2
[mschapv2] # Executing group from file /etc/freeradius/sites-enabled/inner-tunnel
[mschapv2] +- entering group MS-CHAP {...}
[mschap] No Cleartext-Password configured.  Cannot create LM-Password.
[mschap] No Cleartext-Password configured.  Cannot create NT-Password.
[mschap] ERROR: User-Name (P2510\wsvisu) is not the same as MS-CHAP Name (wsvisu) from EAP-MSCHAPv2
++[mschap] returns reject
[eap] Freeing handler
++[eap] returns reject
Failed to authenticate the user.
} # server inner-tunnel
[peap] Got tunneled reply code 3
        EAP-Message = 0x04fe0004
        Message-Authenticator = 0x00000000000000000000000000000000
[peap] Got tunneled reply RADIUS code 3
        EAP-Message = 0x04fe0004
        Message-Authenticator = 0x00000000000000000000000000000000
[peap] Tunneled authentication was rejected.
[peap] FAILURE
Member: aqui
aqui Dec 19, 2019, updated at May 15, 2023 at 14:28:51 (UTC)
Goto Top