Subversion Repositories configs

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 - 1
######################################################################
2
#
3
#	As of 2.0.0, FreeRADIUS supports virtual hosts using the
4
#	"server" section, and configuration directives.
5
#
6
#	Virtual hosts should be put into the "sites-available"
7
#	directory.  Soft links should be created in the "sites-enabled"
8
#	directory to these files.  This is done in a normal installation.
9
#
10
#	If you are using 802.1X (EAP) authentication, please see also
11
#	the "inner-tunnel" virtual server.  You wll likely have to edit
12
#	that, too, for authentication to work.
13
#
14
#	$Id$
15
#
16
######################################################################
17
#
18
#	Read "man radiusd" before editing this file.  See the section
19
#	titled DEBUGGING.  It outlines a method where you can quickly
20
#	obtain the configuration you want, without running into
21
#	trouble.  See also "man unlang", which documents the format
22
#	of this file.
23
#
24
#	This configuration is designed to work in the widest possible
25
#	set of circumstances, with the widest possible number of
26
#	authentication methods.  This means that in general, you should
27
#	need to make very few changes to this file.
28
#
29
#	The best way to configure the server for your local system
30
#	is to CAREFULLY edit this file.  Most attempts to make large
31
#	edits to this file will BREAK THE SERVER.  Any edits should
32
#	be small, and tested by running the server with "radiusd -X".
33
#	Once the edits have been verified to work, save a copy of these
34
#	configuration files somewhere.  (e.g. as a "tar" file).  Then,
35
#	make more edits, and test, as above.
36
#
37
#	There are many "commented out" references to modules such
38
#	as ldap, sql, etc.  These references serve as place-holders.
39
#	If you need the functionality of that module, then configure
40
#	it in radiusd.conf, and un-comment the references to it in
41
#	this file.  In most cases, those small changes will result
42
#	in the server being able to connect to the DB, and to
43
#	authenticate users.
44
#
45
######################################################################
46
 
47
#
48
#	In 1.x, the "authorize", etc. sections were global in
49
#	radiusd.conf.  As of 2.0, they SHOULD be in a server section.
50
#
51
#	The server section with no virtual server name is the "default"
52
#	section.  It is used when no server name is specified.
53
#
54
#	We don't indent the rest of this file, because doing so
55
#	would make it harder to read.
56
#
57
 
