Sunday, August 14, 2011

FreeRadius-EAP配置和测试

FreeRadius-EAP配置和测试
 
0. 目的和前提
本文的目的是在FreeRadius服务器上配置一个测试环境,测试该服务器对于EAP认证方式的支持和工作正常。
前面的过程见《FreeRadius安装和配置-基础
这一部分在前面的基础上,配置FreeRadius支持EAP的各种认证方式。
1、基础配置
a. 测试帐号
确认在/etc/raddb/users中已经配置了测试帐号
ufiletest Cleartext-Password := "password123"
 :这里有个让人有点哭笑不得的问题,需要将这些用户定义放在文件的最开始处,而不是最后面!!否则在后面的测试中可能会失败,提示的错误信息包括:
rlm_eap_md5: Cleartext-Password is required for EAP-MD5 authentication
[eap] Handler failed in EAP/md5
b. 本机在网络上client设置
在/etc/raddb/clients中添加本机的“网络地址”客户端,这里使用服务器自己的为192.168.1.184(原来的测试地址是本机localhost)
client 192.168.1.184 {
      secret = testing123
      shortname = myradserver
 }
c. 模拟从网络上发起的测试
使用下面命令,测试客户端和用户配置,确认认证通过。
radtest ufiletest password123 127.0.0.1 1812 testing1233
radtest ufiletest password123 192.168.1.184 1812 testing1233

2. 简单EAP测试
我们可以使用最简单的EAP-MD5协议来测试服务器对EAP的支持是否正常。默认的FreeRadius不需要做其他设置即可支持EAP-MD5,但需要用另外一个工具 radeapclient(已随FreeRadius Utility安装):
编辑一个 eaptest.md5文件,内容为认证请求信息:
User-Name = "ufiletest"
Cleartext-Password = "password123"
EAP-Code = Response
EAP-Id = 210
EAP-Type-Identity = "ufiletest"
Message-Authenticator = 0x00
运行下列命令载入认证信息
radeapclient -x 127.0.0.1 auth testing123 <eaptest.md5
验证成功的标准是一个Access-Accept包和EAP-code=Success提示。

3. EAP证书配置
全功能的EAP认证方式需要证书系统的支持,包括主要的三个协议:EAP-TLS,EAP-TTLS和PEAP。
首先需要三个证书文件,分别为ca.pem(根CA证书表明了可信任的证书颁发机构),server.pem(服务器证书),server.key(服务器公钥),这三个文件在FreeRadius安装过程中已经生成,并保留在/etc/raddb/certs目录下(注,他们是自签名的测试用证书,不建议在实际应用环境中使用)。
为使这些证书发挥正常作用,需要在 /etc/raddb/eap.conf 文件中确定下列设置(其中confdir变量是在radiusd.conf中定义的):
certdir = ${confdir}/certs
cadir = ${confdir}/certs
private_key_password = whatever
private_key_file = ${certdir}/server.pem
CA_file = ${cadir}/ca.pem 
这些设置的正确性还可以在 radiusd -X 启动时的诊断信息中检查。

4. 高级测试工具 eapol_test
eapol_test工具可能需要自己编译,在开始前需要先安装gcc工具:
yum install gcc++
否则在编译时会出错:
make: cc: Command not found
make: *** [config.o] Error 127

然后到下列地址下载wpa_supplicant的源代码
http://hostap.epitest.fi/wpa_supplicant/
下载-解压-编译-运行:
cd ~
wget http://hostap.epitest.fi/releases/wpa_supplicant-0.7.3.tar.gz
tar xvf wpa_supplicant-0.7.3.tar.gz
cd wpa_supplicant-0.7.3/wpa_supplicant
cp defconfig .config
make eapol_test
......
cp eapol_test /usr/local/bin

