680981e25444f846136f40e452ed8c2e64b69d72
Services/RADIUS.md
... | ... | @@ -1,4 +1,4 @@ |
1 | -Remote Authentication Dial-In User Service (RADIUS) |
|
1 | + Remote Authentication Dial-In User Service (RADIUS) |
|
2 | 2 | ============================================= |
3 | 3 | |
4 | 4 | # Généralités |
... | ... | @@ -110,25 +110,216 @@ les serveurs virtuels. |
110 | 110 | La configuration de freeradius est versionnée et disponible sur le [git](git.resel.fr). |
111 | 111 | **(bon en fait c'est pas encore fait, mais je m'en occupe très bientôt)** |
112 | 112 | |
113 | -### Cas de Beowulf, Rescuerad et Wifiradix (Wi-Fi) |
|
113 | +### Configuration d'un serveur RADIUS pour authentification **PEAPv0/EAP-MSCHAPv2** |
|
114 | 114 | |
115 | -La connection Wi-Fi est configurée pour du **PEAPv0/EAP-MSCHAPv2**. |
|
115 | +C'est le serveur configuré sur Beowulf, Rescuerad et Wifiradix. |
|
116 | +La documentation disponible sur internet pour la version 2.x pour réaliser ce type de serveur |
|
117 | +est assez succinte, dans la version 3.x elle est inexistante à l'heure actuelle. Je vais essayer |
|
118 | +de détailler ce que j'ai réussi à comprendre ici, mais des erreurs peuvent se glisser dans les |
|
119 | +explications. |
|
116 | 120 | |
117 | -#### Serveurs virtuels |
|
121 | +#### Configuration de base |
|
118 | 122 | |
119 | -Deux serveurs virtuels sont configurés dans mods-enabled: il s'agit de `default` et `inner-tunnel`. |
|
123 | +Rien de particulier dans ces fichiers, simplement configurer un client `localhost` dans `clients.conf` |
|
124 | +permettra de tester la configuration (voir sections suivantes). |
|
125 | + |
|
126 | +#### Serveurs virtuels |
|
127 | + |
|
128 | +Deux serveurs virtuels sont nécessaires : `default` et `inner-tunnel`. |
|
120 | 129 | Le premier réponds aux requêtes Radius provenant des bornes wifi. Le second est utilisé par le module |
121 | 130 | EAP pour réaliser l'authentification MS-CHAPv2. Il ne réponds donc que aux requêtes locales (en provenance de |
122 | 131 | la machine hôte du Radius). |
123 | 132 | |
133 | +On a donc, dans le répertoire `sites-enabled`, deux fichiers nommmés `default` et `inner-tunnel` |
|
134 | + |
|
124 | 135 | ##### default |
136 | +La configuration complète de ce serveur virtuel est disponible [ici](Services/RADIUS/config/PEAPv0/sites-enabled/default) |
|
137 | + |
|
138 | +Points-clefs, dans l'ordre: |
|
139 | + |
|
140 | +``` |
|
141 | +listen{ |
|
142 | + type = auth |
|
143 | + ipaddr = * |
|
144 | + port = 1812 |
|
145 | +} |
|
146 | +``` |
|
147 | +On configure un serveur virtuel qui va répondre aux requêtes en provenance de toutes les ip. |
|
148 | +(en réalité on définit les clients dans le fichier correspondant, voir plus haut) |
|
149 | + |
|
150 | +``` |
|
151 | +authorize { |
|
152 | + if (User-Name !~ /resel(.*)$/) { |
|
153 | + if (User-Name =~ /^(.*)@(.*)/) { |
|
154 | + update control { |
|
155 | + Proxy-To-Realm := 'FEDEREZ' |
|
156 | + } |
|
157 | + } |
|
158 | + } |
|
159 | + |
|
160 | + ...... |
|
161 | +} |
|
162 | +``` |
|
163 | +Authentification pour les utilisateurs externes au ResEl mais faisant partit d'un réseau partenaire Federez (je ne sais pas si ça fonctionne toujours) |
|
164 | + |
|
165 | +``` |
|
166 | +authorize{ |
|
167 | +... |
|
168 | + |
|
169 | +eap { |
|
170 | + ok = return |
|
171 | +} |
|
172 | + |
|
173 | +... |
|
174 | +} |
|
175 | +``` |
|
176 | +Permet l'exécution de requêtes de type EAP |
|
177 | + |
|
178 | +``` |
|
179 | +authorize{ |
|
180 | +... |
|
181 | + |
|
182 | +files |
|
183 | + |
|
184 | +... |
|
185 | +} |
|
186 | +``` |
|
187 | +Permet l'authentification avec le modules files (fichier `users` dans les versions de freeradius antérieures à la 3.x). |
|
188 | +Nagios et ???? se connectent au Radius via ce module. |
|
189 | + |
|
190 | + |
|
191 | + |
|
192 | +``` |
|
193 | +authenticate{ |
|
194 | +... |
|
195 | + |
|
196 | +eap |
|
197 | + |
|
198 | +... |
|
199 | +} |
|
200 | +``` |
|
201 | +Liste le module eap parmi les modules utilisables pour l'authentification. |
|
202 | + |
|
125 | 203 | |
126 | 204 | ##### inner-tunnel |
127 | 205 | |
206 | +La configuration complète de ce serveur virtuel est disponible [ici](Services/RADIUS/config/PEAPv0/sites-enabled/inner-tunnel) |
|
207 | + |
|
208 | +Points-clefs, dans l'ordre: |
|
209 | + |
|
210 | +``` |
|
211 | +listen { |
|
212 | + ipaddr = 127.0.0.1 |
|
213 | + port = 18120 |
|
214 | + type = auth |
|
215 | +} |
|
216 | +``` |
|
217 | +Le serveur virtuel n'écoute que les requêtes locales, en provenance de la machine elle-même. |
|
218 | + |
|
219 | +``` |
|
220 | +authorize { |
|
221 | + |
|
222 | + mschap |
|
223 | + |
|
224 | + ... |
|
225 | +} |
|
226 | +``` |
|
227 | +Utilise le module mschap pour l'authentification. |
|
228 | + |
|
229 | + |
|
230 | +``` |
|
231 | +authorize { |
|
232 | + |
|
233 | + ... |
|
234 | + |
|
235 | + ldap |
|
236 | + pap |
|
237 | +} |
|
238 | +``` |
|
239 | +Utilise le LDAP pour trouver le mot de passe. Je ne sais pas pourquoi `pap` est listé aussi, quoi qu'il en soit si je ne le met pas après `ldap` une erreur bizarre apparait. |
|
240 | + |
|
241 | +``` |
|
242 | +authenticate { |
|
243 | + |
|
244 | + Auth-Type MS-CHAP { |
|
245 | + mschap |
|
246 | + } |
|
247 | +} |
|
248 | +``` |
|
249 | +Autorise le module mschap |
|
250 | + |
|
128 | 251 | |
129 | 252 | |
130 | 253 | #### Modules utilisés |
131 | 254 | |
255 | +De nombreux modules sont actvés, beaucoup sont activés par défault et leur config n'a |
|
256 | +pas été modifié. Elles ne seront pas détaillées ici. |
|
257 | + |
|
258 | +``` |
|
259 | +18:53 root@beowulf ~ # ls ~freerad/3.0/mods-enabled |
|
260 | +always@ digest@ expr@ mschap@ realm@ utf8@ |
|
261 | +attr_filter@ dynamic_clients@ files ntlm_auth@ replicate@ |
|
262 | +cache_eap@ eap ldap@ pap@ soh@ |
|
263 | +chap@ echo@ passwd@ sradutmp@ |
|
264 | +detail@ exec@ linelog@ preprocess@ unix@ |
|
265 | +detail.log@ expiration@ logintime@ radutmp@ unpack@ |
|
266 | + |
|
267 | +``` |
|
268 | + |
|
269 | +##### eap |
|
270 | + |
|
271 | +``` |
|
272 | +eap { |
|
273 | + default_eap_type = peap |
|
274 | + timer_expire = 60 |
|
275 | + ignore_unknown_eap_types = no |
|
276 | + cisco_accounting_username_bug = no |
|
277 | + max_sessions = 4096 |
|
278 | + |
|
279 | + tls-config tls-common { |
|
280 | + certdir = ${confdir}/certs |
|
281 | + cadir = ${confdir}/certs |
|
282 | + |
|
283 | + |
|
284 | + private_key_file = ${certdir}/wifi/2017/resel-fr.key |
|
285 | + certificate_file = ${certdir}/wifi/2017/resel-chained.pem |
|
286 | + dh_file = ${certdir}/dh |
|
287 | + random_file = /dev/urandom |
|
288 | + fragment_size = 1024 |
|
289 | + include_length = yes |
|
290 | + ca_path = ${cadir}/empty |
|
291 | + |
|
292 | + } |
|
293 | + |
|
294 | + |
|
295 | + |
|
296 | + ttls { |
|
297 | + tls = tls-common |
|
298 | + |
|
299 | + default_eap_type = mschapv2 |
|
300 | + copy_request_to_tunnel = yes |
|
301 | + use_tunneled_reply =yes |
|
302 | + virtual_server = "inner-tunnel" |
|
303 | + include_length = yes |
|
304 | + } |
|
305 | + peap { |
|
306 | + tls = tls-common |
|
307 | + |
|
308 | + default_eap_type = mschapv2 |
|
309 | + copy_request_to_tunnel = yes |
|
310 | + use_tunneled_reply = yes |
|
311 | + virtual_server = "inner-tunnel" |
|
312 | + } |
|
313 | + mschapv2 { |
|
314 | + send_error = yes |
|
315 | + } |
|
316 | +} |
|
317 | + |
|
318 | +``` |
|
319 | + |
|
320 | +##### ldap |
|
321 | + |
|
322 | +la configuration complète du module est disponible [ici](Services/RADIUS/config/PEAPv0/mods-enabled/ldap) |
|
132 | 323 | |
133 | 324 | ### Cas de Beaune |
134 | 325 | TODO |