58
#  Authorization. First preprocess (hints and huntgroups files),
59
#  then realms, and finally look in the "users" file.
60
#
61
#  Any changes made here should also be made to the "inner-tunnel"
62
#  virtual server.
63
#
64
#  The order of the realm modules will determine the order that
65
#  we try to find a matching realm.
66
#
67
#  Make *sure* that 'preprocess' comes before any realm if you
68
#  need to setup hints for the remote radius server
69
authorize {
70
	#
71
	#  Security settings.  Take a User-Name, and do some simple
72
	#  checks on it, for spaces and other invalid characters.  If
73
	#  it looks like the user is trying to play games, reject it.
74
	#
75
	#  This should probably be enabled by default.
76
	#
77
	#  See policy.conf for the definition of the filter_username policy.
78
	#
79
#	filter_username
80
 
81
	#
82
	#  The preprocess module takes care of sanitizing some bizarre
83
	#  attributes in the request, and turning them into attributes
84
	#  which are more standard.
85
	#
86
	#  It takes care of processing the 'raddb/hints' and the
87
	#  'raddb/huntgroups' files.
88
	preprocess
89
 
90
	#
91
	#  If you want to have a log of authentication requests,
92
	#  un-comment the following line, and the 'detail auth_log'
93
	#  section, above.
94
#	auth_log
95
 
96
	#
97
	#  The chap module will set 'Auth-Type := CHAP' if we are
98
	#  handling a CHAP request and Auth-Type has not already been set
99
	chap
100
 
101
	#
102
	#  If the users are logging in with an MS-CHAP-Challenge
103
	#  attribute for authentication, the mschap module will find
104
	#  the MS-CHAP-Challenge attribute, and add 'Auth-Type := MS-CHAP'
105
	#  to the request, which will cause the server to then use
106
	#  the mschap module for authentication.
107
	mschap
108
 
109
	#
110
	#  If you have a Cisco SIP server authenticating against
111
	#  FreeRADIUS, uncomment the following line, and the 'digest'
112
	#  line in the 'authenticate' section.
113
	digest
114
 
115
	#
116
	#  The WiMAX specification says that the Calling-Station-Id
117
	#  is 6 octets of the MAC.  This definition conflicts with
118
	#  RFC 3580, and all common RADIUS practices.  Un-commenting
119
	#  the "wimax" module here means that it will fix the
120
	#  Calling-Station-Id attribute to the normal format as
121
	#  specified in RFC 3580 Section 3.21
122
#	wimax
123
 
124
	#
125
	#  Look for IPASS style 'realm/', and if not found, look for
126
	#  '@realm', and decide whether or not to proxy, based on
127
	#  that.
128
#	IPASS
129
 
130
	#
131
	#  If you are using multiple kinds of realms, you probably
132
	#  want to set "ignore_null = yes" for all of them.
133
	#  Otherwise, when the first style of realm doesn't match,
134
	#  the other styles won't be checked.
135
	#
136
	suffix
137
#	ntdomain
138
 
139
	#
140
	#  This module takes care of EAP-MD5, EAP-TLS, and EAP-LEAP
141
	#  authentication.
142
	#
143
	#  It also sets the EAP-Type attribute in the request
144
	#  attribute list to the EAP type from the packet.
145
	#
146
	#  As of 2.0, the EAP module returns "ok" in the authorize stage
147
	#  for TTLS and PEAP.  In 1.x, it never returned "ok" here, so
148
	#  this change is compatible with older configurations.
149
	#
150
	#  The example below uses module failover to avoid querying all
151
	#  of the following modules if the EAP module returns "ok".
152
	#  Therefore, your LDAP and/or SQL servers will not be queried
153
	#  for the many packets that go back and forth to set up TTLS
154
	#  or PEAP.  The load on those servers will therefore be reduced.
155
	#
156
	eap {
157
		ok = return
158
	}
159
 
160
	#
161
	#  Pull crypt'd passwords from /etc/passwd or /etc/shadow,
162
	#  using the system API's to get the password.  If you want
163
	#  to read /etc/passwd or /etc/shadow directly, see the
164
	#  passwd module in radiusd.conf.
165
	#
166
#	unix
167
 
168
	#
169
	#  Read the 'users' file
170
	files
171
 
172
	#
173
	#  Look in an SQL database.  The schema of the database
174
	#  is meant to mirror the "users" file.
175
	#
176
	#  See "Authorization Queries" in sql.conf
177
#	sql
178
 
179
	#
180
	#  If you are using /etc/smbpasswd, and are also doing
181
	#  mschap authentication, the un-comment this line, and
182
	#  configure the 'etc_smbpasswd' module, above.
183
#	etc_smbpasswd
184
 
185
	#
186
	#  The ldap module will set Auth-Type to LDAP if it has not
187
	#  already been set
188
#	ldap
189
 
190
	#
191
	#  Enforce daily limits on time spent logged in.
192
#	daily
193
 
194
	#
195
	# Use the checkval module
196
#	checkval
197
 
198
	expiration
199
	logintime
200
 
201
	#
202
	#  If no other module has claimed responsibility for
203
	#  authentication, then try to use PAP.  This allows the
204
	#  other modules listed above to add a "known good" password
205
	#  to the request, and to do nothing else.  The PAP module
206
	#  will then see that password, and use it to do PAP
207
	#  authentication.
208
	#
209
	#  This module should be listed last, so that the other modules
210
	#  get a chance to set Auth-Type for themselves.
211
	#
212
	pap
213
 
214
	#
215
	#  If "status_server = yes", then Status-Server messages are passed
216
	#  through the following section, and ONLY the following section.
217
	#  This permits you to do DB queries, for example.  If the modules
218
	#  listed here return "fail", then NO response is sent.
219
	#
220
#	Autz-Type Status-Server {
221
#
222
#	}
223
}
224
 
225
 
226
#  Authentication.
227
#
228
#
229
#  This section lists which modules are available for authentication.
230
#  Note that it does NOT mean 'try each module in order'.  It means
231
#  that a module from the 'authorize' section adds a configuration
232
#  attribute 'Auth-Type := FOO'.  That authentication type is then
233
#  used to pick the apropriate module from the list below.
234
#
235
 
