Building Freeradius 3 per MariaDB e TLS1.3

Building Freeradius 3 per MariaDB e TLS1.3

Installiamo innanzitutto tutti gli aggiornamenti disponibili

sudo apt update
sudo apt upgrade

Iniziamo ad installare i pacchetti necessari per compilare Freeradius

sudo apt install freetds-dev libcollectdclient-dev libsnmp-dev ssl-cert libpython2.7 libpython2.7-minimal libpython2.7-stdlib libtalloc2 libwbclient0 make

Aggiungiamo il repository di MariaDB 10.4.8 al sistema

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mariadb.mirror.triple-it.nl/repo/10.4/ubuntu bionic main'

Installiamo MariaDB Client

apt install mariadb-client mariadb-dev*

spostiamoci nella cartella /tmp/ e scarichiamo il codice sorgente di freeradius 3.0.19

cd /tmp
git clone https://github.com/FreeRADIUS/freeradius-server.git
cd freeradius-server
git checkout release_3_0_19

Sempre dalla cartella /tmp/freeradius-server/ installiamo le dipendenze necessarie alla compilazione

sudo apt-get install devscripts quilt debhelper fakeroot equivs
fakeroot debian/rules debian/control
fakeroot debian/rules clean
sudo mk-build-deps -ir debian/control

Ok, adesso siamo pronti alla compilazione di Freeradius 3.0.19 con il supporto completo a MariaDB.

Lancio il comando per la compilazione

make deb

Una volta terminata la compilazione, procediamo all’installazione di Freeradius.

dpkg -i freeradius_3.0.19+git_amd64.deb freeradius-common_3.0.19+git_all.deb 
freeradius-config_3.0.19+git_amd64.deb freeradius-utils_3.0.19+git_amd64.deb 
freeradius-mysql_3.0.19+git_amd64.deb libfreeradius3_3.0.19+git_amd64.deb

Aggiungo al file di configurazione di MariaDB in /etc/mysql/my.cnf, nella sezione client, il tipo di cifratura desiderato:

[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
ssl-cipher      = TLSv1.3

Ok, a questo punto dopo aver già configurato il DB e generato i certificati come indicato qui, siamo pronti a testare la connessione tra il server Freeradius e il database Mysql con crittografia TLS1.3 aggiungendo in /etc/freeradius/mods-enabled/sql i percorsi dei certificati, l’ip del server e le credenziali per l’autenticazione.
Per semplicità, copiamo i certificati ca-cert.pem, client.pem e client.key sotto la cartella /etc/freeradius/certs/ ed aggiorniamo i diritti sulle cartelle.

#Contenuto del file /etc/freeradius/mods-enabled/sql
sql {
	dialect = "mysql"
	driver = "rlm_sql_${dialect}"
	sqlite {
		filename = "/tmp/freeradius.db"
		busy_timeout = 200
		bootstrap = "${modconfdir}/${..:name}/main/sqlite/schema.sql"
	}
	mysql {
		tls {
			ca_file = "/etc/freeradius/certs/ca-cert.pem"
			certificate_file = "/etc/freeradius/certs/client.pem"
			private_key_file = "/etc/freeradius/certs/client.key"
		}
		warnings = yes
	}
	postgresql {
		send_application_name = yes
	}
	server = "192.168.0.5"
	port = 3306
	login = "freeradius"
	password = "radiusPass"
	radius_db = "radius"
	acct_table1 = "radacct"
	acct_table2 = "radacct"
	postauth_table = "radpostauth"
	authcheck_table = "radcheck"
	groupcheck_table = "radgroupcheck"
	authreply_table = "radreply"
	groupreply_table = "radgroupreply"
	usergroup_table = "radusergroup"
	delete_stale_sessions = yes
	pool {
		start = ${thread[pool].start_servers}
		min = ${thread[pool].min_spare_servers}
		max = ${thread[pool].max_servers}
		spare = ${thread[pool].max_spare_servers}
		uses = 0
		retry_delay = 30
		lifetime = 0
		idle_timeout = 60
	}
	client_table = "nas"
	group_attribute = "SQL-Group"
	$INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf
}

Stoppiamo il demone Freeradius e controlliamo che i file modificati non abbiamo errori:

service freeradius stop
freeradius -CX

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *