FreeRADIUS 是一个完全 GPL 许可的 RADIUS 服务器实现。它支持广泛的身份验证机制,但在本文档的示例中使用了 PEAP。
安装 FreeRADIUS
前往 FreeRADIUS 网站 http://www.freeradius.org/,并下载最新版本。
# cd /usr/local/src # wget ftp://ftp.freeradius.org/pub/radius/freeradius-1.0.0.tar.gz # tar zxfv freeradius-1.0.0.tar.gz # cd freeradius-1.0.0 |
配置,编译和安装
# ./configure # make # make install |
您可以将选项传递给 configure。使用 ./configure --help 或阅读 README 文件以获取更多信息。
二进制文件安装在/usr/local/bin和/usr/local/sbin。配置文件位于/usr/local/etc/raddb.
如果出现问题,请检查INSTALL和README(包含在源代码中)。RADIUS FAQ 也包含有价值的信息。
FreeRADIUS 有一个庞大而强大的配置文件。它非常大,以至于被拆分成几个较小的文件,这些文件只是 "包含" 在主radius.conf文件中。
有许多方法可以使用和设置 FreeRADIUS 来完成您想要的操作:例如,从 LDAP、SQL、PDC、Kerberos 等获取用户信息。在本文档中,使用了来自纯文本文件的用户信息,users。
![]() | 配置文件有详尽的注释,如果这还不够,源代码附带的doc/文件夹包含更多信息。 |
配置 FreeRADIUS
配置文件可以在/usr/local/etc/raddb/
# cd /usr/local/etc/raddb/ |
下找到。打开主配置文件radiusd.conf,并阅读注释! 在加密的 PEAP 隧道内部,使用了 MS-CHAPv2 身份验证机制。
MPPE [RFC3078] 负责将 PMK 发送到 AP。确保设置了以下设置
# under MODULES, make sure mschap is uncommented! mschap { # authtype value, if present, will be used # to overwrite (or add) Auth-Type during # authorization. Normally, should be MS-CHAP authtype = MS-CHAP # if use_mppe is not set to no, mschap will # add MS-CHAP-MPPE-Keys for MS-CHAPv1 and # MS-MPPE-Recv-Key/MS-MPPE-Send-Key for MS-CHAPv2 # use_mppe = yes # if mppe is enabled, require_encryption makes # encryption moderate # require_encryption = yes # require_strong always requires 128 bit key # encryption # require_strong = yes authtype = MS-CHAP # The module can perform authentication itself, OR # use a Windows Domain Controller. See the radius.conf file # for how to do this. } |
还要确保 "authorize" 和 "authenticate" 包含
authorize { preprocess mschap suffix eap files } authenticate { # # MSCHAP authentication. Auth-Type MS-CHAP { mschap } # # Allow EAP authentication. eap } |
然后,更改clients.conf文件以指定它服务的网络
# Here, we specify which network we're serving client 192.168.0.0/16 { # This is the shared secret between the Authenticator (the # access point) and the Authentication Server (RADIUS). secret = SharedSecret99 shortname = testnet } |
Theeap.conf也应该非常简单明了。
将 "default_eap_type" 设置为 "peap"
default_eap_type = peap |
由于 PEAP 使用 TLS,TLS 部分必须包含
tls { # The private key password private_key_password = SecretKeyPass77 # The private key private_key_file = ${raddbdir}/certs/cert-srv.pem # Trusted Root CA list CA_file = ${raddbdir}/certs/demoCA/cacert.pem dh_file = ${raddbdir}/certs/dh random_file = /dev/urandom } |
找到 "peap" 部分,并确保它包含以下内容
peap { # The tunneled EAP session needs a default # EAP type, which is separate from the one for # the non-tunneled EAP module. Inside of the # PEAP tunnel, we recommend using MS-CHAPv2, # as that is the default type supported by # Windows clients. default_eap_type = mschapv2 } |
用户信息存储在纯文本文件users中。可能更希望使用更复杂的解决方案来存储用户信息(SQL、LDAP、PDC 等)。
确保users文件包含以下条目
"testuser" User-Password == "Secret149" |