236
#  In general, you SHOULD NOT set the Auth-Type attribute.  The server
237
#  will figure it out on its own, and will do the right thing.  The
238
#  most common side effect of erroneously setting the Auth-Type
239
#  attribute is that one authentication method will work, but the
240
#  others will not.
241
#
242
#  The common reasons to set the Auth-Type attribute by hand
243
#  is to either forcibly reject the user (Auth-Type := Reject),
244
#  or to or forcibly accept the user (Auth-Type := Accept).
245
#
246
#  Note that Auth-Type := Accept will NOT work with EAP.
247
#
248
#  Please do not put "unlang" configurations into the "authenticate"
249
#  section.  Put them in the "post-auth" section instead.  That's what
250
#  the post-auth section is for.
251
#
252
authenticate {
253
	#
254
	#  PAP authentication, when a back-end database listed
255
	#  in the 'authorize' section supplies a password.  The
256
	#  password can be clear-text, or encrypted.
257
	Auth-Type PAP {
258
		pap
259
	}
260
 
261
	#
262
	#  Most people want CHAP authentication
263
	#  A back-end database listed in the 'authorize' section
264
	#  MUST supply a CLEAR TEXT password.  Encrypted passwords
265
	#  won't work.
266
	Auth-Type CHAP {
267
		chap
268
	}
269
 
270
	#
271
	#  MSCHAP authentication.
272
	Auth-Type MS-CHAP {
273
		mschap
274
	}
275
 
276
	#
277
	#  If you have a Cisco SIP server authenticating against
278
	#  FreeRADIUS, uncomment the following line, and the 'digest'
279
	#  line in the 'authorize' section.
280
	digest
281
 
282
	#
283
	#  Pluggable Authentication Modules.
284
#	pam
285
 
286
	#
287
	#  See 'man getpwent' for information on how the 'unix'
288
	#  module checks the users password.  Note that packets
289
	#  containing CHAP-Password attributes CANNOT be authenticated
290
	#  against /etc/passwd!  See the FAQ for details.
291
	#
292
	#  For normal "crypt" authentication, the "pap" module should
293
	#  be used instead of the "unix" module.  The "unix" module should
294
	#  be used for authentication ONLY for compatibility with legacy
295
	#  FreeRADIUS configurations.
296
	#
297
	unix
298
 
299
	# Uncomment it if you want to use ldap for authentication
300
	#
301
	# Note that this means "check plain-text password against
302
	# the ldap database", which means that EAP won't work,
303
	# as it does not supply a plain-text password.
304
#	Auth-Type LDAP {
305
#		ldap
306
#	}
307
 
308
	#
309
	#  Allow EAP authentication.
310
	eap
311
 
312
	#
313
	#  The older configurations sent a number of attributes in
314
	#  Access-Challenge packets, which wasn't strictly correct.
315
	#  If you want to filter out these attributes, uncomment
316
	#  the following lines.
317
	#
318
#	Auth-Type eap {
319
#		eap {
320
#			handled = 1
321
#		}
322
#		if (handled && (Response-Packet-Type == Access-Challenge)) {
323
#			attr_filter.access_challenge.post-auth
324
#			handled  # override the "updated" code from attr_filter
325
#		}
326
#	}
327
}
328
 
329
 
330
#
331
#  Pre-accounting.  Decide which accounting type to use.
332
#
333
preacct {
334
	preprocess
335
 
336
	#
337
	#  Session start times are *implied* in RADIUS.
338
	#  The NAS never sends a "start time".  Instead, it sends
339
	#  a start packet, *possibly* with an Acct-Delay-Time.
340
	#  The server is supposed to conclude that the start time
341
	#  was "Acct-Delay-Time" seconds in the past.
342
	#
343
	#  The code below creates an explicit start time, which can
344
	#  then be used in other modules.
345
	#
346
	#  The start time is: NOW - delay - session_length
347
	#
348
 
349
#	  update request {
350
#	  	FreeRADIUS-Acct-Session-Start-Time = "%{expr: %l - %{%{Acct-Session-Time}:-0} - %{%{Acct-Delay-Time}:-0}}"
351
#	}
352
 
353
 
354
	#
355
	#  Ensure that we have a semi-unique identifier for every
356
	#  request, and many NAS boxes are broken.
357
	acct_unique
358
 
359
	#
360
	#  Look for IPASS-style 'realm/', and if not found, look for
361
	#  '@realm', and decide whether or not to proxy, based on
362
	#  that.
363
	#
364
	#  Accounting requests are generally proxied to the same
365
	#  home server as authentication requests.
366
#	IPASS
367
	suffix
368
#	ntdomain
369
 
370
	#
371
	#  Read the 'acct_users' file
372
	files
373
}
374
 
