Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

MySQL Abfrage durch Freeradius

Frage Linux Linux Netzwerk

Mitglied: dassven

dassven (Level 1) - Jetzt verbinden

26.08.2011, aktualisiert 13:17 Uhr, 4821 Aufrufe, 18 Kommentare

Freeradius bekommt eine fehlermeldung beim Abrufn von usernamen, obwohl diese in der MySQL Base vorhanden sind.

Ich fasse mich kurz, und hoffe, dass ich alle Info's rüber bringen kann.

Aufbau:
Ich habe ein Debian (amd64) aufgebaut, MySQL, Freeradius und alle Voraussetzungen dafür erfüllt. Grundlegend ist alles am arbeiten. Die Usernamen etc werden aus der DB gelesen, zurückgegeben etc.
Zur überprüfung habe ich Namen in der DB angelegt mit @ _ - . DIese funktionieren alle. Nun habe ich vor 6 Jahren nicht daran gedacht, dass ich heute meine Authentifizierung und Accounting über einen Freeradius laufen lassen muss. Ich hatte damals in die Benutzernamen angelegt,
die folgenden Aufbau haben: 12345-1234567-AB#001@domain.com. Wenn ich die User ohne # anlege funktioniert das ohne Probleme.

Mein Stand bis heute ist:
- MySQL läuft, Freeradius läuft, eine WebOberfläche zur Abfrage läuft auch.
- Usernamen mit Sonderzeichen auser # werden akzeptiert.
- Abfrage im PHPMyAdmin wenn ich nach #'ten suche ist positiv und es werden alle User angezeigt, die in der Tabelle vorhanden sind.
- In der WebAbfrage gibt es den User angeblich nicht
- in der Abfrage durch den FreeRadius bekommt der Radius vom SQL die Antwort, User existiert nicht.

Ich bin im Moment so ziemlich alles durchgegangen, was sich vom FreeRadius einstellen läßt. Meine Vermutung im Moment liegt im Moment, dass der MySQL die Anfrag nicht ganz versteht oder Interprettiert., weil eine # im Usernamen vorhanden ist.


Rechtschreibfehler sind ldiglich Spezialeffekte meiner Tastatur !!
Mitglied: Dani
26.08.2011 um 13:31 Uhr
Hallo,
ich habe im Wiki von Siemens eine Hinweis gefunden welche Sonderzeichen erlaubt sind:

- Logon-Namen dürfen folgende Zeichen nicht enthalten: " / \ [ ] : ; | = , + * ? < >
- Logon-Namen können alle anderen Sonderzeichen einschließlich Leerzeichen, Punkte, Binde- und Unterstriche enthalten. Es ist aber nicht sinnvoll, Leerzeichen in einem Konto-Namen zu verwenden.

Welche Version von Freeradius wird mit deiner Debian installiert? Welche Debianversion hast du installiert?


Grüße,
Dani
Bitte warten ..
Mitglied: dassven
26.08.2011 um 13:39 Uhr
Hi,
Version Debian aktuell 6.0.2.1, Freeradius 2.1.8. und, evtl, damit es nicht falsch verstanden wird. Das Grundlegende System, wofür das Konzept gedacht ist, Es gibt ein WLAN Netz mit ausreichen Anzahl an Clients. Die Clients sind Quasi normale Router, die über WLAN eine PPPoE Verbindung mit dem PPPoE Server herstellen. DIeser PPPoE Server fragt den Radius ab, nach Beutzernamen, Kennwörtern, Trafficlimits etc. Die PPPoE Server sind eingetragen als Clients, damit sie auch den Rad. abfragen dürfen. Das ganze Projekt funktioniert tadellos, bis auf die # im Usernamen. Die Namen, die verwendet werden, sind lediglich "Zugangsdaten" wie sie jeder von sienem InternetProvider bekommt, und sind nicht als Benutzerkonten auf dem Linux gedacht.
Bitte warten ..
Mitglied: Dani
26.08.2011 um 13:49 Uhr
Wie kannst du Version 2.1.8 installiert haben, wenn es offziell 2.1.1 gibt?!
Was gibt radiusd -X aus?


