You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

eap.conf 23KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688
  1. # -*- text -*-
  2. ##
  3. ## eap.conf -- Configuration for EAP types (PEAP, TTLS, etc.)
  4. ##
  5. ## $Id: 95bebe4d25ef13871fb201ba540ed008078dab07 $
  6. #######################################################################
  7. #
  8. # Whatever you do, do NOT set 'Auth-Type := EAP'. The server
  9. # is smart enough to figure this out on its own. The most
  10. # common side effect of setting 'Auth-Type := EAP' is that the
  11. # users then cannot use ANY other authentication method.
  12. #
  13. # EAP types NOT listed here may be supported via the "eap2" module.
  14. # See experimental.conf for documentation.
  15. #
  16. eap {
  17. # Invoke the default supported EAP type when
  18. # EAP-Identity response is received.
  19. #
  20. # The incoming EAP messages DO NOT specify which EAP
  21. # type they will be using, so it MUST be set here.
  22. #
  23. # For now, only one default EAP type may be used at a time.
  24. #
  25. # If the EAP-Type attribute is set by another module,
  26. # then that EAP type takes precedence over the
  27. # default type configured here.
  28. #
  29. default_eap_type = peap
  30. # A list is maintained to correlate EAP-Response
  31. # packets with EAP-Request packets. After a
  32. # configurable length of time, entries in the list
  33. # expire, and are deleted.
  34. #
  35. timer_expire = 60
  36. # There are many EAP types, but the server has support
  37. # for only a limited subset. If the server receives
  38. # a request for an EAP type it does not support, then
  39. # it normally rejects the request. By setting this
  40. # configuration to "yes", you can tell the server to
  41. # instead keep processing the request. Another module
  42. # MUST then be configured to proxy the request to
  43. # another RADIUS server which supports that EAP type.
  44. #
  45. # If another module is NOT configured to handle the
  46. # request, then the request will still end up being
  47. # rejected.
  48. ignore_unknown_eap_types = no
  49. # Cisco AP1230B firmware 12.2(13)JA1 has a bug. When given
  50. # a User-Name attribute in an Access-Accept, it copies one
  51. # more byte than it should.
  52. #
  53. # We can work around it by configurably adding an extra
  54. # zero byte.
  55. cisco_accounting_username_bug = no
  56. #
  57. # Help prevent DoS attacks by limiting the number of
  58. # sessions that the server is tracking. For simplicity,
  59. # this is taken from the "max_requests" directive in
  60. # radiusd.conf.
  61. max_sessions = ${max_requests}
  62. # Supported EAP-types
  63. #
  64. # We do NOT recommend using EAP-MD5 authentication
  65. # for wireless connections. It is insecure, and does
  66. # not provide for dynamic WEP keys.
  67. #
  68. md5 {
  69. }
  70. # Cisco LEAP
  71. #
  72. # We do not recommend using LEAP in new deployments. See:
  73. # http://www.securiteam.com/tools/5TP012ACKE.html
  74. #
  75. # Cisco LEAP uses the MS-CHAP algorithm (but not
  76. # the MS-CHAP attributes) to perform it's authentication.
  77. #
  78. # As a result, LEAP *requires* access to the plain-text
  79. # User-Password, or the NT-Password attributes.
  80. # 'System' authentication is impossible with LEAP.
  81. #
  82. leap {
  83. }
  84. # Generic Token Card.
  85. #
  86. # Currently, this is only permitted inside of EAP-TTLS,
  87. # or EAP-PEAP. The module "challenges" the user with
  88. # text, and the response from the user is taken to be
  89. # the User-Password.
  90. #
  91. # Proxying the tunneled EAP-GTC session is a bad idea,
  92. # the users password will go over the wire in plain-text,
  93. # for anyone to see.
  94. #
  95. gtc {
  96. # The default challenge, which many clients
  97. # ignore..
  98. #challenge = "Password: "
  99. # The plain-text response which comes back
  100. # is put into a User-Password attribute,
  101. # and passed to another module for
  102. # authentication. This allows the EAP-GTC
  103. # response to be checked against plain-text,
  104. # or crypt'd passwords.
  105. #
  106. # If you say "Local" instead of "PAP", then
  107. # the module will look for a User-Password
  108. # configured for the request, and do the
  109. # authentication itself.
  110. #
  111. auth_type = PAP
  112. }
  113. ## EAP-TLS
  114. #
  115. # See raddb/certs/README for additional comments
  116. # on certificates.
  117. #
  118. # If OpenSSL was not found at the time the server was
  119. # built, the "tls", "ttls", and "peap" sections will
  120. # be ignored.
  121. #
  122. # Otherwise, when the server first starts in debugging
  123. # mode, test certificates will be created. See the
  124. # "make_cert_command" below for details, and the README
  125. # file in raddb/certs
  126. #
  127. # These test certificates SHOULD NOT be used in a normal
  128. # deployment. They are created only to make it easier
  129. # to install the server, and to perform some simple
  130. # tests with EAP-TLS, TTLS, or PEAP.
  131. #
  132. # See also:
  133. #
  134. # http://www.dslreports.com/forum/remark,9286052~mode=flat
  135. #
  136. # Note that you should NOT use a globally known CA here!
  137. # e.g. using a Verisign cert as a "known CA" means that
  138. # ANYONE who has a certificate signed by them can
  139. # authenticate via EAP-TLS! This is likely not what you want.
  140. tls {
  141. #
  142. # These is used to simplify later configurations.
  143. #
  144. certdir = ${confdir}/certs
  145. cadir = ${confdir}/certs
  146. private_key_password = whatever
  147. private_key_file = ${certdir}/server.key
  148. # If Private key & Certificate are located in
  149. # the same file, then private_key_file &
  150. # certificate_file must contain the same file
  151. # name.
  152. #
  153. # If CA_file (below) is not used, then the
  154. # certificate_file below MUST include not
  155. # only the server certificate, but ALSO all
  156. # of the CA certificates used to sign the
  157. # server certificate.
  158. certificate_file = ${certdir}/server.pem
  159. # Trusted Root CA list
  160. #
  161. # ALL of the CA's in this list will be trusted
  162. # to issue client certificates for authentication.
  163. #
  164. # In general, you should use self-signed
  165. # certificates for 802.1x (EAP) authentication.
  166. # In that case, this CA file should contain
  167. # *one* CA certificate.
  168. #
  169. # This parameter is used only for EAP-TLS,
  170. # when you issue client certificates. If you do
  171. # not use client certificates, and you do not want
  172. # to permit EAP-TLS authentication, then delete
  173. # this configuration item.
  174. CA_file = ${cadir}/ca.pem
  175. #
  176. # For DH cipher suites to work, you have to
  177. # run OpenSSL to create the DH file first:
  178. #
  179. # openssl dhparam -out certs/dh 1024
  180. #
  181. dh_file = ${certdir}/dh
  182. random_file = /dev/urandom
  183. #
  184. # This can never exceed the size of a RADIUS
  185. # packet (4096 bytes), and is preferably half
  186. # that, to accomodate other attributes in
  187. # RADIUS packet. On most APs the MAX packet
  188. # length is configured between 1500 - 1600
  189. # In these cases, fragment size should be
  190. # 1024 or less.
  191. #
  192. # fragment_size = 1024
  193. # include_length is a flag which is
  194. # by default set to yes If set to
  195. # yes, Total Length of the message is
  196. # included in EVERY packet we send.
  197. # If set to no, Total Length of the
  198. # message is included ONLY in the
  199. # First packet of a fragment series.
  200. #
  201. # include_length = yes
  202. # Check the Certificate Revocation List
  203. #
  204. # 1) Copy CA certificates and CRLs to same directory.
  205. # 2) Execute 'c_rehash <CA certs&CRLs Directory>'.
  206. # 'c_rehash' is OpenSSL's command.
  207. # 3) uncomment the line below.
  208. # 5) Restart radiusd
  209. # check_crl = yes
  210. CA_path = ${cadir}
  211. #
  212. # If check_cert_issuer is set, the value will
  213. # be checked against the DN of the issuer in
  214. # the client certificate. If the values do not
  215. # match, the cerficate verification will fail,
  216. # rejecting the user.
  217. #
  218. # In 2.1.10 and later, this check can be done
  219. # more generally by checking the value of the
  220. # TLS-Client-Cert-Issuer attribute. This check
  221. # can be done via any mechanism you choose.
  222. #
  223. # check_cert_issuer = "/C=GB/ST=Berkshire/L=Newbury/O=My Company Ltd"
  224. #
  225. # If check_cert_cn is set, the value will
  226. # be xlat'ed and checked against the CN
  227. # in the client certificate. If the values
  228. # do not match, the certificate verification
  229. # will fail rejecting the user.
  230. #
  231. # This check is done only if the previous
  232. # "check_cert_issuer" is not set, or if
  233. # the check succeeds.
  234. #
  235. # In 2.1.10 and later, this check can be done
  236. # more generally by checking the value of the
  237. # TLS-Client-Cert-CN attribute. This check
  238. # can be done via any mechanism you choose.
  239. #
  240. # check_cert_cn = %{User-Name}
  241. #
  242. # Set this option to specify the allowed
  243. # TLS cipher suites. The format is listed
  244. # in "man 1 ciphers".
  245. cipher_list = "DEFAULT"
  246. #
  247. # As part of checking a client certificate, the EAP-TLS
  248. # sets some attributes such as TLS-Client-Cert-CN. This
  249. # virtual server has access to these attributes, and can
  250. # be used to accept or reject the request.
  251. #
  252. # virtual_server = check-eap-tls
  253. # This command creates the initial "snake oil"
  254. # certificates when the server is run as root,
  255. # and via "radiusd -X".
  256. #
  257. # As of 2.1.11, it *also* checks the server
  258. # certificate for validity, including expiration.
  259. # This means that radiusd will refuse to start
  260. # when the certificate has expired. The alternative
  261. # is to have the 802.1X clients refuse to connect
  262. # when they discover the certificate has expired.
  263. #
  264. # Debugging client issues is hard, so it's better
  265. # for the server to print out an error message,
  266. # and refuse to start.
  267. #
  268. make_cert_command = "${certdir}/bootstrap"
  269. #
  270. # Elliptical cryptography configuration
  271. #
  272. # Only for OpenSSL >= 0.9.8.f
  273. #
  274. ecdh_curve = "prime256v1"
  275. #
  276. # Session resumption / fast reauthentication
  277. # cache.
  278. #
  279. # The cache contains the following information:
  280. #
  281. # session Id - unique identifier, managed by SSL
  282. # User-Name - from the Access-Accept
  283. # Stripped-User-Name - from the Access-Request
  284. # Cached-Session-Policy - from the Access-Accept
  285. #
  286. # The "Cached-Session-Policy" is the name of a
  287. # policy which should be applied to the cached
  288. # session. This policy can be used to assign
  289. # VLANs, IP addresses, etc. It serves as a useful
  290. # way to re-apply the policy from the original
  291. # Access-Accept to the subsequent Access-Accept
  292. # for the cached session.
  293. #
  294. # On session resumption, these attributes are
  295. # copied from the cache, and placed into the
  296. # reply list.
  297. #
  298. # You probably also want "use_tunneled_reply = yes"
  299. # when using fast session resumption.
  300. #
  301. cache {
  302. #
  303. # Enable it. The default is "no".
  304. # Deleting the entire "cache" subsection
  305. # Also disables caching.
  306. #
  307. # You can disallow resumption for a
  308. # particular user by adding the following
  309. # attribute to the control item list:
  310. #
  311. # Allow-Session-Resumption = No
  312. #
  313. # If "enable = no" below, you CANNOT
  314. # enable resumption for just one user
  315. # by setting the above attribute to "yes".
  316. #
  317. enable = no
  318. #
  319. # Lifetime of the cached entries, in hours.
  320. # The sessions will be deleted after this
  321. # time.
  322. #
  323. lifetime = 24 # hours
  324. #
  325. # The maximum number of entries in the
  326. # cache. Set to "0" for "infinite".
  327. #
  328. # This could be set to the number of users
  329. # who are logged in... which can be a LOT.
  330. #
  331. max_entries = 255
  332. }
  333. #
  334. # As of version 2.1.10, client certificates can be
  335. # validated via an external command. This allows
  336. # dynamic CRLs or OCSP to be used.
  337. #
  338. # This configuration is commented out in the
  339. # default configuration. Uncomment it, and configure
  340. # the correct paths below to enable it.
  341. #
  342. verify {
  343. # A temporary directory where the client
  344. # certificates are stored. This directory
  345. # MUST be owned by the UID of the server,
  346. # and MUST not be accessible by any other
  347. # users. When the server starts, it will do
  348. # "chmod go-rwx" on the directory, for
  349. # security reasons. The directory MUST
  350. # exist when the server starts.
  351. #
  352. # You should also delete all of the files
  353. # in the directory when the server starts.
  354. # tmpdir = /tmp/radiusd
  355. # The command used to verify the client cert.
  356. # We recommend using the OpenSSL command-line
  357. # tool.
  358. #
  359. # The ${..CA_path} text is a reference to
  360. # the CA_path variable defined above.
  361. #
  362. # The %{TLS-Client-Cert-Filename} is the name
  363. # of the temporary file containing the cert
  364. # in PEM format. This file is automatically
  365. # deleted by the server when the command
  366. # returns.
  367. # client = "/path/to/openssl verify -CApath ${..CA_path} %{TLS-Client-Cert-Filename}"
  368. }
  369. #
  370. # OCSP Configuration
  371. # Certificates can be verified against an OCSP
  372. # Responder. This makes it possible to immediately
  373. # revoke certificates without the distribution of
  374. # new Certificate Revokation Lists (CRLs).
  375. #
  376. ocsp {
  377. #
  378. # Enable it. The default is "no".
  379. # Deleting the entire "ocsp" subsection
  380. # Also disables ocsp checking
  381. #
  382. enable = no
  383. #
  384. # The OCSP Responder URL can be automatically
  385. # extracted from the certificate in question.
  386. # To override the OCSP Responder URL set
  387. # "override_cert_url = yes".
  388. #
  389. override_cert_url = yes
  390. #
  391. # If the OCSP Responder address is not
  392. # extracted from the certificate, the
  393. # URL can be defined here.
  394. #
  395. # Limitation: Currently the HTTP
  396. # Request is not sending the "Host: "
  397. # information to the web-server. This
  398. # can be a problem if the OCSP
  399. # Responder is running as a vhost.
  400. #
  401. url = "http://127.0.0.1/ocsp/"
  402. #
  403. # If the OCSP Responder can not cope with nonce
  404. # in the request, then it can be disabled here.
  405. #
  406. # For security reasons, disabling this option
  407. # is not recommended as nonce protects against
  408. # replay attacks.
  409. #
  410. # Note that Microsoft AD Certificate Services OCSP
  411. # Responder does not enable nonce by default. It is
  412. # more secure to enable nonce on the responder than
  413. # to disable it in the query here.
  414. # See http://technet.microsoft.com/en-us/library/cc770413%28WS.10%29.aspx
  415. #
  416. # use_nonce = yes
  417. #
  418. # Number of seconds before giving up waiting
  419. # for OCSP response. 0 uses system default.
  420. #
  421. # timeout = 0
  422. #
  423. # Normally an error in querying the OCSP
  424. # responder (no response from server, server did
  425. # not understand the request, etc) will result in
  426. # a validation failure.
  427. #
  428. # To treat these errors as 'soft' failures and
  429. # still accept the certificate, enable this
  430. # option.
  431. #
  432. # Warning: this may enable clients with revoked
  433. # certificates to connect if the OCSP responder
  434. # is not available. Use with caution.
  435. #
  436. # softfail = no
  437. }
  438. }
  439. # The TTLS module implements the EAP-TTLS protocol,
  440. # which can be described as EAP inside of Diameter,
  441. # inside of TLS, inside of EAP, inside of RADIUS...
  442. #
  443. # Surprisingly, it works quite well.
  444. #
  445. # The TTLS module needs the TLS module to be installed
  446. # and configured, in order to use the TLS tunnel
  447. # inside of the EAP packet. You will still need to
  448. # configure the TLS module, even if you do not want
  449. # to deploy EAP-TLS in your network. Users will not
  450. # be able to request EAP-TLS, as it requires them to
  451. # have a client certificate. EAP-TTLS does not
  452. # require a client certificate.
  453. #
  454. # You can make TTLS require a client cert by setting
  455. #
  456. # EAP-TLS-Require-Client-Cert = Yes
  457. #
  458. # in the control items for a request.
  459. #
  460. ttls {
  461. # The tunneled EAP session needs a default
  462. # EAP type which is separate from the one for
  463. # the non-tunneled EAP module. Inside of the
  464. # TTLS tunnel, we recommend using EAP-MD5.
  465. # If the request does not contain an EAP
  466. # conversation, then this configuration entry
  467. # is ignored.
  468. default_eap_type = md5
  469. # The tunneled authentication request does
  470. # not usually contain useful attributes
  471. # like 'Calling-Station-Id', etc. These
  472. # attributes are outside of the tunnel,
  473. # and normally unavailable to the tunneled
  474. # authentication request.
  475. #
  476. # By setting this configuration entry to
  477. # 'yes', any attribute which NOT in the
  478. # tunneled authentication request, but
  479. # which IS available outside of the tunnel,
  480. # is copied to the tunneled request.
  481. #
  482. # allowed values: {no, yes}
  483. copy_request_to_tunnel = no
  484. # The reply attributes sent to the NAS are
  485. # usually based on the name of the user
  486. # 'outside' of the tunnel (usually
  487. # 'anonymous'). If you want to send the
  488. # reply attributes based on the user name
  489. # inside of the tunnel, then set this
  490. # configuration entry to 'yes', and the reply
  491. # to the NAS will be taken from the reply to
  492. # the tunneled request.
  493. #
  494. # allowed values: {no, yes}
  495. use_tunneled_reply = no
  496. #
  497. # The inner tunneled request can be sent
  498. # through a virtual server constructed
  499. # specifically for this purpose.
  500. #
  501. # If this entry is commented out, the inner
  502. # tunneled request will be sent through
  503. # the virtual server that processed the
  504. # outer requests.
  505. #
  506. virtual_server = "inner-tunnel"
  507. # This has the same meaning as the
  508. # same field in the "tls" module, above.
  509. # The default value here is "yes".
  510. # include_length = yes
  511. }
  512. ##################################################
  513. #
  514. # !!!!! WARNINGS for Windows compatibility !!!!!
  515. #
  516. ##################################################
  517. #
  518. # If you see the server send an Access-Challenge,
  519. # and the client never sends another Access-Request,
  520. # then
  521. #
  522. # STOP!
  523. #
  524. # The server certificate has to have special OID's
  525. # in it, or else the Microsoft clients will silently
  526. # fail. See the "scripts/xpextensions" file for
  527. # details, and the following page:
  528. #
  529. # http://support.microsoft.com/kb/814394/en-us
  530. #
  531. # For additional Windows XP SP2 issues, see:
  532. #
  533. # http://support.microsoft.com/kb/885453/en-us
  534. #
  535. #
  536. # If is still doesn't work, and you're using Samba,
  537. # you may be encountering a Samba bug. See:
  538. #
  539. # https://bugzilla.samba.org/show_bug.cgi?id=6563
  540. #
  541. # Note that we do not necessarily agree with their
  542. # explanation... but the fix does appear to work.
  543. #
  544. ##################################################
  545. #
  546. # The tunneled EAP session needs a default EAP type
  547. # which is separate from the one for the non-tunneled
  548. # EAP module. Inside of the TLS/PEAP tunnel, we
  549. # recommend using EAP-MS-CHAPv2.
  550. #
  551. # The PEAP module needs the TLS module to be installed
  552. # and configured, in order to use the TLS tunnel
  553. # inside of the EAP packet. You will still need to
  554. # configure the TLS module, even if you do not want
  555. # to deploy EAP-TLS in your network. Users will not
  556. # be able to request EAP-TLS, as it requires them to
  557. # have a client certificate. EAP-PEAP does not
  558. # require a client certificate.
  559. #
  560. #
  561. # You can make PEAP require a client cert by setting
  562. #
  563. # EAP-TLS-Require-Client-Cert = Yes
  564. #
  565. # in the control items for a request.
  566. #
  567. peap {
  568. # The tunneled EAP session needs a default
  569. # EAP type which is separate from the one for
  570. # the non-tunneled EAP module. Inside of the
  571. # PEAP tunnel, we recommend using MS-CHAPv2,
  572. # as that is the default type supported by
  573. # Windows clients.
  574. default_eap_type = mschapv2
  575. # the PEAP module also has these configuration
  576. # items, which are the same as for TTLS.
  577. copy_request_to_tunnel = no
  578. use_tunneled_reply = no
  579. # When the tunneled session is proxied, the
  580. # home server may not understand EAP-MSCHAP-V2.
  581. # Set this entry to "no" to proxy the tunneled
  582. # EAP-MSCHAP-V2 as normal MSCHAPv2.
  583. # proxy_tunneled_request_as_eap = yes
  584. #
  585. # The inner tunneled request can be sent
  586. # through a virtual server constructed
  587. # specifically for this purpose.
  588. #
  589. # If this entry is commented out, the inner
  590. # tunneled request will be sent through
  591. # the virtual server that processed the
  592. # outer requests.
  593. #
  594. virtual_server = "inner-tunnel"
  595. # This option enables support for MS-SoH
  596. # see doc/SoH.txt for more info.
  597. # It is disabled by default.
  598. #
  599. # soh = yes
  600. #
  601. # The SoH reply will be turned into a request which
  602. # can be sent to a specific virtual server:
  603. #
  604. # soh_virtual_server = "soh-server"
  605. }
  606. #
  607. # This takes no configuration.
  608. #
  609. # Note that it is the EAP MS-CHAPv2 sub-module, not
  610. # the main 'mschap' module.
  611. #
  612. # Note also that in order for this sub-module to work,
  613. # the main 'mschap' module MUST ALSO be configured.
  614. #
  615. # This module is the *Microsoft* implementation of MS-CHAPv2
  616. # in EAP. There is another (incompatible) implementation
  617. # of MS-CHAPv2 in EAP by Cisco, which FreeRADIUS does not
  618. # currently support.
  619. #
  620. mschapv2 {
  621. # Prior to version 2.1.11, the module never
  622. # sent the MS-CHAP-Error message to the
  623. # client. This worked, but it had issues
  624. # when the cached password was wrong. The
  625. # server *should* send "E=691 R=0" to the
  626. # client, which tells it to prompt the user
  627. # for a new password.
  628. #
  629. # The default is to behave as in 2.1.10 and
  630. # earlier, which is known to work. If you
  631. # set "send_error = yes", then the error
  632. # message will be sent back to the client.
  633. # This *may* help some clients work better,
  634. # but *may* also cause other clients to stop
  635. # working.
  636. #
  637. # send_error = no
  638. }
  639. }