SQL authentication freeradius server#
first, desclaimer. I use Ubuntu 24.04.2 LTS that running on Archlinux qemu host. so this is not host machine. big thanks for linux netdev that makes local networking possible.
first, lets configure postgresql server
root@integral2:/home/fadhil_riyanto# su postgres
postgres@integral2:/home/fadhil_riyanto$ psql
psql (16.9 (Ubuntu 16.9-0ubuntu0.24.04.1))
Type "help" for help.
postgres=#
database setup#
get it inside. then run
do not forget to allow CRUD option on all tables by running
\c radius
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO radius;
radius server configuration#
the sequence of config file
/etc/freeradius/3.0/clients.conf
<– specify ‘who’ can connect, we need define it in this file/etc/freeradius/3.0/users
<– [manual authentication, using file]/etc/freeradius/3.0/radiusd.conf:986
<– this file enable sql module./etc/freeradius/3.0/mods-available/sql
<– this file is where we configure user/pass for sql module/etc/freeradius/3.0/sites-available/default
<– sequence layer of login,first, we filter-out all args
then go to preprocess
send to log
chap & mschap
check whatever has digest
check whatever user@domain format
eap
files
lookup to sql <– uncomment this
as root
/etc/freeradius/3.0/mods-enabled
ln -s ../mods-available/sql ./sql
uncomment this line in radiusd.conf
change this line to postgresql (mods-enabled/sql)
also
fill the pgsql server credentials (/etc/freeradius/3.0/mods-config/sql/main/postgresql/queries.conf) (aka raddb/sql/database/dialup.conf in rhel)
when connection failed#
when connection succeed#
populating#
best read: https://wiki.freeradius.org/guide/SQL-HOWTO#populating-sql
big thanks for freeradius developer, the sql file is located at /etc/freeradius/3.0/mods-config/sql/main/postgresql/schema.sql
import it with:
psql -U radius -d radius -f /etc/freeradius/3.0/mods-config/sql/main/postgresql/schema.sql
configuration#
lets look at sites-available/default
this configuration only allow authorize users that come from NAS-Port-Type == “Wireless-802.11”, this is the difference
footage 1: from winbox request
this one come from captive portal