Grüße,
Dani
Bitte warten ..
Mitglied: dassven
26.08.2011 um 14:17 Uhr
FreeRADIUS Version 2.1.8, for host x86_64-unknown-linux-gnu, built on Aug 25 2011 at 22:30:37
Copyright (C) 1999-2009 The FreeRADIUS server project and contributors.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
You may redistribute copies of FreeRADIUS under the terms of the
GNU General Public License v2.

Das schreibt mir der gute. Der Radius wurde modifiziert von Hersteller, weil der Normale wohl einiges nicht mitmacht an Accounting, Authorization und Authentifikation. Deswegen gibts da den 2.1.8 modifiziert in ner Install dazu. Ich glaube aber nicht, dass der Radius das Problem ist.
im Debbug Mode ist so nebenbei erwähnt drin, dassn der Benutzer das#sven in der Datenbank nicht vorhanden wäre. Leider zeigt mir das auch die PHP Abfrage. Der Freeradius scheint den Usernamen also richtig zu verarbeiten, nur der SQL kann wohl nicht mit der Raute anfangen.
Bitte warten ..
Mitglied: Dani
26.08.2011 um 14:25 Uhr
Okay... dann macht das Sinn. Aber warum fragst du dann nicht die Firma die dir die Software modifiziert hat?
Ich meine mich zu erinnern, dass '#' als Sonderzeichen zu sehen ist und daher escapt werden muss.


Grüße,
Dani
Bitte warten ..
Mitglied: dassven
26.08.2011 um 15:20 Uhr
ja, die Firma andem is ne gute Sache. Es sind ca 60 Mails hin und her marschiert. NUr, dass nix was gebracht hat. Außer der Aussage, dass ich doch die Raute in meinem USernamen weglassen sollte. Über tausend User ewrden sich freuen, wenn ich sie damit überrasche, und das vor weihnachten. Aber da ich Dich einmal als Ansprechpartner sehe, so frag ich kurz, wie escape ich das ganze. Aber da war ich glaub auch schon. mit nem Backslash.

Ich habe mir das ganze mal angesehen als Networksniffing. Gut, dasss es noch unverschlüsselte anmeldungen gibt.
der Client schickt seinen Anmeldenamen (ich kürz es mal ab) "123-123-ab#1@dom.com". der pppoe server gibt es weiter an den Radius genau so "123-123-ab#1@dom.com". diese anfrage zeigt auch der Radius im Debug. genau so schicke der Radius die anfrage. Nämlich als
"123-123-ab#1@dom.com". Kann leider nicht genau sagen, wie der SQL das verarbeitet. Der Username ist ebenso in der DB enthalten. Aber welchen String benutzt der MySQL denn wirklich, um nach dem Usernamen zu suchen. Schließlich ist der username, der vom radius abgefragt wird genau so, wie er in der Datenbank steht.

ich log mal, was real beim SQL ankommt. vllt hilft das weiter


LG Sven
Bitte warten ..
Mitglied: Dani
26.08.2011 um 15:26 Uhr
Siehst du im Raidusdebugmodus das SQL-Statement für die Benuterabfrage?
Mach mal direkt auf der DB eine SELECT Abfrage auf einen Usernamen? Sollte das Klappen, dann liegt es auch nicht am "Escapen".

In der WebAbfrage gibt es den User angeblich nicht
Obwohl, das WI kommt von Hersteller? Kommst du dort an den (PHP-)Quellcode ran bzw. such mal das SQL-Statment heraus.
Bitte warten ..
Mitglied: dassven
26.08.2011 um 15:38 Uhr
OK, also eine Query direkt im MySQL sagt, auf abfrage des benutzernamens dass er existiert und wird auch als ergebnis ausgegeben. im PHPMyAdmin auch, ist ja auch nur ein übergebener SQL befehl. OK, hier mal die Ausgabe vom RadiusDebug. Da sagt er, der Name wäre ncht vorhanden

01.
rad_recv: Access-Request packet from host 127.0.0.1 port 33620, id=243, length=62 
02.
	User-Name = "admin#sven" 
03.
	User-Password = "1234" 
04.
	NAS-IP-Address = 127.0.1.1 
