Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
310lansecure:30_radius:10_freeradius1 [le 03/03/2009 à 18:48] – édition externe 127.0.0.1 | 310lansecure:30_radius:10_freeradius1 [le 30/06/2018 à 15:55] (Version actuelle) – prof | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== FreeRADIUS ====== | + | ====== FreeRADIUS |
- | + | (2.0.4 sur Debian | |
- | ===== Avertissement ===== | + | |
- | Tout ce qui suit n'est valable que pour FreeRADIUS Version 1.1.3, fourni avec Debian Etch ! | + | |
- | + | ||
- | FreeRADIUS Version | + | |
===== Avant de commencer... ===== | ===== Avant de commencer... ===== | ||
- | RADIUS (Remote Authentication Dial-In User Service) est un vaste programme. Pour essayer de faire simple (donc schématique et incomplet), ce service est capable : | + | RADIUS (Remote Authentication Dial-In User Service) est un vaste programme. Pour essayer de faire simple (donc schématique et incomplet), ce service est capable |
- | * d' | + | * d' |
- | * d' | + | * d' |
* de renvoyer au demandeur des paramètres variés pouvant, suivant le cas, être une configuration IP, un numéro de LAN virtuel etc. | * de renvoyer au demandeur des paramètres variés pouvant, suivant le cas, être une configuration IP, un numéro de LAN virtuel etc. | ||
- | Etudier | + | Étudier |
- | * authentification depuis leur adresse MAC des stations | + | * authentification depuis leur adresse MAC des stations |
* authentification avec un certificat x.509 sur le réseau Wi-Fi, en utilisant EAP-TLS. | * authentification avec un certificat x.509 sur le réseau Wi-Fi, en utilisant EAP-TLS. | ||
- | Installer et surtout configurer un serveur radius pour la première fois a quelque chose d' | + | Installer et surtout configurer un serveur radius pour la première fois a quelque chose d' |
FreeRadius peut fonctionner en s' | FreeRadius peut fonctionner en s' | ||
- | |||
===== Installation de Freeradius ===== | ===== Installation de Freeradius ===== | ||
+ | Pour des raisons de compatibilité de licences, FreeRadius est compilé par défaut sur Debian (Lenny) sans le support de TLS. TLS nous servira pour le WPA2. Nous allons donc reconstruire un paquet binaire à partir du paquet source, en tenant compte de cet usage. | ||
- | Pour des raisons de compatibilité de licences, FreeRadius est compilé par défaut sur Debian sans le support de TLS (ni de Postgresql). TLS nous servira pour le WPA2. Nous allons donc reconstruire un paquet | + | **Notons que ceci n'a plus lieu d' |
==== Préparatifs ==== | ==== Préparatifs ==== | ||
- | Nous aurons besoin de quelques outils de compilation et de gestion des paquets | + | Nous aurons besoin de quelques outils de compilation et de gestion des paquets |
- | # apt-get | + | # aptitude |
... | ... | ||
- | # apt-get | + | # aptitude |
- | Puis nous devons mettre à jour la liste des paquets | + | Puis nous devons mettre à jour la liste des paquets |
# apt-src update | # apt-src update | ||
Ligne 46: | Ligne 42: | ||
Nous devons retrouver dans notre répertoire : | Nous devons retrouver dans notre répertoire : | ||
- | + | < | |
- | # ls -l | + | # ls -l |
- | total 2552 | + | total 2908 |
- | drwxr-xr-x 15 root root 4096 2007-01-11 16:35 freeradius-1.1.3 | + | drwxr-xr-x 15 root root 4096 mar 4 15:14 freeradius-2.0.4+dfsg |
- | -rw-r--r-- 1 root root 15130 2006-09-01 | + | -rw-r--r-- |
- | -rw-r--r-- 1 root root 975 2006-09-01 | + | -rw-r--r-- |
- | -rw-r--r-- 1 root root 2587376 2006-09-01 20:07 freeradius_1.1.3.orig.tar.gz | + | -rw-r--r-- |
+ | </ | ||
==== Configuration de la compilation ==== | ==== Configuration de la compilation ==== | ||
+ | Dans le répertoire '' | ||
- | Dans le répertoire '' | + | Voici la première partie qui nous intéresse : |
+ | < | ||
+ | ./configure $(confflags) \ | ||
+ | --prefix=/usr \ | ||
+ | --exec-prefix=/ | ||
+ | --mandir=$(mandir) \ | ||
+ | --sysconfdir=/ | ||
+ | --libdir=$(libdir) \ | ||
+ | --datadir=/ | ||
+ | --localstatedir=/ | ||
+ | --with-raddbdir=$(raddbdir) \ | ||
+ | --with-logdir=/ | ||
+ | --enable-ltdl-install=no --enable-strict-dependencies \ | ||
+ | --with-large-files --with-udpfromto --with-edir \ | ||
+ | --enable-developer \ | ||
+ | --config-cache \ | ||
+ | <span class=" | ||
+ | --without-rlm_eap_ttls \ | ||
+ | --without-rlm_eap_peap \</ | ||
+ | --without-rlm_eap_tnc \ | ||
+ | --without-rlm_otp \ | ||
+ | --with-rlm_sql_postgresql_lib_dir=`pg_config --libdir` \ | ||
+ | --with-rlm_sql_postgresql_include_dir=`pg_config --includedir` \ | ||
+ | <span class=" | ||
+ | --without-rlm_eap_ikev2 \ | ||
+ | --without-rlm_sql_oracle \ | ||
+ | --without-rlm_sql_unixodbc \ | ||
+ | --with-system-libtool | ||
+ | </ | ||
+ | Les lignes surlignées sont celles qu'il faut supprimer pour obtenir le support de TLS. Nous devons donc aboutir à ceci : | ||
+ | < | ||
+ | ./configure $(confflags) \ | ||
+ | --prefix=/ | ||
+ | --exec-prefix=/ | ||
+ | --mandir=$(mandir) \ | ||
+ | --sysconfdir=/ | ||
+ | --libdir=$(libdir) \ | ||
+ | --datadir=/ | ||
+ | --localstatedir=/ | ||
+ | --with-raddbdir=$(raddbdir) \ | ||
+ | --with-logdir=/ | ||
+ | --enable-ltdl-install=no --enable-strict-dependencies \ | ||
+ | --with-large-files --with-udpfromto --with-edir \ | ||
+ | --enable-developer \ | ||
+ | --config-cache \ | ||
+ | --without-rlm_eap_tnc \ | ||
+ | --with-rlm_sql_postgresql_lib_dir=`pg_config --libdir` \ | ||
+ | --with-rlm_sql_postgresql_include_dir=`pg_config --includedir` \ | ||
+ | --without-rlm_eap_ikev2 \ | ||
+ | --without-rlm_sql_oracle \ | ||
+ | --without-rlm_sql_unixodbc \ | ||
+ | --with-system-libtool | ||
+ | </ | ||
+ | Ce serait tout si le concepteur du paquet n'avait pas mis un petit test pour bloquer la compilation s'il traine | ||
+ | < | ||
+ | for pkg in ${pkgs} ; do \ | ||
+ | if dh_shlibdeps -p $$pkg -- -O 2>/ | ||
+ | echo "$$pkg links to openssl" | ||
+ | exit 1 ;\ | ||
+ | fi ;\ | ||
+ | done | ||
+ | </ | ||
- | # If you want to use SSL and/or the postgres module, comment | + | Il suffit de commenter la ligne '' |
- | # out these two lines and uncomment the two after | + | < |
- | # You will also need to add a Build-Depends on libssl-dev and libpq-dev | + | for pkg in ${pkgs} ; do \ |
- | # and remove the Build-Conflicts on libssl-dev | + | if dh_shlibdeps |
- | # Finally you need to cat debian/ | + | echo "$$pkg links to openssl" |
+ | # exit 1 ;\ | ||
+ | fi ;\ | ||
+ | done | ||
+ | </code> | ||
+ | Du côté de la compilation, | ||
- | Tant que nous y sommes, ajoutons | + | Voici donc le fichier « rules » tel qu'il doit finalement se présenter : |
+ | < | ||
+ | # | ||
+ | # -*- makefile -*- | ||
+ | # Sample debian/ | ||
+ | # | ||
+ | # This file was originally written by Joey Hess and Craig Small. | ||
+ | # As a special exception, when this file is copied by dh-make into a | ||
+ | # dh-make output file, you may use that output file without restriction. | ||
+ | # This special exception was added by Craig Small in version 0.37 of dh-make. | ||
+ | # | ||
+ | # Modified to make a template file for a multi-binary package with separated | ||
+ | # build-arch and build-indep targets | ||
- | La première modification est facile à réaliser : | + | # Uncomment this to turn on verbose mode. |
+ | export DH_VERBOSE=1 | ||
- | # | + | .NOTPARALLEL: |
- | --without-rlm_sql_postgresql --without-snmp | + | |
- | # | + | |
- | + | ||
- | buildssl=--with-rlm_sql_postgresql_lib_dir=`pg_config --libdir` | + | |
- | | + | |
- | modulelist=krb5 ldap sql_mysql sql_iodbc sql_postgresql | + | |
- | La seconde est peut-être moins évidente si l'on ne sait pas qu'il faut modifier dans le fichier '' | + | SHELL =/bin/bash |
- | < | + | |
- | Source: freeradius | + | |
- | Build-Depends: | + | |
- | Build-Conflicts: | + | |
- | </pre></html> | + | |
- | Enfin, il faut ajouter à ce fichier le contenu de control.postgresql : | + | package |
+ | freeradius_dir | ||
- | # cd ~/build_freeradius/freeradius-1.1.3/debian | + | mandir |
- | # cat control.postgresql >> control | + | libdir |
+ | logdir | ||
+ | pkgdocdir | ||
+ | raddbdir | ||
- | Comme nous avons un peu bousculé les dépendances et les conflits, nous devons réparer ça : | + | modulelist=krb5 ldap sql_mysql sql_iodbc sql_postgresql |
+ | pkgs=$(shell dh_listpackages) | ||
- | | + | # This has to be exported to make some magic below work. |
+ | export DH_OPTIONS | ||
- | === Se protéger des mises à jour de apt-get upgrade === | + | # These are used for cross-compiling and for saving the configure script |
+ | # from having to guess our platform (since we know it already) | ||
+ | export DEB_HOST_GNU_TYPE | ||
+ | export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) | ||
- | Si nous compilons maintenant le paquet binaire, nous obtiendrons des paquets ayant le même nom (version comprise), que les binaires de la distribution, | + | ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) |
+ | CFLAGS += -O0 | ||
+ | else | ||
+ | CFLAGS += -O2 | ||
+ | endif | ||
- | Une solution élégante consiste à obtenir des paquets binaires, avec un nom différent. Pour ce faire, nous pouvons agir dans le fichier '' | + | ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) |
- | < | + | confflags += --build $(DEB_HOST_GNU_TYPE) |
- | <span class=" | + | else |
+ | confflags += --build $(DEB_BUILD_GNU_TYPE) | ||
+ | endif | ||
- | * Add TLS support for compilation | + | config.status: |
+ | dh_testdir | ||
- | -- Christian Caleca <for.spam.only@eme-enseignement.fr> Fri, 11 Jan 2007 15:46:11 +0100</span> | + | ifeq (config.sub.dist, |
+ | rm config.sub | ||
+ | else | ||
+ | mv config.sub config.sub.dist | ||
+ | endif | ||
+ | ifeq (config.guess.dist,$(wildcard config.guess.dist)) | ||
+ | rm config.guess | ||
+ | else | ||
+ | mv config.guess config.guess.dist | ||
+ | endif | ||
+ | ln -s /usr/ | ||
+ | ln -s / | ||
+ | |||
- | freeradius (1.1.3-3) unstable; urgency=medium | + | ./configure $(confflags) \ |
+ | --prefix=/ | ||
+ | --exec-prefix=/ | ||
+ | --mandir=$(mandir) \ | ||
+ | --sysconfdir=/etc \ | ||
+ | --libdir=$(libdir) \ | ||
+ | --datadir=/ | ||
+ | --localstatedir=/ | ||
+ | --with-raddbdir=$(raddbdir) \ | ||
+ | --with-logdir=/ | ||
+ | --enable-ltdl-install=no --enable-strict-dependencies \ | ||
+ | --with-large-files --with-udpfromto --with-edir \ | ||
+ | --enable-developer \ | ||
+ | --config-cache \ | ||
+ | --without-rlm_eap_tnc \ | ||
+ | --with-rlm_sql_postgresql_lib_dir=`pg_config --libdir` \ | ||
+ | --with-rlm_sql_postgresql_include_dir=`pg_config --includedir` \ | ||
+ | --without-rlm_eap_ikev2 \ | ||
+ | --without-rlm_sql_oracle \ | ||
+ | --without-rlm_sql_unixodbc \ | ||
+ | --with-system-libtool | ||
- | * Fix POSIX compliance problem in init script. Closes: | + | #Architecture |
+ | build: build-arch build-indep | ||
- | -- Mark Hymers & | + | build-arch: build-arch-stamp |
+ | build-arch-stamp: | ||
+ | $(MAKE) | ||
+ | touch $@ | ||
+ | |||
+ | build-indep: | ||
+ | build-indep-stamp: | ||
+ | touch $@ | ||
+ | |||
+ | clean: | ||
+ | dh_testdir | ||
+ | dh_testroot | ||
+ | rm -f build-arch-stamp build-indep-stamp | ||
+ | rm -f config.cache config.log | ||
+ | |||
+ | [ ! -d src/ | ||
+ | [ ! -d src/binary ] || rm -fr src/binary || true | ||
+ | |||
+ | # Add here commands to clean up after the build process. | ||
+ | ifeq (Make.inc, | ||
+ | $(MAKE) distclean | ||
+ | endif | ||
+ | ifeq (config.sub.dist, | ||
+ | rm -f config.sub | ||
+ | mv config.sub.dist config.sub | ||
+ | endif | ||
+ | ifeq (config.guess.dist, | ||
+ | rm -f config.guess | ||
+ | mv config.guess.dist config.guess | ||
+ | endif | ||
+ | dh_clean | ||
+ | |||
+ | install: install-indep install-arch | ||
+ | install-indep: | ||
+ | dh_testdir | ||
+ | dh_testroot | ||
+ | dh_installdirs -i | ||
+ | |||
+ | $(MAKE) -C dialup_admin DIALUP_PREFIX=/ | ||
+ | DIALUP_DOCDIR=/ | ||
+ | DIALUP_CONFDIR=/ | ||
+ | R=$(freeradius_dir) install | ||
+ | |||
+ | mv $(freeradius_dir)/ | ||
+ | | ||
+ | mv $(freeradius_dir)/ | ||
+ | | ||
+ | |||
+ | install -m0644 debian/ | ||
+ | |||
+ | dh_install -i --sourcedir=$(freeradius_dir) | ||
+ | dh_installdocs -p freeradius-dialupadmin dialup_admin/ | ||
+ | |||
+ | install-arch: | ||
+ | dh_testdir | ||
+ | dh_testroot | ||
+ | dh_installdirs -s | ||
+ | test -d $(freeradius_dir)/ | ||
+ | ln -s rlm_sql.so $(freeradius_dir)/ | ||
+ | $(MAKE) install R=$(freeradius_dir) | ||
+ | |||
+ | # rename radius binary to play nicely with others | ||
+ | mv $(freeradius_dir)/ | ||
+ | mv $(freeradius_dir)/ | ||
+ | |||
+ | dh_install --sourcedir=$(freeradius_dir) -p libfreeradius2 | ||
+ | dh_install --sourcedir=$(freeradius_dir) -p libfreeradius-dev | ||
+ | |||
+ | for mod in ${modulelist}; do \ | ||
+ | pkg=$${mod## | ||
+ | dh_install --sourcedir=$(freeradius_dir) -p freeradius-$$pkg ; \ | ||
+ | rm -f $(freeradius_dir)/ | ||
+ | done | ||
+ | |||
+ | dh_install --sourcedir=$(freeradius_dir) -p freeradius-utils | ||
+ | dh_install --sourcedir=$(freeradius_dir) -p freeradius | ||
+ | |||
+ | dh_strip -a --dbg-package=freeradius-dbg | ||
+ | |||
+ | dh_makeshlibs -a -n | ||
+ | for pkg in ${pkgs} ; do \ | ||
+ | if dh_shlibdeps -p $$pkg -- -O 2>/ | ||
+ | echo "$$pkg links to openssl" | ||
+ | # exit 1 ;\ | ||
+ | fi ;\ | ||
+ | done | ||
+ | dh_shlibdeps | ||
+ | |||
+ | binary-common: | ||
+ | dh_testdir | ||
+ | dh_testroot | ||
+ | dh_installchangelogs | ||
+ | dh_installdocs | ||
+ | dh_installexamples | ||
+ | dh_installlogrotate | ||
+ | dh_installpam --name=radiusd | ||
+ | dh_installinit --noscripts | ||
+ | dh_installman | ||
+ | dh_lintian | ||
+ | dh_link | ||
+ | dh_compress -Xexamples | ||
+ | dh_fixperms | ||
+ | dh_installdeb | ||
+ | dh_gencontrol | ||
+ | dh_md5sums | ||
+ | dh_builddeb | ||
+ | |||
+ | # Build architecture independant packages using the common target. | ||
+ | binary-indep: | ||
+ | $(MAKE) -f debian/ | ||
+ | |||
+ | # Build architecture dependant packages using the common target. | ||
+ | binary-arch: | ||
+ | $(MAKE) -f debian/ | ||
+ | |||
+ | binary: binary-arch binary-indep | ||
+ | .PHONY: build clean binary-indep binary-arch binary install install-indep install-arch | ||
+ | </ | ||
+ | |||
+ | ==== Le fichier « control » ==== | ||
+ | Nous devons ici ajouter la dépendance à la librairie '' | ||
+ | < | ||
+ | Source: freeradius | ||
+ | <span class=" | ||
+ | Section: net | ||
+ | Priority: optional | ||
+ | Maintainer: Stephen Gran < | ||
+ | Uploaders: Mark Hymers < | ||
+ | Standards-Version: | ||
... | ... | ||
</ | </ | ||
- | Il nous reste à construire les binaires : | + | Et nous assurer qu' |
+ | aptitude install libssl-dev | ||
- | # cd ~/ | ||
- | # apt-src build freeradius | ||
- | ... | ||
- | ... | ||
- | ... | ||
- | I: Successfully built in / | ||
- | # ls -l | grep deb$ | ||
- | -rw-r--r-- 1 root root 761896 2007-01-11 18:10 freeradius_1.1.3-3tls_i386.deb | ||
- | -rw-r--r-- 1 root root 114398 2007-01-11 18:09 freeradius-dialupadmin_1.1.3-3tls_all.deb | ||
- | -rw-r--r-- 1 root root 31892 2007-01-11 18:10 freeradius-iodbc_1.1.3-3tls_i386.deb | ||
- | -rw-r--r-- 1 root root 32586 2007-01-11 18:10 freeradius-krb5_1.1.3-3tls_i386.deb | ||
- | -rw-r--r-- 1 root root 46894 2007-01-11 18:10 freeradius-ldap_1.1.3-3tls_i386.deb | ||
- | -rw-r--r-- 1 root root 31836 2007-01-11 18:10 freeradius-mysql_1.1.3-3tls_i386.deb | ||
- | -rw-r--r-- 1 root root 32280 2007-01-11 18:10 freeradius-postgresql_1.1.3-3tls_i386.deb | ||
- | Nous n' | + | ==== construction des binaires ==== |
+ | Il nous reste à construire les paquets binaires : | ||
+ | cd ~/ | ||
+ | apt-src build freeradius | ||
+ | Une fois la compilation terminée, normalement sans message d' | ||
+ | < | ||
+ | ls -l *.deb | ||
+ | <span class=" | ||
+ | -rw-r--r-- 1 root root 205030 fév 22 16:21 freeradius-common_2.0.4+dfsg-6_all.deb</ | ||
+ | -rw-r--r-- 1 root root 949458 fév 22 16:20 freeradius-dbg_2.0.4+dfsg-6_i386.deb | ||
+ | -rw-r--r-- 1 root root 132748 fév 22 16:21 freeradius-dialupadmin_2.0.4+dfsg-6_all.deb | ||
+ | -rw-r--r-- 1 root root 17184 fév 22 16:20 freeradius-iodbc_2.0.4+dfsg-6_i386.deb | ||
+ | -rw-r--r-- 1 root root 18082 fév 22 16:20 freeradius-krb5_2.0.4+dfsg-6_i386.deb | ||
+ | -rw-r--r-- 1 root root 34426 fév 22 16:20 freeradius-ldap_2.0.4+dfsg-6_i386.deb | ||
+ | <span class=" | ||
+ | -rw-r--r-- 1 root root 35364 fév 22 16:20 freeradius-postgresql_2.0.4+dfsg-6_i386.deb | ||
+ | <span class=" | ||
+ | -rw-r--r-- 1 root root 85212 fév 22 16:20 libfreeradius2_2.0.4+dfsg-6_i386.deb</ | ||
+ | -rw-r--r-- 1 root root 103672 fév 22 16:20 libfreeradius-dev_2.0.4+dfsg-6_i386.deb | ||
+ | </ | ||
- | # dpkg -i freeradius_1.1.3-3tls_i386.deb freeradius-mysql_1.1.3-3tls_i386.deb | + | ==== Installation des paquets utiles ==== |
+ | La commande '' | ||
+ | < | ||
+ | dpkg -i libfreeradius2_2.0.4+dfsg-6_i386.deb freeradius-common_2.0.4+dfsg-6_all.deb freeradius_2.0.4+dfsg-6_i386.deb freeradius-mysql_2.0.4+dfsg-6_i386.deb freeradius-utils_2.0.4+dfsg-6_i386.deb | ||
+ | </ | ||
- | Vérifions | + | ==== Se protéger des mises à jour de « aptitude » ==== |
+ | Si nous compilons maintenant le paquet binaire, nous obtiendrons des paquets ayant le même nom (version comprise), | ||
- | # ps aux | grep radius | + | Une solution consiste à utiliser l' |
- | | + | |
+ | De manière à obtenir le fichier '' | ||
+ | < | ||
+ | aptitude search | ||
+ | i | ||
+ | i | ||
+ | i | ||
+ | i | ||
+ | i | ||
+ | </ | ||
- | Nous devons maintenant préparer une base Mysql et configurer FreeRadius pour qu'il s'en serve. | + | Nous retrouvons dans le fichier |
- | ===== Configuration de Mysql ===== | + | < |
+ | cat packages | grep radius | ||
+ | freeradius install | ||
+ | freeradius-common install | ||
+ | freeradius-mysql install | ||
+ | freeradius-utils install | ||
+ | libfreeradius2 install | ||
+ | </ | ||
- | Nous supposons | + | Nous devons éditer ce fichier en remplaçant l' |
+ | < | ||
+ | cat packages | grep radius | ||
+ | freeradius hold | ||
+ | freeradius-common hold | ||
+ | freeradius-mysql hold | ||
+ | freeradius-utils hold | ||
+ | libfreeradius2 hold | ||
+ | </ | ||
- | # mysql -V | + | Il nous reste à entrer ces nouvelles informations dans la base de donnée des paquets installés : |
- | mysql Ver 14.12 Distrib 5.0.30, for pc-linux-gnu (i486) using readline 5.2 | + | |
- | Création de la Base « radius » et de l' | + | |
- | # mysql -u root -p | + | Si tout s'est bien passé, la vérification suivante doit donner : |
- | Enter password: | + | |
- | Welcome to the MySQL monitor. Commands end with ; or \g. | + | |
- | Your MySQL connection id is 12 | + | |
- | Server version: 5.0.30-Debian_3-log Debian etch distribution | + | |
- | + | ||
- | Type 'help;' or ' | + | |
- | + | ||
- | mysql> create database radius; | + | |
- | Query OK, 1 row affected (0.04 sec) | + | |
- | + | ||
- | mysql> grant all on radius.* to radius@' | + | |
- | Query OK, 0 rows affected (0.06 sec) | + | |
- | + | ||
- | mysql> exit | + | |
- | Bye | + | |
- | La base est créée mais elle reste vide. Pour créer les tables, le paquet | + | < |
+ | | ||
+ | ih freeradius | ||
+ | ih freeradius-common | ||
+ | ih | ||
+ | ih | ||
+ | ih libfreeradius2 | ||
+ | </code> | ||
- | # zcat / | + | Le '' |
- | Enter password: | + | |
- | # | + | |
- | Tout semble s'être correctement passé. Vérification : | + | ===== Configuration ===== |
+ | ==== Création de la base MySQL ==== | ||
+ | Nous voulons ici faire quelque chose de « simple ». Il sera toujours temps de compliquer les choses une fois que la solution minimale aura été validée. Notre base MySQL contiendra la liste des « utilisateurs » (chez nous des adresses MAC), la liste des « authenticators » (nos switchs et notre borne WI-FI) et éventuellement une liste d'utilisateurs autorisés à utiliser le WI-FI, nous verrons plus loin pourquoi. | ||
- | | + | FreeRADIUS n'aura donc à manipuler cette base qu'en lecture, il n'aura rien à écrire dedans. Nous allons donc créer une base '' |
- | Enter password: | + | |
- | Welcome to the MySQL monitor. Commands end with ; or \g. | + | Nous utilisons ici : |
- | Your MySQL connection id is 48 | + | # mysql -V |
- | Server version: 5.0.30-Debian_3-log Debian | + | mysql Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2 |
+ | |||
+ | Création de la base : | ||
+ | | ||
+ | Enter password: | ||
+ | Welcome to the MySQL monitor. | ||
+ | Your MySQL connection id is 42 | ||
+ | Server version: 5.0.51a-24 (Debian) | ||
| | ||
Type ' | Type ' | ||
| | ||
- | mysql> | + | mysql> |
- | | + | |
- | You can turn off this feature to get a quicker startup with -A | + | Création de l' |
- | | + | |
- | | + | |
- | | + | Pour la création des tables, FreeRADIUS propose des fichiers SQL qui vont nous aider ici. Ils se trouvent dans ''/ |
- | + | | |
- | mysql> show tables; | + | |
- | | + | |
- | | Tables_in_radius | | + | |
- | +------------------+ | + | |
- | | nas | | + | |
- | | radacct | + | |
- | | + | Le second s' |
- | | + | |
- | | + | |
- | | radpostauth | + | |
- | | + | |
- | | + | |
- | | + | |
- | 8 rows in set (0.00 sec) | + | |
- | + | ||
- | mysql> | + | |
- | ===== Configuration de FreeRadius ===== | + | Finalement, pour vérification : |
+ | < | ||
+ | # mysql -uroot -pepikoi radius | ||
+ | Reading table information for completion of table and column names | ||
+ | You can turn off this feature to get a quicker startup with -A | ||
- | ==== / | + | Welcome to the MySQL monitor. |
+ | Your MySQL connection id is 83 | ||
+ | Server version: 5.0.51a-24-log (Debian) | ||
- | Assurez-vous que seules les options définies dans ce qui suit sont activées (certaines options dans radiusd.conf sont à dé commenter, d'autres sont à commenter). | + | Type ' |
- | == Dans la section « authorize » : == | + | mysql> show tables; |
+ | +------------------+ | ||
+ | | Tables_in_radius | | ||
+ | +------------------+ | ||
+ | | nas | | ||
+ | | radacct | ||
+ | | radcheck | ||
+ | | radgroupcheck | ||
+ | | radgroupreply | ||
+ | | radpostauth | ||
+ | | radreply | ||
+ | | radusergroup | ||
+ | +------------------+ | ||
+ | 8 rows in set (0.00 sec) | ||
+ | </ | ||
- | authorize { | + | ==== Configuration de FreeRADIUS ==== |
- | | + | C'est maintenant que nous allons vraiment commencer à nous amuser. En effet il y a pas mal de fichiers qui ont été placés dans ''/ |
- | eap | + | |
- | sql | + | |
- | } | + | |
- | == Dans la section « authenticate » | + | Dans ''/ |
+ | < | ||
+ | # cat radiusd.conf | egrep -v -e ' | ||
+ | $INCLUDE proxy.conf | ||
+ | $INCLUDE clients.conf | ||
+ | $INCLUDE snmp.conf | ||
+ | $INCLUDE eap.conf | ||
+ | $INCLUDE policy.conf | ||
+ | $INCLUDE sites-enabled/ | ||
+ | </ | ||
- | authenticate { | + | Dans notre cas très simple : |
- | | + | * '' |
- | chap | + | * '' |
- | } | + | * '' |
- | eap | + | |
- | | + | |
- | == Dans la section « accounting » | + | En revanche |
+ | * '' | ||
+ | * '' | ||
- | accounting { | + | Il reste enfin le fichier '' |
- | detail | + | |
- | radutmp | + | |
- | | + | |
- | } | + | |
- | (Notez que cette section ne concerne pas l' | + | Au final, nous avons à voir et à modifier : |
+ | * ''/ | ||
+ | * ''/ | ||
+ | * ''/ | ||
+ | * ''/ | ||
- | == Dans la section « session » : == | + | Et nous supprimerons dans ''/ |
- | session { | + | Lorsque je vous disais qu'il y a de quoi s' |
- | sql | + | === radiusd.conf === |
- | | + | Première chose à faire : |
+ | cd / | ||
+ | | ||
- | Voici un exemple complet de configuration, | + | Deuxième chose à faire : **Lire le contenu de '' |
- | prefix = /usr | + | Troisième chose : |
- | | + | |
- | sysconfdir = /etc | + | De manière à ne pas se bousiller les yeux à chercher les lignes « utiles » dans la forêt de commentaires. |
- | localstatedir = /var | + | |
- | sbindir = ${exec_prefix}/ | + | |
- | logdir = / | + | |
- | raddbdir = / | + | |
- | radacctdir = ${logdir}/ | + | |
- | confdir = ${raddbdir} | + | |
- | run_dir = ${localstatedir}/ | + | |
- | log_file = ${logdir}/ | + | |
- | libdir = / | + | |
- | pidfile = ${run_dir}/ | + | |
- | user = freerad | + | |
- | group = freerad | + | |
- | max_request_time = 30 | + | |
- | delete_blocked_requests = no | + | |
- | cleanup_delay = 5 | + | |
- | max_requests = 1024 | + | |
- | bind_address = * | + | |
- | port = 0 | + | |
- | hostname_lookups = no | + | |
- | allow_core_dumps = no | + | |
- | regular_expressions | + | |
- | extended_expressions | + | |
- | log_stripped_names = no | + | |
- | log_auth = no | + | |
- | log_auth_badpass = no | + | |
- | log_auth_goodpass = no | + | |
- | usercollide = no | + | |
- | lower_user = no | + | |
- | lower_pass = no | + | |
- | nospace_user = no | + | |
- | nospace_pass = no | + | |
- | checkrad = ${sbindir}/ | + | |
- | security { | + | |
- | max_attributes = 200 | + | |
- | reject_delay = 1 | + | |
- | status_server = no | + | |
- | } | + | |
- | $INCLUDE | + | |
- | snmp = no | + | |
- | thread pool { | + | |
- | start_servers = 5 | + | |
- | max_servers = 32 | + | |
- | min_spare_servers = 3 | + | |
- | max_spare_servers = 10 | + | |
- | max_requests_per_server = 0 | + | |
- | } | + | |
- | modules { | + | |
- | chap { | + | |
- | authtype = CHAP | + | |
- | } | + | |
- | $INCLUDE ${confdir}/ | + | |
- | checkval { | + | |
- | item-name = Calling-Station-Id | + | |
- | check-name = Calling-Station-Id | + | |
- | data-type = string | + | |
- | } | + | |
- | | + | |
- | huntgroups = ${confdir}/ | + | |
- | hints = ${confdir}/ | + | |
- | with_ascend_hack = no | + | |
- | ascend_channels_per_line = 23 | + | |
- | with_ntdomain_hack = no | + | |
- | with_specialix_jetstream_hack = no | + | |
- | with_cisco_vsa_hack = no | + | |
- | } | + | |
- | files { | + | |
- | usersfile = ${confdir}/ | + | |
- | compat = no | + | |
- | } | + | |
- | detail { | + | |
- | detailfile = ${radacctdir}/ | + | |
- | detailperm = 0600 | + | |
- | } | + | |
- | acct_unique { | + | |
- | key = " | + | |
- | } | + | |
- | $INCLUDE | + | |
- | radutmp { | + | |
- | filename = ${logdir}/ | + | |
- | username = %{User-Name} | + | |
- | case_sensitive = yes | + | |
- | check_with_nas = yes | + | |
- | perm = 0600 | + | |
- | callerid = " | + | |
- | } | + | |
- | radutmp sradutmp { | + | |
- | filename = ${logdir}/ | + | |
- | perm = 0644 | + | |
- | callerid = " | + | |
- | } | + | |
- | attr_filter { | + | |
- | attrsfile = ${confdir}/ | + | |
- | } | + | |
- | counter daily { | + | |
- | filename = ${raddbdir}/ | + | |
- | key = User-Name | + | |
- | count-attribute = Acct-Session-Time | + | |
- | reset = daily | + | |
- | counter-name = Daily-Session-Time | + | |
- | check-name = Max-Daily-Session | + | |
- | allowed-servicetype = Framed-User | + | |
- | cache-size = 5000 | + | |
- | } | + | |
- | sqlcounter dailycounter { | + | |
- | counter-name = Daily-Session-Time | + | |
- | check-name = Max-Daily-Session | + | |
- | sqlmod-inst = sql | + | |
- | key = User-Name | + | |
- | reset = daily | + | |
- | query = " | + | |
- | | + | |
- | FROM radacct WHERE UserName=' | + | |
- | | + | |
- | } | + | |
- | sqlcounter monthlycounter { | + | |
- | counter-name = Monthly-Session-Time | + | |
- | check-name = Max-Monthly-Session | + | |
- | sqlmod-inst = sql | + | |
- | key = User-Name | + | |
- | reset = monthly | + | |
- | query = " | + | |
- | | + | |
- | FROM radacct WHERE UserName=' | + | |
- | | + | |
- | } | + | |
- | always fail { | + | |
- | rcode = fail | + | |
- | } | + | |
- | always reject { | + | |
- | rcode = reject | + | |
- | } | + | |
- | always ok { | + | |
- | rcode = ok | + | |
- | simulcount = 0 | + | |
- | mpp = no | + | |
- | } | + | |
- | expr { | + | |
- | } | + | |
- | digest { | + | |
- | } | + | |
- | exec { | + | |
- | wait = yes | + | |
- | input_pairs = request | + | |
- | } | + | |
- | exec echo { | + | |
- | wait = yes | + | |
- | program = "/ | + | |
- | input_pairs = request | + | |
- | output_pairs = reply | + | |
- | } | + | |
- | } | + | |
- | authorize { | + | |
- | preprocess | + | |
- | sql | + | |
- | eap | + | |
- | } | + | |
- | authenticate { | + | |
- | Auth-Type CHAP { | + | |
- | chap | + | |
- | } | + | |
- | eap | + | |
- | } | + | |
- | preacct { | + | |
- | preprocess | + | |
- | acct_unique | + | |
- | files | + | |
- | } | + | |
- | session { | + | |
- | sql | + | |
- | } | + | |
- | ==== / | + | Nous obtenons quelque chose qui ressemble à : |
- | Les fichiers de configuration de FreeRadius se trouvent dans / | + | |
< | < | ||
- | sql { | + | prefix = /usr |
- | | + | exec_prefix = /usr |
- | <span class=" | + | sysconfdir = /etc |
- | | + | localstatedir = /var |
- | | + | sbindir = ${exec_prefix}/ |
- | | + | logdir |
- | | + | raddbdir = / |
- | | + | radacctdir = ${logdir}/ |
- | | + | confdir = ${raddbdir} |
- | | + | run_dir = ${localstatedir}/ |
- | | + | db_dir = $(raddbdir) |
- | | + | libdir = / |
- | | + | pidfile = ${run_dir}/ |
- | | + | user = freerad |
- | | + | group = freerad |
- | | + | max_request_time = 30 |
- | | + | cleanup_delay = 5 |
- | | + | max_requests = 1024 |
- | | + | listen { |
- | | + | type = auth |
- | | + | ipaddr = * |
- | | + | port = 0 |
- | FROM ${authcheck_table} \ | + | } |
- | WHERE Username | + | listen { |
- | ORDER BY id" | + | ipaddr = * |
- | | + | port = 0 |
- | FROM ${authreply_table} \ | + | type = acct |
- | WHERE Username | + | } |
- | ORDER BY id" | + | hostname_lookups = no |
- | | + | allow_core_dumps = no |
- | | + | regular_expressions = yes |
- | | + | extended_expressions = yes |
- | | + | log { |
- | | + | destination = files |
- | | + | file = ${logdir}/ |
- | | + | syslog_facility = daemon |
- | | + | stripped_names = no |
- | | + | auth = no |
- | | + | auth_badpass = no |
- | | + | auth_goodpass = no |
- | | + | } |
- | | + | checkrad = ${sbindir}/ |
- | | + | security { |
- | | + | max_attributes = 200 |
- | | + | reject_delay = 1 |
- | | + | status_server = yes |
- | | + | } |
- | | + | <span class=" |
- | | + | #$INCLUDE proxy.conf |
- | | + | #$INCLUDE clients.conf</ |
- | | + | snmp = no |
- | | + | <span class="hly"># |
- | | + | thread pool { |
- | <span class=" | + | start_servers |
- | } | + | max_servers |
+ | min_spare_servers | ||
+ | max_spare_servers | ||
+ | max_requests_per_server | ||
+ | } | ||
+ | modules { | ||
+ | <span class="hly"># pap { | ||
+ | # | ||
+ | # | ||
+ | chap { | ||
+ | authtype | ||
+ | } | ||
+ | <span class="hly"># pam { | ||
+ | # | ||
+ | # } | ||
+ | # unix { | ||
+ | # | ||
+ | # | ||
+ | $INCLUDE eap.conf | ||
+ | mschap { | ||
+ | } | ||
+ | ldap { | ||
+ | server | ||
+ | basedn | ||
+ | filter | ||
+ | ldap_connections_number | ||
+ | timeout = 4 | ||
+ | timelimit = 3 | ||
+ | net_timeout = 1 | ||
+ | tls { | ||
+ | start_tls = no | ||
+ | } | ||
+ | dictionary_mapping | ||
+ | edir_account_policy_check = no | ||
+ | } | ||
+ | realm IPASS { | ||
+ | format = prefix | ||
+ | delimiter | ||
+ | } | ||
+ | realm suffix | ||
+ | format = suffix | ||
+ | delimiter = " | ||
+ | } | ||
+ | realm realmpercent { | ||
+ | format | ||
+ | delimiter = "%" | ||
+ | } | ||
+ | realm ntdomain | ||
+ | format = prefix | ||
+ | delimiter = " | ||
+ | } | ||
+ | checkval { | ||
+ | item-name = Calling-Station-Id | ||
+ | check-name = Calling-Station-Id | ||
+ | data-type = string | ||
+ | } | ||
+ | |||
+ | preprocess { | ||
+ | huntgroups | ||
+ | hints = ${confdir}/hints | ||
+ | with_ascend_hack = no | ||
+ | ascend_channels_per_line = 23 | ||
+ | with_ntdomain_hack = no | ||
+ | with_specialix_jetstream_hack = no | ||
+ | with_cisco_vsa_hack = no | ||
+ | } | ||
+ | files { | ||
+ | usersfile = ${confdir}/users | ||
+ | acctusersfile = ${confdir}/ | ||
+ | preproxy_usersfile = ${confdir}/ | ||
+ | compat = no | ||
+ | } | ||
+ | detail { | ||
+ | detailfile = ${radacctdir}/%{Client-IP-Address}/ | ||
+ | detailperm = 0600 | ||
+ | header = " | ||
+ | } | ||
+ | acct_unique { | ||
+ | key = "User-Name, Acct-Session-Id, | ||
+ | } | ||
+ | <span class=" | ||
+ | radutmp { | ||
+ | filename | ||
+ | username = %{User-Name} | ||
+ | case_sensitive = yes | ||
+ | check_with_nas = yes | ||
+ | perm = 0600 | ||
+ | callerid | ||
+ | } | ||
+ | radutmp sradutmp { | ||
+ | filename = ${logdir}/sradutmp | ||
+ | perm = 0644 | ||
+ | callerid = " | ||
+ | } | ||
+ | attr_filter attr_filter.post-proxy { | ||
+ | attrsfile = ${confdir}/attrs | ||
+ | } | ||
+ | attr_filter attr_filter.pre-proxy { | ||
+ | attrsfile = ${confdir}/attrs.pre-proxy | ||
+ | } | ||
+ | attr_filter attr_filter.access_reject { | ||
+ | key = %{User-Name} | ||
+ | attrsfile = ${confdir}/ | ||
+ | } | ||
+ | attr_filter attr_filter.accounting_response { | ||
+ | key = %{User-Name} | ||
+ | attrsfile = ${confdir}/attrs.accounting_response | ||
+ | } | ||
+ | counter daily { | ||
+ | filename | ||
+ | key = User-Name | ||
+ | count-attribute = Acct-Session-Time | ||
+ | reset = daily | ||
+ | counter-name = Daily-Session-Time | ||
+ | check-name = Max-Daily-Session | ||
+ | reply-name = Session-Timeout | ||
+ | allowed-servicetype = Framed-User | ||
+ | cache-size = 5000 | ||
+ | } | ||
+ | always fail { | ||
+ | rcode = fail | ||
+ | } | ||
+ | always reject { | ||
+ | rcode | ||
+ | } | ||
+ | always noop { | ||
+ | rcode = noop | ||
+ | } | ||
+ | always handled { | ||
+ | rcode | ||
+ | } | ||
+ | always updated | ||
+ | rcode = updated | ||
+ | } | ||
+ | always notfound { | ||
+ | rcode = notfound | ||
+ | } | ||
+ | always ok { | ||
+ | rcode = ok | ||
+ | simulcount | ||
+ | mpp = no | ||
+ | } | ||
+ | expr { | ||
+ | } | ||
+ | digest | ||
+ | } | ||
+ | expiration { | ||
+ | reply-message | ||
+ | } | ||
+ | logintime { | ||
+ | reply-message = "You are calling outside your allowed timespan\r\n" | ||
+ | minimum-timeout = 60 | ||
+ | } | ||
+ | exec { | ||
+ | wait = yes | ||
+ | input_pairs = request | ||
+ | shell_escape = yes | ||
+ | output = none | ||
+ | } | ||
+ | exec echo { | ||
+ | wait = yes | ||
+ | program = "/ | ||
+ | input_pairs = request | ||
+ | output_pairs = reply | ||
+ | shell_escape = yes | ||
+ | } | ||
+ | ippool main_pool | ||
+ | range-start = 192.168.1.1 | ||
+ | range-stop = 192.168.3.254 | ||
+ | netmask = 255.255.255.0 | ||
+ | cache-size = 800 | ||
+ | session-db = ${db_dir}/ | ||
+ | ip-index = ${db_dir}/db.ipindex | ||
+ | override | ||
+ | maximum-timeout | ||
+ | } | ||
+ | policy { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | instantiate { | ||
+ | exec | ||
+ | expr | ||
+ | expiration | ||
+ | logintime | ||
+ | } | ||
+ | $INCLUDE policy.conf | ||
+ | $INCLUDE sites-enabled/ | ||
</ | </ | ||
- | ==== /etc/ | + | Il y a dans ce fichier plein de choses que nous pourrions enlever car elles ne nous servent à rien (dans notre cas...). Les lignes surlignées montrent ce qu'il est nécessaire de modifier pour nos besoins. |
+ | |||
+ | === sites-avalable/ | ||
+ | Assez peu de choses dans ce fichier, compte tenu de la simplicité de nos besoins : | ||
+ | < | ||
+ | authorize { | ||
+ | preprocess | ||
+ | eap { | ||
+ | ok = return | ||
+ | } | ||
+ | sql | ||
+ | } | ||
+ | authenticate { | ||
+ | Auth-Type CHAP { | ||
+ | chap | ||
+ | } | ||
+ | eap | ||
+ | } | ||
+ | session { | ||
+ | sql | ||
+ | } | ||
+ | </pre></html> | ||
+ | |||
+ | === eap.conf === | ||
+ | Il s'agit d' | ||
Nous avons décidé, en préparant notre système Wi-Fi, d' | Nous avons décidé, en préparant notre système Wi-Fi, d' | ||
Ligne 486: | Ligne 822: | ||
* sysop@maison.mrs-cert.pem qui est le certificat du serveur FreeRADIUS. Nous l' | * sysop@maison.mrs-cert.pem qui est le certificat du serveur FreeRADIUS. Nous l' | ||
- | Nous allons utiliser ici ces deux certificats, | + | Nous allons utiliser ici ces deux certificats, |
- | / | + | De même, nous pouvons y créer le fichier '' |
- | total 12 | + | |
- | -rw-r----- 1 root freerad | + | Ainsi qu'un fichier '' |
- | | + | |
- | | + | |
- | -rw-r----- 1 root freerad 2610 2007-03-12 15:25 root_maison_CA-cacert.pem | + | |
- | Faites attention aux droits d' | + | Ce répertoire devrait finalement contenir : |
+ | < | ||
+ | / | ||
+ | total 12 | ||
+ | -rw-r----- 1 root freerad | ||
+ | -rw-r----- 1 root freerad 3242 2007-03-12 15:38 maison.mrs-cert.pem | ||
+ | -rw-r----- 1 root freerad 1024 2007-03-12 11:11 random | ||
+ | -rw-r----- 1 root freerad 2610 2007-03-12 15:25 root_maison_CA-cacert.pem | ||
+ | </ | ||
+ | Faites attention aux droits d' | ||
+ | < | ||
+ | eap { | ||
+ | default_eap_type = tls | ||
+ | timer_expire | ||
+ | ignore_unknown_eap_types = no | ||
+ | cisco_accounting_username_bug = no | ||
+ | tls { | ||
+ | private_key_password = epikoi | ||
+ | private_key_file = ${raddbdir}/ | ||
+ | certificate_file = ${raddbdir}/ | ||
+ | CA_file = ${raddbdir}/ | ||
+ | CA_path = ${raddbdir}/ | ||
+ | dh_file = ${raddbdir}/ | ||
+ | random_file = ${raddbdir}/ | ||
+ | fragment_size = 1024 | ||
+ | include_length = yes | ||
+ | check_crl = no | ||
+ | } | ||
- | eap { | + | mschapv2 |
- | | + | } |
- | timer_expire | + | } |
- | ignore_unknown_eap_types = no | + | </pre></html> |
- | cisco_accounting_username_bug = no | + | |
- | tls { | + | |
- | private_key_password = epikoi | + | |
- | private_key_file = ${raddbdir}/ | + | |
- | | + | |
- | | + | |
- | CA_path = ${raddbdir}/ | + | |
- | dh_file = ${raddbdir}/ | + | |
- | random_file = ${raddbdir}/ | + | |
- | fragment_size = 1024 | + | |
- | include_length = yes | + | |
- | check_crl = no | + | |
- | } | + | |
- | } | + | |
- | N'oublions pas de relancer FreeRadius pour qu'il prenne en compte la nouvelle configuration. | + | === sql.conf === |
+ | Nous avons une base MySQL '' | ||
+ | < | ||
+ | sql { | ||
+ | database = " | ||
+ | driver = " | ||
+ | server = " | ||
+ | login = " | ||
+ | password = " | ||
+ | radius_db = " | ||
+ | acct_table1 = " | ||
+ | acct_table2 = " | ||
+ | postauth_table = " | ||
+ | authcheck_table = " | ||
+ | authreply_table = " | ||
+ | groupcheck_table = " | ||
+ | groupreply_table = " | ||
+ | usergroup_table = " | ||
+ | deletestalesessions = yes | ||
+ | sqltrace = no | ||
+ | sqltracefile = ${logdir}/ | ||
+ | num_sql_socks = 5 | ||
+ | connect_failure_retry_delay = 60 | ||
+ | nas_table = " | ||
+ | $INCLUDE sql/ | ||
+ | readclients = yes | ||
+ | } | ||
+ | </ | ||
+ | Le fichier inclus | ||
- | ===== Premier test ===== | + | ===== Vérifions... |
- | Nous créons un « authenticator » | + | ==== Essai chap ==== |
+ | Nous créons un « authenticator » de test dans la table « nas » : | ||
- | | + | echo " |
- | | mysql -u root -p radius | + | |
- | Nous créons un utilisateur de test dans « radcheck » : | + | Nous créons un utilisateur de test dans « radcheck » : |
- | | + | echo " |
- | | mysql -u root -p radius | + | |
- | Notez que l'on utilise un mot de passe en clair dans la base, ce qui correspondra à un protocole « chap » pour l'authentification. | + | Enfin nous démarrons freeradius |
+ | freeradius -X | ||
+ | |||
+ | Le mode « debug » s'avère très volubile, mais instructif : | ||
- | Enfin, depuis le serveur radius lui-même, qui va pour l' | ||
< | < | ||
- | # radtest test0 userpassword 127.0.0.1 0 naspassword | + | FreeRADIUS Version 2.0.4, for host i486-pc-linux-gnu, |
- | Sending Access-Request of id 146 to 127.0.0.1 port 1812 | + | Copyright (C) 1999-2008 The FreeRADIUS server project and contributors. |
- | User-Name = "test0" | + | There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A |
- | User-Password | + | PARTICULAR PURPOSE. |
- | NAS-IP-Address | + | You may redistribute copies of FreeRADIUS under the terms of the |
- | NAS-Port = 0 | + | GNU General Public License. |
- | <span class="hly"> | + | Starting - reading configuration files ... |
+ | <span class=" | ||
+ | including configuration file / | ||
+ | including configuration file / | ||
+ | including configuration file / | ||
+ | including configuration file / | ||
+ | including files in directory / | ||
+ | including configuration file / | ||
+ | including dictionary file / | ||
+ | main { | ||
+ | prefix = "/ | ||
+ | localstatedir = "/ | ||
+ | logdir = "/ | ||
+ | libdir = "/ | ||
+ | radacctdir = "/ | ||
+ | hostname_lookups = no | ||
+ | max_request_time = 30 | ||
+ | cleanup_delay = 5 | ||
+ | max_requests = 1024 | ||
+ | allow_core_dumps = no | ||
+ | pidfile = "/ | ||
+ | user = " | ||
+ | group = " | ||
+ | checkrad = "/ | ||
+ | debug_level = 0 | ||
+ | proxy_requests = yes | ||
+ | | ||
+ | max_attributes = 200 | ||
+ | reject_delay = 1 | ||
+ | status_server = yes | ||
+ | } | ||
+ | } | ||
+ | radiusd: #### Loading Realms and Home Servers #### | ||
+ | radiusd: #### Instantiating modules #### | ||
+ | | ||
+ | | ||
+ | | ||
+ | exec { | ||
+ | wait = yes | ||
+ | input_pairs = " | ||
+ | shell_escape = yes | ||
+ | } | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | expiration { | ||
+ | reply-message = " | ||
+ | } | ||
+ | | ||
+ | | ||
+ | logintime { | ||
+ | reply-message = "You are calling outside your allowed timespan | ||
+ | minimum-timeout = 60 | ||
+ | } | ||
+ | } | ||
+ | radiusd: #### Loading Virtual Servers #### | ||
+ | server { | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | eap { | ||
+ | default_eap_type = " | ||
+ | timer_expire = 60 | ||
+ | ignore_unknown_eap_types = no | ||
+ | cisco_accounting_username_bug = no | ||
+ | } | ||
+ | | ||
+ | | ||
+ | tls { | ||
+ | rsa_key_exchange = no | ||
+ | dh_key_exchange = yes | ||
+ | rsa_key_length = 512 | ||
+ | dh_key_length = 512 | ||
+ | verify_depth = 0 | ||
+ | CA_path = "/ | ||
+ | pem_file_type = yes | ||
+ | private_key_file = "/ | ||
+ | certificate_file = "/ | ||
+ | CA_file = "/ | ||
+ | private_key_password = " | ||
+ | dh_file = "/ | ||
+ | random_file = "/ | ||
+ | fragment_size = 1024 | ||
+ | include_length = yes | ||
+ | check_crl = no | ||
+ | } | ||
+ | | ||
+ | | ||
+ | | ||
+ | with_ntdomain_hack = no | ||
+ | } | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | preprocess { | ||
+ | huntgroups = "/ | ||
+ | hints = "/ | ||
+ | with_ascend_hack = no | ||
+ | ascend_channels_per_line = 23 | ||
+ | with_ntdomain_hack = no | ||
+ | with_specialix_jetstream_hack = no | ||
+ | with_cisco_vsa_hack = no | ||
+ | with_alvarion_vsa_hack = no | ||
+ | } | ||
+ | | ||
+ | | ||
+ | sql { | ||
+ | driver = " | ||
+ | server = " | ||
+ | port = "" | ||
+ | login = " | ||
+ | password = " | ||
+ | radius_db = " | ||
+ | read_groups = yes | ||
+ | sqltrace = yes | ||
+ | sqltracefile = "/ | ||
+ | readclients = yes | ||
+ | deletestalesessions = yes | ||
+ | num_sql_socks = 5 | ||
+ | sql_user_name = "%{User-Name}" | ||
+ | default_user_profile | ||
+ | nas_query = " | ||
+ | authorize_check_query = " | ||
+ | authorize_reply_query | ||
+ | authorize_group_check_query = " | ||
+ | authorize_group_reply_query = " | ||
+ | accounting_onoff_query | ||
+ | accounting_update_query = "" | ||
+ | accounting_update_query_alt = "" | ||
+ | accounting_start_query = "" | ||
+ | accounting_start_query_alt = "" | ||
+ | accounting_stop_query = "" | ||
+ | accounting_stop_query_alt = "" | ||
+ | group_membership_query = " | ||
+ | connect_failure_retry_delay | ||
+ | simul_count_query | ||
+ | simul_verify_query = "" | ||
+ | postauth_query = " | ||
+ | safe-characters = " | ||
+ | } | ||
+ | rlm_sql (sql): Driver rlm_sql_mysql (module rlm_sql_mysql) loaded and linked | ||
+ | rlm_sql (sql): Attempting to connect to radius@localhost:/ | ||
+ | rlm_sql (sql): starting 0 | ||
+ | rlm_sql (sql): Attempting to connect rlm_sql_mysql #0 | ||
+ | rlm_sql_mysql: | ||
+ | rlm_sql (sql): Connected new DB handle, #0 | ||
+ | rlm_sql (sql): starting 1 | ||
+ | rlm_sql (sql): Attempting to connect rlm_sql_mysql #1 | ||
+ | rlm_sql_mysql: | ||
+ | rlm_sql (sql): Connected new DB handle, #1 | ||
+ | rlm_sql (sql): starting 2 | ||
+ | rlm_sql (sql): Attempting to connect rlm_sql_mysql #2 | ||
+ | rlm_sql_mysql: | ||
+ | rlm_sql (sql): Connected new DB handle, #2 | ||
+ | rlm_sql (sql): starting 3 | ||
+ | rlm_sql (sql): Attempting to connect rlm_sql_mysql #3 | ||
+ | rlm_sql_mysql: | ||
+ | rlm_sql (sql): Connected new DB handle, #3 | ||
+ | rlm_sql (sql): starting 4 | ||
+ | rlm_sql (sql): Attempting to connect rlm_sql_mysql #4 | ||
+ | rlm_sql_mysql: | ||
+ | rlm_sql (sql): Connected new DB handle, #4 | ||
+ | rlm_sql (sql): Processing generate_sql_clients | ||
+ | rlm_sql (sql) in generate_sql_clients: | ||
+ | rlm_sql (sql): Reserving sql socket id: 4 | ||
+ | rlm_sql_mysql: | ||
+ | rlm_sql (sql): Read entry nasname=127.0.0.1, | ||
+ | rlm_sql (sql): Adding client 127.0.0.1 (localhost, server=< | ||
+ | rlm_sql (sql): Released sql socket | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | radiusd: #### Opening IP addresses and Ports #### | ||
+ | listen { | ||
+ | type = " | ||
+ | ipaddr | ||
+ | port = 0 | ||
+ | } | ||
+ | listen { | ||
+ | type = " | ||
+ | ipaddr = * | ||
+ | port = 0 | ||
+ | } | ||
+ | main { | ||
+ | snmp = no | ||
+ | smux_password = "" | ||
+ | snmp_write_access = no | ||
+ | } | ||
+ | <span class=" | ||
+ | Listening on accounting address * port 1813 | ||
+ | Listening on proxy address * port 1814 | ||
+ | Ready to process requests.</ | ||
</ | </ | ||
- | Notre solution fonctionne. Il ne nous reste qu'à ajouter | + | Notez la liste de tous les fichiers inclus, en cas de problème. Notez également que le serveur, si rien n'a coincé |
+ | Dans une autre console, nous allons essayer une authentification avec l' | ||
+ | radtest test0 userpassword 127.0.0.1 0 naspassword | ||
+ | |||
+ | Nous devrions obtenir la réponse : | ||
+ | < | ||
+ | Sending Access-Request of id 197 to 127.0.0.1 port 1812 | ||
+ | User-Name = " | ||
+ | User-Password = " | ||
+ | NAS-IP-Address = 127.0.1.1 | ||
+ | NAS-Port = 0 | ||
+ | <span class=" | ||
+ | </ | ||
+ | |||
+ | Dans la console où s' | ||
+ | |||
+ | < | ||
+ | <span class=" | ||
+ | User-Name = " | ||
+ | User-Password = " | ||
+ | NAS-IP-Address = 127.0.1.1 | ||
+ | NAS-Port = 0 | ||
+ | +- entering group authorize | ||
+ | ++[preprocess] returns ok | ||
+ | rlm_eap: No EAP-Message, | ||
+ | ++[eap] returns noop | ||
+ | expand: %{User-Name} -> test0 | ||
+ | rlm_sql (sql): sql_set_user escaped user --> ' | ||
+ | rlm_sql (sql): Reserving sql socket id: 3 | ||
+ | expand: SELECT id, username, attribute, value, op FROM radcheck WHERE username = ' | ||
+ | <span class=" | ||
+ | rlm_sql (sql): User found in radcheck table</ | ||
+ | expand: SELECT id, username, attribute, value, op FROM radreply WHERE username = ' | ||
+ | rlm_sql_mysql: | ||
+ | expand: SELECT groupname FROM radusergroup WHERE username = ' | ||
+ | rlm_sql_mysql: | ||
+ | rlm_sql (sql): Released sql socket id: 3 | ||
+ | ++[sql] returns ok | ||
+ | <span class=" | ||
+ | auth: user supplied User-Password matches local User-Password | ||
+ | Login OK: [test0/ | ||
+ | Sending Access-Accept of id 197 to 127.0.0.1 port 50494</ | ||
+ | Finished request 0. | ||
+ | Going to the next request | ||
+ | Waking up in 4.9 seconds. | ||
+ | Cleaning up request 0 ID 197 with timestamp +6 | ||
+ | Ready to process requests. | ||
+ | </ | ||
+ | |||
+ | Notre authentification par nom d' |
FreeRADIUS: Dernière modification le: 21/03/2009 à 15:17 par