375
#
376
#  Accounting.  Log the accounting data.
377
#
378
accounting {
379
	#
380
	#  Create a 'detail'ed log of the packets.
381
	#  Note that accounting requests which are proxied
382
	#  are also logged in the detail file.
383
	detail
384
#	daily
385
 
386
	#  Update the wtmp file
387
	#
388
	#  If you don't use "radlast", you can delete this line.
389
	unix
390
 
391
	#
392
	#  For Simultaneous-Use tracking.
393
	#
394
	#  Due to packet losses in the network, the data here
395
	#  may be incorrect.  There is little we can do about it.
396
	radutmp
397
#	sradutmp
398
 
399
	#  Return an address to the IP Pool when we see a stop record.
400
#	main_pool
401
 
402
	#
403
	#  Log traffic to an SQL database.
404
	#
405
	#  See "Accounting queries" in sql.conf
406
#	sql
407
 
408
	#
409
	#  If you receive stop packets with zero session length,
410
	#  they will NOT be logged in the database.  The SQL module
411
	#  will print a message (only in debugging mode), and will
412
	#  return "noop".
413
	#
414
	#  You can ignore these packets by uncommenting the following
415
	#  three lines.  Otherwise, the server will not respond to the
416
	#  accounting request, and the NAS will retransmit.
417
	#
418
#	if (noop) {
419
#		ok
420
#	}
421
 
422
	#
423
	#  Instead of sending the query to the SQL server,
424
	#  write it into a log file.
425
	#
426
#	sql_log
427
 
428
	#  Cisco VoIP specific bulk accounting
429
#	pgsql-voip
430
 
431
	# For Exec-Program and Exec-Program-Wait
432
	exec
433
 
434
	#  Filter attributes from the accounting response.
435
	attr_filter.accounting_response
436
 
437
	#
438
	#  See "Autz-Type Status-Server" for how this works.
439
	#
440
#	Acct-Type Status-Server {
441
#
442
#	}
443
}
444
 
445
 
446
#  Session database, used for checking Simultaneous-Use. Either the radutmp
447
#  or rlm_sql module can handle this.
448
#  The rlm_sql module is *much* faster
449
session {
450
	radutmp
451
 
452
	#
453
	#  See "Simultaneous Use Checking Queries" in sql.conf
454
#	sql
455
}
456
 
457
 
458
#  Post-Authentication
459
#  Once we KNOW that the user has been authenticated, there are
460
#  additional steps we can take.
461
post-auth {
462
	#  Get an address from the IP Pool.
463
#	main_pool
464
 
465
	#
466
	#  If you want to have a log of authentication replies,
467
	#  un-comment the following line, and the 'detail reply_log'
468
	#  section, above.
469
#	reply_log
470
 
471
	#
472
	#  After authenticating the user, do another SQL query.
473
	#
474
	#  See "Authentication Logging Queries" in sql.conf
475
#	sql
476
 
477
	#
478
	#  Instead of sending the query to the SQL server,
479
	#  write it into a log file.
480
	#
481
#	sql_log
482
 
483
	#
484
	#  Un-comment the following if you have set
485
	#  'edir_account_policy_check = yes' in the ldap module sub-section of
486
	#  the 'modules' section.
487
	#
488
#	ldap
489
 
490
	# For Exec-Program and Exec-Program-Wait
491
	exec
492
 
493
	#
494
	#  Calculate the various WiMAX keys.  In order for this to work,
495
	#  you will need to define the WiMAX NAI, usually via
496
	#
497
	#	update request {
498
	#	       WiMAX-MN-NAI = "%{User-Name}"
499
	#	}
500
	#
501
	#  If you want various keys to be calculated, you will need to
502
	#  update the reply with "template" values.  The module will see
503
	#  this, and replace the template values with the correct ones
504
	#  taken from the cryptographic calculations.  e.g.
505
	#
506
	# 	update reply {
507
	#		WiMAX-FA-RK-Key = 0x00
508
	#		WiMAX-MSK = "%{EAP-MSK}"
509
	#	}
510
	#
511
	#  You may want to delete the MS-MPPE-*-Keys from the reply,
512
	#  as some WiMAX clients behave badly when those attributes
513
	#  are included.  See "raddb/modules/wimax", configuration
514
	#  entry "delete_mppe_keys" for more information.
515
	#
516
#	wimax
517
 
518
	#  If there is a client certificate (EAP-TLS, sometimes PEAP
519
	#  and TTLS), then some attributes are filled out after the
520
	#  certificate verification has been performed.  These fields
521
	#  MAY be available during the authentication, or they may be
522
	#  available only in the "post-auth" section.
523
	#
524
	#  The first set of attributes contains information about the
525
	#  issuing certificate which is being used.  The second
526
	#  contains information about the client certificate (if
527
	#  available).
528
#
529
#	update reply {
530
#	       Reply-Message += "%{TLS-Cert-Serial}"
531
#	       Reply-Message += "%{TLS-Cert-Expiration}"
532
#	       Reply-Message += "%{TLS-Cert-Subject}"
533
#	       Reply-Message += "%{TLS-Cert-Issuer}"
534
#	       Reply-Message += "%{TLS-Cert-Common-Name}"
535
#
536
#	       Reply-Message += "%{TLS-Client-Cert-Serial}"
537
#	       Reply-Message += "%{TLS-Client-Cert-Expiration}"
538
#	       Reply-Message += "%{TLS-Client-Cert-Subject}"
539
#	       Reply-Message += "%{TLS-Client-Cert-Issuer}"
540
#	       Reply-Message += "%{TLS-Client-Cert-Common-Name}"
541
#	}
542
 
543
 
544
	#  If the WiMAX module did it's work, you may want to do more
545
	#  things here, like delete the MS-MPPE-*-Key attributes.
546
	#
547
	#	if (updated) {
548
	#		update reply {
549
	#			MS-MPPE-Recv-Key !* 0x00
550
	#			MS-MPPE-Send-Key !* 0x00
551
	#		}
552
	#	}
553
 
554
	#
555
	#  Access-Reject packets are sent through the REJECT sub-section of the
556
	#  post-auth section.
557
	#
558
	#  Add the ldap module name (or instance) if you have set
559
	#  'edir_account_policy_check = yes' in the ldap module configuration
560
	#
561
	Post-Auth-Type REJECT {
562
		# log failed authentications in SQL, too.
563
#		sql
564
		attr_filter.access_reject
565
	}
566
}
567
 