05.
	NAS-Port = 1812 
06.
+- entering group authorize {...} 
07.
++[preprocess] returns ok 
08.
++[chap] returns noop 
09.
++[mschap] returns noop 
10.
[suffix] No '@' in User-Name = "admin#sven", looking up realm NULL 
11.
[suffix] No such realm "NULL" 
12.
++[suffix] returns noop 
13.
[eap] No EAP-Message, not doing EAP 
14.
++[eap] returns noop 
15.
[files] users: Matched entry DEFAULT at line 50 
16.
[files] 	expand: /usr/local/bin/rmauth "%{NAS-IP-Address}" "%{User-Name}" "%{Calling-Station-Id}" -> /usr/local/bin/rmauth "127.0.1.1" "admin#sven" "" 
17.
++[files] returns ok 
18.
[sql] 	expand: %{User-Name} -> admin#sven 
19.
[sql] sql_set_user escaped user --> 'admin#sven' 
20.
rlm_sql (sql): Reserving sql socket id: 4 
21.
[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=23sven'           ORDER BY id 
22.
[sql] 	expand: SELECT groupname           FROM radusergroup           WHERE username = '%{SQL-User-Name}'           ORDER BY priority -> SELECT groupname           FROM radusergroup           WHERE username = 'admin=23sven'           ORDER BY priority 
23.
rlm_sql (sql): Released sql socket id: 4 
24.
[sql] User admin#sven not found 
25.
++[sql] returns notfound 
26.
++[expiration] returns noop 
27.
++[logintime] returns noop 
28.
[pap] WARNING! No "known good" password found for the user.  Authentication may fail because of this. 
29.
++[pap] returns noop 
30.
Found Auth-Type = Local 
31.
WARNING: Please update your configuration, and remove 'Auth-Type = Local' 
32.
WARNING: Use the PAP or CHAP modules instead. 
33.
No "known good" password was configured for the user. 
34.
As a result, we cannot authenticate the user. 
35.
Failed to authenticate the user. 
36.
Using Post-Auth-Type Reject 
37.
+- entering group REJECT {...} 
38.
[attr_filter.access_reject] 	expand: %{User-Name} -> admin#sven 
39.
 attr_filter: Matched entry DEFAULT at line 11 
40.
++[attr_filter.access_reject] returns updated
Bitte warten ..
Mitglied: dassven
26.08.2011 um 15:40 Uhr
Ehm, hab ich da was übersehen? in der SQL Expand steht ein username admin=23sven drin.
Bitte warten ..
Mitglied: Dani
26.08.2011 um 15:43 Uhr
Du hast mit dem Benutzernamen "admin#sven über die lokale Maschine die Abfrage gestartet.
Und im Output steht drin "[sql] User admin#sven not found".

Geh mal bitte hin und setze folgende Abfrage über phpMyAdmin auf die DB ab:
01.
SELECT id, username, attribute, value, op FROM radcheck WHERE username = *admin#sven' ORDER BY id -> SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'admin=23sven' ORDER BY id;
Bitte poste den Output...
Bitte warten ..
Mitglied: dassven
26.08.2011 um 17:54 Uhr
HI, war fix meine Kleine holen also nach dem befehl kommt der error # 1064; in der ausgabe steht :

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*admin#sven' ORDER BY id -&gt; SELECT id, username, attribute, value, op FROM radch' at line 1

SELECT id, username, attribute, value, op
FROM radcheck
WHERE username = * admin#sven' ORDER BY id -> SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'admin=23sven' ORDER BY id;

LIMIT 0 , 30
Bitte warten ..
Mitglied: Dani
26.08.2011 um 17:59 Uhr
Mein Fehler...versuchs damit nochmal:
01.
SELECT id, username, attribute, value, op 
02.
 FROM radcheck 
03.
 WHERE username = 'admin#sven' ORDER BY id -> SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'admin=23sven' ORDER BY id; 
04.
LIMIT 0 , 30
Bitte warten ..
Mitglied: dassven
26.08.2011 um 18:55 Uhr
Es scheint einen Fehler in Ihrer MySQL-Abfrage zu geben. Die MySQL-Fehlerausgabe, falls vorhanden, kann Ihnen auch bei der Fehleranalyse helfen.

ERROR: Unbekannte Interpunktion @ 99
STR: ->
SQL: SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'admin#sven' ORDER BY id -> SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'admin=23sven' ORDER BY id;SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'admin#sven' ORDER BY id -> SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'admin=23sven' ORDER BY id;SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'admin#sven' ORDER BY id -> SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'admin=23sven' ORDER BY id;


SQL-Befehl: Dokumentation

SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'admin#sven' ORDER BY id -> SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'admin=23sven' ORDER BY id;

MySQL meldet: Dokumentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '&gt; SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'admi' at line 1

der MySQL ist der 5.1, aber der wirklich aktuelle von der Distri
Bitte warten ..
Mitglied: Dani
26.08.2011 um 21:21 Uhr
Ach ich Depp, versuch es mal so:
01.
SELECT id, username, attribute, value, op  
02.
FROM radcheck 
03.
WHERE username = 'admin#sven' ORDER BY id;
Was mir eben noch in deiner Debuginfo aufällt:
Schau dir mal Zeile 1, 19, 21, 22 und 24 an. Achte auf das Raute...
Bitte warten ..
Mitglied: dassven
26.08.2011 um 23:32 Uhr
HI,

sehe ich das in der RadiusLog richtig, dass er anfragt nach dem Usernamen "admin#sven", eine ID zurück bekommt und danach in der tabelle "groupname" und den anderen dann plötzlich den Eintrag "admin=23sven" aufrufen will, der eigentlich gar nicht drin enthalten ist? da fragt er den Benutzernamen richtig ab, nur die dazugehörigen zusätzlichen Einstellungen, die der PPPoE Server braucht kann er nicht bekommen, kriegt ein NULL zurück und sagt, das der User nicht vorhanden wäre.
Bitte warten ..
Mitglied: dassven
28.08.2011 um 16:29 Uhr
Hi, seltsam, dass ich immer auf meine Fehler eine Lösung habe :D

So meine Antwort auf meine Frage:

Der Freeradius schickt nicht alles so weiter wie er es bekommt. So macht er z.B. aus einem Benutzernamen mit diversen Zeichen (#) eine andere Zeichenfolge und fragt den MySQL nach Einträgen ab. Ein User, der eine Authentifizierung benötigt und z.B. den Benutzernamen "user#001" wird per Radius abgefragt als "user=23001". Der Radius bekommt ein "User gibts nicht" zurück.

Ändert man eine kleine Zeile, oder fügt der sql.conf vom FreeRadius hinzu, läßt er die Zeichen, die in der Kette drin stehen unberührt.
Mit safe-characters = "@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /#" in dieser Konfigurationsdatei fragt der Radius den Usernamen genau so ab, wie er realistisch vorliegt. Und die Zeichen werden bei der Authen....... nich geändert.


So, werde mich nun neuen Problemen witmen.

LG DS
Bitte warten ..
Mitglied: Dani
28.08.2011 um 17:36 Uhr
Hey,
na wunderbar... schicks doch gleich den Hersteller auch noch.


Grüße,
Dani
Bitte warten ..
Mitglied: dassven
28.08.2011 um 18:31 Uhr
Hallö,

der hat es schon. Er hat ja selber nicht gewußt, dass es machbar ist. Dafür darf er an seiner WebOberfläche noch einiges ändern, weil diese den Usernamen nicht aufruft . Und da nennt er seine Programmversion 3.9. Naja, dachte da ist es aus den Kinderschuhen raus. Würde mich interessieren, was ich an nachlas bekomme, wenn ich seine Software noch bissel verbesser und ihm beibringe, und ihm beibringe, wo was zu ändern ist.

1000 Dank. und somit thread geschlossen
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
PHP
MySQL-Abfrage mit php: Wert + true bzw. false (2)

Frage von tomolpi zum Thema PHP ...

Datenbanken
gelöst MYSQL Abfrage (20)

Frage von datadexx zum Thema Datenbanken ...

Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

Datenbanken
gelöst Row Number bei einer Abfrage sinnvoll einsetzen (1)

Frage von Aximand zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (22)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...