Every dog has a blog!
[ start | index | login or register ]
start > 2006-09-27 > 1

Freeradius und MySQL

Created by derjohn. Last edited by derjohn, 5 years and 114 days ago. Viewed 17,128 times. #4
[diff] [history] [edit] [rdf]
labels
attachments

Freeradius und MySQL

Ich habe jetzt einige Stunden damit zugebracht, einen FreeRADIUS mit MySQL sprechen zu lassen. Nicht, dass es dazu kein Modul gäbe, nein, apt-get install freeradius-mysql und alle Voraussetzungen sind da. Da Problem ist, dass das Befüllen der Datenbank nicht eindeutig geklärt ist. Wenn man darüber nachdenkt, ist das natürlich auch klar, weil die einzufüllenden Attribute vom Anwendungszweck abhängen: In meinem Projekt ging es um Dial-In User, die via L2TP von einer Cisco versuchen, sich zu authentifizieren. Ein diesem Spezialfall enthält der Benutzername auch noch ein # Zeichen. Sondernzeichen werden fom FreeRADIUS MIME-encoded and die DB weitergegeben. Das führt dazu, dass der Benutzername nicht "user#suffix@domain", sondern als "user=23suffix@domain" repräsentiert wird. Das ist natürlich Quatsch und läßt sich wie folgt beheben (Thx, Lilalinux!): Man fügt das # (hash) in der sql.conf zu den safe-characters hinzu:

safe-characters = "@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /#"

Das Anlegen der DB Schema lässt sich unter Debian wie folgt erledigen:

mysqladmin create radius zcat /usr/share/doc/freeradius/examples/mysql.sql.gz | mysql radius

Und dann sollte dem Benutzer radius auch Zugriff auf die Datenbank "radius" gegeben werden:

GRANT ALL ON radius.* TO 'radius'@'localhost' IDENTIFIED BY 'PaSsW0Rt'; FLUSH PRIVILEGES;

Und zum Anlegen eines User habe ich das folgendes Bash-Script entwickelt (Da es nur ein Provisorium ist, fängt es u.a. keine Fehler ab)

#!/bin/sh # (c)= Andras John, GPL V2 DBNAME="radius" USERNAME=$1 PASS=$2 STATICIP=$3

echo "insert into usergroup(UserName, Groupname) VALUES('${USERNAME}','static');" | mysql ${DBNAME} echo "insert into radcheck(UserName,Attribute,Value,Op) VALUES('${USERNAME}','Password','${PASS}','==');" | mysql ${DBNAME}

# only once echo "insert into radgroupcheck(GroupName,Attribute,Value,Op) VALUES('static','Auth-Type','Local',':=');" | mysql ${DBNAME}

# echo "insert into radreply(UserName,Attribute,Value,Op) VALUES ('${USERNAME}','Service-Type','Framed',':=');" | mysql ${DBNAME} echo "insert into radreply(UserName,Attribute,Value,Op) VALUES ('${USERNAME}','Framed-Protocol','PPP',':=');" | mysql ${DBNAME} echo "insert into radreply(UserName,Attribute,Value,Op) VALUES ('${USERNAME}','Framed-Routing','None',':=');" | mysql ${DBNAME} echo "insert into radreply(UserName,Attribute,Value,Op) VALUES ('${USERNAME}','Framed-IP-Address','${STATICIP}',':=');" | mysql ${DBNAME}

no comments | post comment

< February 2012 >
SunMonTueWedThuFriSat
1234
567891011
12131415161718
19202122232425
26272829


Logged in Users: (0)
… and 2 Guests.

Blogrolling:
>>Blog des Wahnsinns
>>Daniel Holbach's Blog
>>Matt Cutt's blog
>>Randgruppentourismus

XHTML 1.0 validated
CSS validated
RSS 2.0 validated
RSS Feed

Hinweise zur Formatierung
snipsnap-help.

Powered by
SnipSnap 1.0b1-snipit

Ads will be placed here!

dem john sein blog | Impressum: Andreas John, Frankfurter Str. 98a, 63067 Offenbach, E-Mail: himself@derjohn.de