568
#
569
#  When the server decides to proxy a request to a home server,
570
#  the proxied request is first passed through the pre-proxy
571
#  stage.  This stage can re-write the request, or decide to
572
#  cancel the proxy.
573
#
574
#  Only a few modules currently have this method.
575
#
576
pre-proxy {
577
#	attr_rewrite
578
 
579
	#  Uncomment the following line if you want to change attributes
580
	#  as defined in the preproxy_users file.
581
#	files
582
 
583
	#  Uncomment the following line if you want to filter requests
584
	#  sent to remote servers based on the rules defined in the
585
	#  'attrs.pre-proxy' file.
586
#	attr_filter.pre-proxy
587
 
588
	#  If you want to have a log of packets proxied to a home
589
	#  server, un-comment the following line, and the
590
	#  'detail pre_proxy_log' section, above.
591
#	pre_proxy_log
592
}
593
 
594
#
595
#  When the server receives a reply to a request it proxied
596
#  to a home server, the request may be massaged here, in the
597
#  post-proxy stage.
598
#
599
post-proxy {
600
 
601
	#  If you want to have a log of replies from a home server,
602
	#  un-comment the following line, and the 'detail post_proxy_log'
603
	#  section, above.
604
#	post_proxy_log
605
 
606
#	attr_rewrite
607
 
608
	#  Uncomment the following line if you want to filter replies from
609
	#  remote proxies based on the rules defined in the 'attrs' file.
610
#	attr_filter.post-proxy
611
 
612
	#
613
	#  If you are proxying LEAP, you MUST configure the EAP
614
	#  module, and you MUST list it here, in the post-proxy
615
	#  stage.
616
	#
617
	#  You MUST also use the 'nostrip' option in the 'realm'
618
	#  configuration.  Otherwise, the User-Name attribute
619
	#  in the proxied request will not match the user name
620
	#  hidden inside of the EAP packet, and the end server will
621
	#  reject the EAP request.
622
	#
623
	eap
624
 
625
	#
626
	#  If the server tries to proxy a request and fails, then the
627
	#  request is processed through the modules in this section.
628
	#
629
	#  The main use of this section is to permit robust proxying
630
	#  of accounting packets.  The server can be configured to
631
	#  proxy accounting packets as part of normal processing.
632
	#  Then, if the home server goes down, accounting packets can
633
	#  be logged to a local "detail" file, for processing with
634
	#  radrelay.  When the home server comes back up, radrelay
635
	#  will read the detail file, and send the packets to the
636
	#  home server.
637
	#
638
	#  With this configuration, the server always responds to
639
	#  Accounting-Requests from the NAS, but only writes
640
	#  accounting packets to disk if the home server is down.
641
	#
642
#	Post-Proxy-Type Fail {
643
#			detail
644
#	}
645
}
646