认证原理与实现Word下载.docx
《认证原理与实现Word下载.docx》由会员分享,可在线阅读,更多相关《认证原理与实现Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
用户接入NAS,NAS向RADIUS服务器使用Access-Require数据包提交用户信息,包括用户名、密码等相关
信息,其中用户密码是经过MD5加密的,双方使用共享密钥,这个密钥不经过网络传播;
RADIUS服务器对用户
名和密码的合法性进行检验,必要时可以提出一个Challenge,要求进一步对用户认证,也可以对NAS进行类
似的认证;
如果合法,给NAS返回Access-Accept数据包,允许用户进行下一步工作,否则返回Access-Reject
数据包,拒绝用户访问;
如果允许访问,NAS向RADIUS服务器提出计费请求Account-Require,RADIUS服务器
响应Account-Accept,对用户的计费开始,同时用户可以进行自己的相关操作。
RADIUS还支持代理和漫
游功能。
简单地说,代理就是一台服务器,可以作为其他RADIUS服务器的代理,负责转发RADIUS认证和计费
数据包。
所谓漫游功能,就是代理的一个具体实现,这样可以让用户通过本来和其无关的RADIUS服务器进行
认证,用户到非归属运营商所在地也可以得到服务,也可以实现虚拟运营。
RADIUS服务器和NAS服务器通
过UDP协议进行通信,RADIUS服务器的1812端口负责认证,1813端口负责计费工作。
采用UDP的基本考虑是因
为NAS和RADIUS服务器大多在同一个局域网中,使用UDP更加快捷方便,而且UDP是无连接的,会减轻RADIUS的
压力,也更安全。
RADIUS协议还规定了重传机制。
如果NAS向某个RADIUS服务器提交请求没有收到返回信
息,那么可以要求备份RADIUS服务器重传。
由于有多个备份RADIUS服务器,因此NAS进行重传的时候,可以采
用轮询的方法。
如果备份RADIUS服务器的密钥和以前RADIUS服务器的密钥不同,则需要重新进行认证。
协议结构
Code域长度为1个字节,用于标明RADIUS报文的类型,如果Code域中的内容是无效值,报文将被丢弃,有
效值如下:
1、请求访问(Access-Request);
2、接收访问(Access-Accept);
3、拒绝访问
(Access-Reject);
4、计费请求(Accounting-Request);
5、计费响应(Accounting-Response
);
11、挑战访问(Access-Challenge);
12、服务器状况(Status-Server—Experimental);
13、客户机状况(Status-Client—Experimental);
255、预留(Reserved) Identifier―
匹配请求和响应的标识符。
Length―信息大小,包括头部。
Authenticator域占用16个字节,用
于RadiusClient和Server之间消息认证的有效性,和密码隐藏算法。
访问请求Access-Request报文中的认证
字的值是16字节随机数,认证字的值要不能被预测并且在一个共享密钥的生命期内唯一。
1.访问请求认
证字 在Access-Request包中认证字的值是16字节随机数,认证字的值要不能被预测,并且在一个共享密钥
的生命期内唯一;
2.访问回应认证字 Access-AcceptAccess-Reject和Access-Challenge包中的认证
字称为访问回应认证字,访问回应认证字的值定义为MD5(Code+ID+Length+RequestAuth+Attributes+Secret)
;
3.计费请求认证字 在计费请求包中的认证字域称为计费请求认证字,它是一个16字节的MD5校验和
,计费请求认证字的值定义为MD5(Code+Identifier+Length+16zerooctets+requestattributes
+sharedsecret);
4.计费回应认证字 在计费回应报文中的认证字域称为计费回应认证字,它的值定
义为MD5(Accounting-ResponseCode+Identifier+Length+theRequestAuthenticatorfieldfromthe
Accounting-Requestpacketbeingrepliedto+theresponseattributes+sharedsecret);
基本消息交互流程
radius服务器对用户的认证过程通常需要利用nas等设备的代理认证功能,radius客户端和radius服务
器之间通过共享密钥认证相互间交互的消息,用户密码采用密文方式在网络上传输,增强了安全性。
radius
协议合并了认证和授权过程,即响应报文中携带了授权信息。
基本交互步骤如下:
(1)用户输入用
户名和口令;
(2)radius客户端根据获取的用户名和口令,向radius服务器发送认证请求包(access-
request)。
(3)radius服务器将该用户信息与users数据库信息进行对比分析,如果认证成功,则将用
户的权限信息以认证响应包(access-accept)发送给radius客户端;
如果认证失败,则返回access-reject
响应包。
(4)radius客户端根据接收到的认证结果接入/拒绝用户。
如果可以接入用户,则radius客户
端向radius服务器发送计费开始请求包(accounting-request),status-type取值为start;
(5)
radius服务器返回计费开始响应包(accounting-response);
(6)radius客户端向radius服务器发送
计费停止请求包(accounting-request),status-type取值为stop;
(7)radius服务器返回计费结束
响应包(accounting-response)。
下面的步骤演示如何在RedHatEnterpriseLinuxAdvancedServer3.0上安装和测试FreeRADIUS1.0.2:
清单1安装和测试FreeRADIUS
tar-zxvffreeradius-1.0.2.tar.gz
-extractitwithgunzipandtar
./configure
make
makeinstall
-runthiscommandasroot
radiusdor
-startRADIUSserver
radiusd-X
-startRADIUSserverindebugmode
radtesttesttestlocalhost0testing123
-testRADIUSserver
如果radtest收到一个响应,则表明FreeRADIUS服务器工作正常。
同时我还推荐另一种免费工具,那就是NTRadPing,它可用于测试来自Windows客户机的验证和授权请求。
它
可以显示从RADIUS服务器发回的详细的响应,例如属性值。
现在让我们来配置FreeRADIUS。
配置FreeRADIUS
RADIUS服务器的配置包括对服务器、客户机和用户的配置(都是用于验证和授权)。
出于不同的需要,对
RADIUS服务器可以有不同的配置。
幸运的是,大多数配置都是类似的。
*配置服务器
FreeRADIUS配置文件通常位于/etc/raddb文件夹下。
首先,我们需要像下面这样修改radiusd.conf文件。
清单2修改radiusd.conf
1)Globalsettings:
log_auth=yes
-logauthenticationrequeststothelogfile
log_auth_badpass=no
-don'
tlogpasswordsifrequestrejected
log_auth_goodpass=no
tlogpasswordsifrequestaccepted
2)LDAPSettings:
modules{
ldap{
server="
"
-thehostnameorIPaddressoftheLDAPserver
port=636
-encryptedcommunications
basedn="
ou=bluepages,o="
-definethebaseDistinguishedNames(DN),
-undertheOrganization(O)"
-intheOrganizationUnit(OU)"
bluepages"
filter="
(mail=%u)"
-specifysearchcriteria
base_filter="
(objectclass=person)"
-specifybasesearchcriteria
}
authenticate{
-enableauthenticationagainstLDAP
Auth-TypeLDAP{
ldap
参数被设为使用IBMBluePages,这是LDAP服务的一个实例。
对于其他LDAP服务器,参数可能有所不同。
*配置客户机
客户机是在/etc/raddb/clients.conf文件中配置的。
有两种方式可用于配置RADIUS客户机。
您可以按IP
subnet将NAS分组(清单3),或者可以按主机名或IP地址列出NAS(清单4)。
如果按照第二种方法,可以
定义shortname和nastype。
清单3按IPsubnet将NAS分组
client192.168.0.0/24{
secret
=mysecret1
-the"
secret"
shouldbethesameasconfiguredonNAS
shortname
=mylan
shortname"
canbeusedforlogging
nastype
=cisco
nastype"
isusedforcheckradandisoptional
}
清单4按主机名或IP地址列出NAS
client192.168.0.1{
=mysecret1
=myserver
=other
*为验证而配置用户
文件/etc/raddb/user包含每个用户的验证和配置信息。
清单5/etc/raddb/user文件
1)Authenticationtype:
Auth-Type:
=LDAP
-authenticateagainstLDAP
=Local,User-Password=="
mypasswd"
-authenticateagainstthe
-passwordsetin/etc/raddb/user
=System
-authenticateagainstthesystempasswordfile
-/etc/passwdor/etc/shadow
2)Servicetype:
Service-Type=Login,
-foradministrativelogin
*为授权而配置用户
下面的验证服务器属性-值对(AV)应该为用户授权而进行配置。
在验证被接受后,这个属性-值对被返回给
NAS,作为对管理员登录请求的响应。
对于Cisco路由器,有不同的权限级别:
级别1是无特权(non-privileged)。
提示符是router>
,这是用于登录的默认级别。
级别15是特权(privileged)。
提示符是router#,这是进入enable模式后的级别。
级别2到14在默认配置中不使用。
下面的命令可以使一个用户从网络访问服务器登录,并获得对EXEC命令的立即访问:
cisco-avpair="
shell:
priv-lvl=15"
下面的代码处理相同的任务,这一次是对于Cisco无线访问点:
Cisco:
Avpair="
aironet:
admin-capability=write+snmp+ident+firmware+admin"
任何功能组合都和这个属性一起返回:
Avpair="
admin-capability=ident+admin"
admin-capability=admin"
请与Cisco联系,以获得关于这些命令的更多信息。
配置网络访问服务器
接下来我们将配置NAS,首先是配置一个Cisco路由器,然后轮到一个CiscoWAP。
对于CiscoIOS12.1路由器,我们将启用AAA,然后配置验证、授权和记帐。
清单6启用AAA
aaanew-model
radius-serverhost192.168.0.100
radius-serverkeymysecret1
AAA在路由器上应该被启用。
然后,指定能为NAS提供AAA服务的RADIUS服务器的列表。
加密密钥用于
加密NAS和RADIUS服务器之间的数据传输。
它必须与FreeRADIUS上配置的一样。
清单7配置验证
aaaauthenticationlogindefaultgroupradiuslocal
linevty04
loginauthenticationdefault
在这个例子中,网络管理员使用RADIUS验证。
如果RADIUS服务器不可用,则使用NAS的本地用户数据库
密码。
清单8配置授权
aaaauthorizationexecdefaultgroupradiusif-authenticated
允许用户在登录到NAS中时运行EXECshell。
清单9配置记帐
aaaaccountingsystemdefaultstart-stopgroupradius
aaaaccountingnetworkdefaultstart-stopgroupradius
aaaaccountingconnectiondefaultstart-stopgroupradius
aaaaccountingexecdefaultstop-onlygroupradius
aaaaccountingcommands1defaultstop-onlygroupradius
aaaaccountingcommands15defaultwait-startgroupradius
必须对路由器进行特别的配置,以使之发送记帐记录到RADIUS服务器。
使用清单9中的命令记录关于NAS系统
事件、网络连接、输出连接、EXEC操作以及级别1和级别15上的命令的记帐信息。
这样就好了。
现在让我们看看为Cisco无线访问点而进行的配置。
下面的配置适用于带有Firmware12.01T1的
Cisco1200SeriesAP。
如图2中的屏幕快照所示,您:
*输入服务器名或IP地址和共享的秘密。
*选择“Radius”作为类型,并选中“UserAuthentication”。
记帐:
工作中的RADIUS
现在所有配置都已经完成,FreeRADIUS服务器可以开始记录NAS发送的所有信息,将该信息存储
在/var/log/radius/radius.log文件中,就像这样:
清单10/var/log/radius/radius.log文件
ThuMar321:
37:
322005:
Auth:
LoginOK:
[David](fromclient
mylanport1cli192.168.0.94)
MonMar723:
39:
532005:
Loginincorrect:
[John](from
clientmylanport1cli192.168.0.94)
详细的记帐信息被存放在/var/log/radius/radacct目录中。
清单11表明,David在2005年3月4日19:
40到
19:
51这段时间里从192.168.0.94登录到了路由器192.168.0.1。
这么详细的信息对于正在调查安全事故以及
试图维护易于审计的记录的管理员来说无疑是一大帮助。
清单11RADIUS提供的记帐细节示例
FriMar
419:
40:
122005
NAS-IP-Address=192.168.0.1
NAS-Port=1
NAS-Port-Type=Virtual
User-Name="
David"
Calling-Station-Id="
192.168.0.94"
Acct-Status-Type=Start
Acct-Authentic=RADIUS
Service-Type=NAS-Prompt-User
Acct-Session-Id="
00000026"
Acct-Delay-Time=0
Client-IP-Address=192.168.0.1
Acct-Unique-Session-Id="
913029a52dacb116"
Timestamp=1109936412
51:
172005
Acct-Status-Type=Stop
Acct-Terminate-Cause=Idle-Timeout
Acct-Session-Time=665
Timestamp=1109937077
结束语
通过遵循本文中列出的简单步骤,您可以建立一个RemoteAuthenticationDial-InUserSer