dassven
Goto Top

Freeradius Abfrag mit Realm schlägt fehl.

Der Freeradius macht nur teilweise Abfragen ohne Realm.

Hallo,

ich nutze den Freeradius und MySQL, um Authentifizierung, Authorisierung und Accountig von PPPoE einwahlen zu realisieren. Im MySQL ist ein User angelegt "admin.sven". Die passende Einwahl vom PPPoE Client lautet "admin.sven@domain.com". Ich habe einen Realm "domain.com" angelegt. Mit einen radtest von dem Benutzer "admin.sven@domain.com", welches der PPPoE Client auch benutzt, wird im Log angezeigt, dass der Realm abgeschnitten wird. Es wird auch nur in der DB abgefragt von dem Benutzer "admin.sven". Am Ende vom Log steht dann wieder, dass ber Benutzer "admin.sven@domain.com" nicht gefunden wurde. Am Anfang der Query Kette vom MySQL wird immer der User "admin.sven" abgerufen. weiter unten dann plötzlich der User "admin.sven@domain.com".
Kann mir jemand erklären, in welchem config File das versteckt ist ??

heraus kommen soll ein OK für die Authen....., Author....... und Accounting.

Hier sind noch die Logs vom RADDB & MySQL.

RADDB Log der Abfrage:
rad_recv: Access-Request packet from host 127.0.0.1 port 47818, id=52, length=74
        User-Name = "admin.sven@domain.com"  
        User-Password = "1234"  
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
+- entering group authorize {...}
[preprocess]    expand: %{User-Name} -> admin.sven@domain.com
++[preprocess] returns ok
++[chap] returns noop
++[mschap] returns noop
[suffix] Looking up realm "domain.com" for User-Name = "admin.sven@domain.com"  
[suffix] Found realm "domain.com"  
[suffix] Adding Stripped-User-Name = "admin.sven"  
[suffix] Adding Realm = "domain.com"  
[suffix] Authentication realm is LOCAL.
++[suffix] returns ok
[eap] No EAP-Message, not doing EAP
++[eap] returns noop
[files] users: Matched entry DEFAULT at line 50
[files]         expand: /usr/local/bin/rmauth "%{NAS-IP-Address}" "%{User-Name}" "%{Calling-Station-Id}" -> /usr/local/bin/rmauth "127.0.1.1" "admin.sven@domain.com" ""  
++[files] returns ok
[sql]   expand: %{Stripped-User-Name} -> admin.sven
[sql]   expand: %{%{Stripped-User-Name}:-%{%{User-Name}:-DEFAULT}} -> admin.sven
[sql] sql_set_user escaped user --> 'admin.sven'  
rlm_sql (sql): Reserving sql socket id: 2
[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 = 'admin.sven'           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 = 'admin.sven'           ORDER BY id  
[sql]   expand: SELECT groupname           FROM radusergroup           WHERE username = '%{SQL-User-Name}'           ORDER BY priority -> SELECT groupname           FROM radusergroup           WHERE username = 'admin.sven'           ORDER BY priority  
rlm_sql (sql): Released sql socket id: 2
++[sql] returns ok
++[expiration] returns noop
++[logintime] returns noop
[pap] Found existing Auth-Type, not changing it.
++[pap] returns noop
Found Auth-Type = Local
WARNING: Please update your configuration, and remove 'Auth-Type = Local'  
WARNING: Use the PAP or CHAP modules instead.
User-Password in the request is correct.
+- entering group session {...}
[sql]   expand: %{Stripped-User-Name} -> admin.sven
[sql]   expand: %{%{Stripped-User-Name}:-%{%{User-Name}:-DEFAULT}} -> admin.sven
[sql] sql_set_user escaped user --> 'admin.sven'  
[sql]   expand: SELECT COUNT(*)                              FROM radacct                              WHERE username = '%{SQL-User-Name}'                              AND acctstoptime IS NULL -> SELECT COUNT(*)                              FROM radacct                              WHERE username = 'admin.sven'                              AND acctstoptime IS NULL  
rlm_sql (sql): Reserving sql socket id: 1
rlm_sql (sql): Released sql socket id: 1
++[sql] returns ok
+- entering group post-auth {...}
Exec-Program output: Reply-Message="User not found!"  
Exec-Program-Wait: value-pairs: Reply-Message="User not found!"  
Exec-Program: returned: 1
[exec] Login incorrect (external check said so)
++[exec] returns reject
Using Post-Auth-Type Reject
+- entering group REJECT {...}
[attr_filter.access_reject]     expand: %{User-Name} -> admin.sven@domain.com
 attr_filter: Matched entry DEFAULT at line 11
++[attr_filter.access_reject] returns updated
Delaying reject of request 1 for 1 seconds
Going to the next request
Waking up in 0.9 seconds.
Sending delayed reject for request 1
Sending Access-Reject of id 52 to 127.0.0.1 port 47818
        Reply-Message = "User not found!"  
LogFile vom MySQL bei der Abfrage:
81 Query	SELECT id, username, attribute, value, op           FROM radcheck           WHERE username = 'admin.sven'           ORDER BY id  
81 Query	SELECT id, username, attribute, value, op           FROM radreply           WHERE username = 'admin.sven'           ORDER BY id  
81 Query	SELECT groupname           FROM radusergroup           WHERE username = 'admin.sven'           ORDER BY priority  
80 Query	SELECT COUNT(*)                              FROM radacct                              WHERE username = 'admin.sven'                              AND acctstoptime IS NULL  
85 Connect	radius@localhost on radius
85 Query	SET NAMES 'utf8'  
85 Query	SELECT disconnmethod, maclock FROM rm_settings
85 Query	SELECT type, ciscobwmode FROM nas WHERE nasname = '127.0.1.1'  
85 Query	SELECT type, ciscobwmode FROM nas WHERE nasname = '127.0.1.1'  
85 Query	SELECT downlimit, uplimit, comblimit, expiration, uptimelimit, enableuser, usemacauth, srvid, staticip, usestaticip, verified, selfreg, acctype, custattr FROM rm_users WHERE username = 'admin.sven@domain.com'  
85 Query	SELECT lang FROM rm_settings
85 Quit
LG & Danke DS

Content-Key: 172534

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

Ausgedruckt am: 29.03.2024 um 10:03 Uhr

Mitglied: Dani
Dani 04.09.2011, aktualisiert am 18.10.2012 um 18:48:10 Uhr
Goto Top
Moin Sven,
was ist nun der Unterschied zu diesem .


Grüße,
Dani
Mitglied: dassven
dassven 04.09.2011 um 17:54:36 Uhr
Goto Top
Hi Dani, Der Unterschied ist, dass ich in der Datenbankbank nur User anlege ohne den Ralm. also letztendlich ohne "@domain.com". ich dann das eigentliche Problem mit der URL in der APC nicht habe. Der Realm wird dann vom Benutzernamen gestrichen und es kommen anfragen nur vom ersten Teil des relevanten Benutzernamens. Scheine aber der einzige zu sein, der mittlerweile 8 oder 9 Lösungen in Angriff genommen hat, um das Problem zu lösen. Nachdem ich den Apache mit dem rewrite etc. den MySQL etc durchhabe, ist nur noch der Freeradius, der die Abfragen so umbauen kann, damit es funktioniert. Ich bin nur kreativ und denke über evtentuelle Lösungen nach, die mich voran bringen. Im Netz ist alles beschrieben, wie es funktioniert, und was man anwenden kann, Bin ja kein Linux Profi und hänge mmer an einem "kleinen Hacken", wo mir dann doch keiner weiter helfen kann.
Im Moment sieht es so aus, dass der Freeradius ein OK ausgibt für die Authentifizierung von Benutzer "123-12345-abx#001@domain.com", obwohl der Benutzer nur als "123-12345-abc" angelegt ist in der Datenbank.
Der Freeradius fragt die Authentifizierung ab, der User ist Online. Der Freeradius fragt dann aber plötzlich die Speed-Limit's, Trafficlimits mit dem vollständigen namen ab. Also mit Realm. Die Konfig ist aber zerstreut in einige Konfigurationsdateien, wo ich langsam die Zusammenhänge verliere.

Wenn also jemand die Konfig Files braucht, bin für jeden Kram bereit. Wenn es niemanden gibt, der ne Idee hat, ist das eigentlich auch nicht so schlimm. In anderen Foren siehts nicht anders aus. Leider.

MfG Sven
Mitglied: exchange
exchange 04.09.2011 um 21:36:45 Uhr
Goto Top
Hallo Sven,
die Radius Abfragen stehen alle in einer sql Datei. Ich habe die damals auch für einen speziellen Zweck umgebaut und arbeite mit views in MySQL.

Wenn ich das richtig verstehe, funktioniert der Auth aber die übergebenen Werte nicht? Wenn ja, dann schaue Dir die Abfragen genau an, da steht bestimmt eine Funktion seitens Freeradius drin, welche alles hinter dem @ absägt.


Gruß
Heiko
Mitglied: aqui
aqui 05.09.2011, aktualisiert am 18.10.2012 um 18:48:10 Uhr
Goto Top
Du kannst die Realm ignorieren lassen. Hier steht wie man das macht:
Netzwerk Zugangskontrolle mit 802.1x und FreeRadius am LAN Switch
Mitglied: dassven
dassven 06.09.2011 um 20:30:58 Uhr
Goto Top
Hallo, Ich glaub so nen hartnäckischen Typ wie mich gibts net. :D

Also, ich hab mal so alle SQL Files durch. Kein Erfolg, Aber mir ist was aufgefallen. Es handelt sich ja um eine "fertige" Software. Bin irgend wie über die Install gestolpert, und es werden ein paar ausführbare Dateien angelegt. Hätte ich im Log ja auch sehen können. Nur wenn man nicht drauf achtet, nunja Halt das Sympthom Wald & Bäume.
in der "users" wird ein "rmauth %{User-Name} %{nas} etc. angewiesen. Der Freeradius macht ja seine Abfrage mit dem "Stripped-User-Name". Dann kommt die Abfrage mit der "rmauth" und der übergabe vom %{User-Name}. Das ist natürlich der angegebene Username und nicht der Stripped. Bin schon einiges an variablen durchgegangen. %{SQL-User-Name} etc. nur da gabs keinen Erfolg. Hat jemand eine Ahnung, welche Variable man da nutzen muss, damit es der Stripped-User-Name" wird, der mit übergeben wird ??

Danke
Mitglied: dassven
dassven 21.03.2012 um 07:23:31 Uhr
Goto Top
Zu diesem Thema fällt mir nichts mehr ein, Wer den Thread gelesen hat, ne zwischeninfo. Es ging um Authorisierung und Authentifizierung von PPPoE Geschichten. Problem bestand in dem "RadiusManager". Nach vielen Tests muss ich sagen, dass es doch ein verfrickeltes System ist. Zusätzliche ausführbare Files vom RadiusManager machen das ganze relativ konfigurationsuntauglich, wenn es um Realms geht. als Gegenlösung hab ich dazu eine kostenfreie Version gefunden mit Namen "DaloRadius". Arbeitet wunderbar, gaht aber ein wenig mehr in Administartive arbeit über (Man muss auch mal selber kleine Regeln erstellen). Als Netzwerkadmin sollte das mit Kenntnissen kein Problem sein.

in dem Sinne Good Luck mit den bits und bytes.