Radius
From Knowledge
Ce tutoriel explique l'installation de Radius sur un serveur GNU/Linux Debian (mode CLI).
Conditions requises
Aucune condition requise
Installation
- Créer une base de données et préparer un accès MySQL pour radius comme suit
- Utilisateur (user): radius
- Base de données (database/schema): radius
- Hôte source: localhost
- Mot de passe (password): Libre
- Installer les paquets Debian: freeradius freeradius-common freeradius-mysql freeradius-utils libfreeradius2
apt-get update
apt-get install freeradius freeradius-common freeradius-mysql freeradius-utils libfreeradius2
- Exécuter le fichier SQL suivant dans la base de données radius: /etc/freeradius/sql/mysql/schema.sql
- Exécuter les commandes SQL suivantes dans la base de données radius:
RENAME TABLE `radcheck` TO `radcheckold`;
CREATE TABLE `radcheckext` (`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `username` VARCHAR(64) NOT NULL DEFAULT '', `password` VARCHAR(253) NOT NULL DEFAULT '', `from` BIGINT(20) NOT NULL DEFAULT '0', `through` BIGINT(20) NOT NULL DEFAULT '2145826800', `comment` TEXT NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `XU_USERNAME` (`username`)) COLLATE='utf8_general_ci' ENGINE=MyISAM AUTO_INCREMENT=10;
CREATE TABLE `radcheck` (`id` INT(11) UNSIGNED NOT NULL, `username` VARCHAR(64) NOT NULL COLLATE 'utf8_general_ci', `attribute` VARCHAR(13) NOT NULL COLLATE 'utf8_general_ci', `op` VARCHAR(2) NOT NULL COLLATE 'utf8_general_ci', `value` VARCHAR(253) NOT NULL COLLATE 'utf8_general_ci') ENGINE=MyISAM;
DROP TABLE IF EXISTS `radcheck`;
CREATE ALGORITHM=UNDEFINED DEFINER=`radius`@`localhost` SQL SECURITY DEFINER VIEW `radcheck` AS select `radcheckext`.`id` AS `id`,`radcheckext`.`username` AS `username`,'User-Password' AS `attribute`,':=' AS `op`,`radcheckext`.`password` AS `value` from `radcheckext` where ((`radcheckext`.`from` <= unix_timestamp()) and (`radcheckext`.`through` >= unix_timestamp()));
CREATE DEFINER=`radius`@`localhost` TRIGGER `triggerafterinsert_radpostauth` AFTER INSERT ON `radpostauth` FOR EACH ROW UPDATE voucher SET `begun` = '1', `from` = unix_timestamp(), `through` = (unix_timestamp()+duration) WHERE `username` = NEW.username AND `begun` = '0'
- Modifier les variables suivantes du fichier /etc/freeradius/sql.conf par rapport à la base de données radius préparée au préalable
- server (selon l'architecture souhaitée, mais probablement localhost)
- port
- login
- password
- radius_db
- Modifier les lignes suivantes du fichier /etc/freeradius/radiusd.conf:
- Décommenter l'inclusion du fichier sql.conf
- Décommenter l'inclusion du fichier sql/mysql/counter.conf
- Modifier le fichier /etc/freeradius/sites-available/inner-tunnel comme suit:
- Ajouter sql juste après authorize {
- Ajouter sql juste après session {
- Modifier le fichier /etc/freeradius/sites-available/default comme suit:
- Ajouter sql juste après authorize {
- Ajouter sql juste après session {
- Ajouter sql juste après accounting {
- Ajouter sql juste après post-auth {
- Modifier le fichier /etc/freeradius/clients.conf comme suit:
- Remplacer client localhost { par client 0.0.0.0/0 {
- Commenter la variable ipaddr
- Commenter la variable shortname (si ce n'est pas déjà fait)
- Définir la variable secret avec une nouvelle valeur (à garder secrète)
- Redémarrer le serveur Radius
/etc/init.d/freeradius restart
Test
- Exécuter la commande SQL suivante dans la base de données radius:
INSERT INTO `radcheckext` (`username`, `password`, `from`, `through`, `comment`) VALUES ('test', 'test', 0, 2145830400, 'Just testing...');
- Exécuter la commande suivante: radtest test test 127.0.0.1 0 mysecret
- Le premier test représente le nom d'utilisateur
- Le deuxième test représente le mot de passe
- 127.0.0.1 représente le serveur Radius à contacter
- 0 est le numéro de port NAS. Rien à expliquer ici, indiquer simplement 0...
- mysecret est le secret défini à l'étape au préalable
- La commande devrait aboutir à une réponse de type "Access-Accept"