也可以在下列地址下载二进制文件(http://www.eduroam.cz/rad_eap_test/eapol_test/ 
wget http://www.eduroam.cz/rad_eap_test/eapol_test/eapol_test
为了清楚期间,我们编辑一个配置文件作为该测试工具的EAP参数输入,来分别测试各种EAP功能的实现,命令为: 
eapol_test -c <测试文件> -a 127.0.0.1 -p 1812 -s testing123 -r 1

5. EAP高级测试(PEAP)
编辑一个测试用文件 eaptest.peap,包含下列请求信息:
network={
eap=PEAP
eapol_flags=0
key_mgmt=IEEE8021X
identity="ufiletest"
password="password123"
ca_cert="/etc/raddb/certs/ca.pem"
phase2="auth=MSCHAPV2"
anonymous_identity="anonymous"
}
运行测试命令:
eapol_test -c eaptest.peap -a 127.0.0.1 -p 1812 -s testing123 -r 1
语法为
eapol_test -c {请求信息文件} -a {认证服务器地址} -p {端口} -s {共享密钥} -r 1
如果成功,将在最后一行看到 SUCCESS,否则为FALLURE

6. EAP高级测试(TLS)
编辑一个测试用文件 eaptest.tls,包含下列请求信息:
network={
eap=TLS
eapol_flags=0
key_mgmt=IEEE8021X
identity="ufiletest"
password="password123"
ca_cert="/etc/raddb/certs/ca.pem"
client_cert="/etc/raddb/certs/server.pem"
private_key="/etc/raddb/certs/server.key"
private_key_passwd="whatever"
}
测试命令:
eapol_test -c eaptest.tls -a 127.0.0.1 -p 1812 -s testing123 -r 1
注:TLS需要客户端和服务器双方的证书(在此例中相同,都为server.pem)。
6. EAP高级测试(TTLS)
EAP-TTLS-MD5的配置文件为 eaptest.ttls.md5
network={ eap=TTLS eapol_flags=0 key_mgmt=IEEE8021X identity="ufiletest" password="password123" anonymous_identity="anonymous" ca_cert="/etc/raddb/certs/ca.pem" phase2="auth=MD5" }
EAP-TTLS-MSCHAPv2,配置文件为 eaptest.ttls.chap
network={
eap=TTLS
eapol_flags=0
key_mgmt=IEEE8021X
identity="ufiletest"
password="password123"
anonymous_identity="anonymous"
ca_cert="/etc/raddb/certs/ca.pem"
phase2="auth=MSCHAPV2"
}
注:两者的区别在于第二阶段的密码验证方式不同(MD5和MSCHAPv2)。
如果上述测试都能够通过,则证明RADUIS服务器为这些验证方式都做好了准备。

6. 一些相关名词解释和总结
PAP(Password Authentication Protocol 密码验证协议)
最基础的身份验证,直接使用明文传送用户名和密码信息,安全性较低。

CHAP(Challenge-Handshake Authentication Protocol 挑战-握手验证协议)
其特点是使用哈希来处理密码,并使用一个随机生成的信息来维持会话,提高了安全性。

MS-CHAP和MS-CHAPv2
是CHAP的微软实现方式,但也是国际标准协议。在CHAP基础上提供了更多特性和安全性。

EAP(Extensible Authentication Protocol 可扩展身份验证协议):
其实它是一个身份验证的标准框架,它可以和其他算法或者身份验证协议组合起来,提供一个灵活的,可支持多种验证方法,能提供更高安全性的验证机制。

EAP-MD5
使用MD5算法的EAP协议。是基本的最简单的EAP协议实现,这一协议的实现不需要证书体系。

EAP-TLS(EAP Trnsport Level Security EAP传输层安全协议)
大体上是SSL的升级版本,使用PKI来保护通讯,是IETF的开放标准,具有较好的兼容性。

EAP-TTLS(EAP-Tunneled Transport Layer Security EAP隧道传输层安全协议)
IETF的开放标准草案,提供非常优秀的安全性。而且不需要客户端认证协议。

PEAP(Protected EAP 保护性EAP)
和EAP-TTLS类似,使用一个加密和认证过的传输层安全来保护EAP,需要PKI,但只需要服务器端。有两个实现PEAP-MSCHAP和PEAP-GTC。

LEAP(Lightweight EAP 轻量级EAP)
基本上是Cisco的私有协议实现。

EAP-SIM,EAP-AKA....其他较少应用的EAP

7. 相关常见问题
- 各种证书的位置(CA、服务器、客户端)
- 共享密钥
- 客户端配置(client.conf)
- 各种验证相关功能开启

1 comment:

  1. Great and that i have a super proposal: When To Renovate House exterior makeover house

    ReplyDelete