HOWTO FreeRadius and MySQL
Uit Gentoo Linux Wiki
Inhoud |
[bewerken] Introduction
Freeradius wordt vooral gebruikt voor authenticatie met draadloze netwerken. De reden waarvoor we Freeradius met mySQL willen gebruiken is vrij simpel. Snellere en efficiƫntere aanpak om de gebruikers aan te maken en aan te passen door middel van PHP/ASP/JSP of een andere webscripting taal.
Freeradius kan met zowel mySQL/Oracle/... databanken werken. Deze tutorial gebruikt mySQL.
[bewerken] Installatie
Eerst emergen we alle nodige pakketten.
emerge dev-db/mysql freeradius
[bewerken] Configuratie
[bewerken] mySQL
Na het emergen van mysql moeten we de databanken aanmaken.
/usr/bin/mysql_install_db
Daarna moeten we de mySQL database opstarten en automatisch bij het opstarten laten starten
/etc/init.d/mysql start rc-update add mysql default
Daarna moeten het root paswoord voor de mySQL database instellen. Hier kan je al een zeer belangrijke beveiliging inschakelen. Je kan namelijk zeggen dat het root paswoord alleen maar vanop de server zelf kan worden geopend.
Root kan van elke computer inloggen op de databank.
/usr/bin/mysqladmin -u root password 'new-password'
Root kan alleen vanop 'computer' worden geopend.
/usr/bin/mysqladmin -u root -h 'computer' password 'new-password'
Vervolgens beveiligen we onze mysql installatie:
/usr/bin/mysql_secure_installation
Volg gewoon de stappen zijn over duidelijk.
Dan moeten we een databank creeƫren waar onze radius zijn gegevens zal bewaren en opvragen. We loggen in in de mySQL service met root privileges. (Met het paswoord dat we hierboven voor de root hebben ingesteld)
mysql -p
We maken een databank aan en maken een gebruiker aan die hierop alle rechten zal hebben.
CREATE DATABASE radius; GRANT ALL PRIVILEGES ON radius.* to 'radiususer'@'localhost' IDENTIFIED BY 'radiuspass'; FLUSH PRIVILEGES; EXIT
Dan moeten we het radius schema importeren in onze gemaakte radius databank.
cat /usr/share/doc/freeradius*/examples/mysql.sql | mysql -u radiususer -p radius
Opgelet! Dit commando werkt alleen als er geen andere versie van radius op dezelfde moment is geinstalleerd. (Door *)
Laten we ook direct een test gebruiker toevoegen. We openen de mySQL service en gebruiken 'radiuspass' dat we hierboven hebben aangemaakt.
mysql -D radius -u radiususer -p
Dan voegen we de nieuwe gebruiker toe
INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('mysqltestuser', 'Password', 'mysqltestpass');
EXIT
[bewerken] Freeradius
Nu dat de mysql klaar is, is het tijd voor de freeradius server op te stellen. De standaard config van Freeradius is goed. Alleen moeten we nu nog de mySQL support activeren.
Zoek naar volgende lijn: "Look in an SQL database" Verwijder het '#' van voor sql wat 4 lijnen onder de "Look in an SQL database" staat.
nano -w /etc/raddb/radiusd.conf
Zoek naar de authorize sectie en verwijder het '#' van voor sql Zoek naar de accounting sectie en verwijder het '#' van voor sql (Voor sql accounting te activeren)
nano -w /etc/raddb/radiusd.conf
Nu gaan we mySQL database gebruiker moeten instellen in de configs zodat: login = radiususer pass = radiuspass
nano -w /etc/raddb/sql.conf
Vervolgens moeten we de radiusclients instellen. De radius clients zijn de routers/accesspoints/Network Access Servers die gegevens zullen vragen aan de Freeradius. Zet de clients niet te flexible! Als illustratie en voor testdoeleinden zullen wij de Freeradius servers als client configureren met onderstaande gegevens: client 127.0.0.1 { secret = testing shortname = localhost nastype = other }
nano -w /etc/raddb/clients.conf
Dan als laatste moeten we nog de default Authenticatie manier aanpassen! We veranderen:
#
# First setup all accounts to be checked against the UNIX /etc/passwd.
# (Unless a password was already given earlier in this file).
#
DEFAULT Auth-Type = System
Fall-Through = 1
in:
#
# First setup all accounts to be checked against the UNIX /etc/passwd.
# (Unless a password was already given earlier in this file).
#
DEFAULT Auth-Type = Local
Fall-Through = 1
door het bestand /etc/raddb/users te openen.
nano -w /etc/raddb/users
Wat we concreet doen is het volgende: We zeggen dat onze radius server default altijd in de lokale bestanden /etc/raddb/users en mysql moeten gaan kijken voor het paswoord. Bij System kijkt hij in /etc/passwd. De Fall-Through laat toe dat er nog andere defaults achter deze komen.
[bewerken] Testen
radtest mysqltestuser mysqltestpass 127.0.0.1 1812 testing
Zou dit moeten geven:
Sending Access-Request of id 211 to 127.0.0.1 port 1812
User-Name = "mysqltestuser"
User-Password = "mysqltestpass"
NAS-IP-Address = 255.255.255.255
NAS-Port = 1812
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=211, length=20
