认证原理与实现.docx

上传人:b****6 文档编号:4300681 上传时间:2022-11-29 格式:DOCX 页数:11 大小:23.01KB
下载 相关 举报
认证原理与实现.docx_第1页
第1页 / 共11页
认证原理与实现.docx_第2页
第2页 / 共11页
认证原理与实现.docx_第3页
第3页 / 共11页
认证原理与实现.docx_第4页
第4页 / 共11页
认证原理与实现.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

认证原理与实现.docx

《认证原理与实现.docx》由会员分享,可在线阅读,更多相关《认证原理与实现.docx(11页珍藏版)》请在冰豆网上搜索。

认证原理与实现.docx

认证原理与实现

认证原理与实现

  RADIUS是一种C/S结构的协议,它的客户端最初就是NAS(NetAccessServer)服务器,现在任何运行

RADIUS客户端软件的计算机都可以成为RADIUS的客户端。

RADIUS协议认证机制灵活,可以采用PAP、CHAP或者

Unix登录认证等多种方式。

RADIUS是一种可扩展的协议,它进行的全部工作都是基于Attribute-Length-

Value的向量进行的。

RADIUS也支持厂商扩充厂家专有属性。

  由于RADIUS协议简单明确,可扩充,因此得

到了广泛应用,包括普通电话上网、ADSL上网、小区宽带上网、IP电话、VPDN(VirtualPrivateDialup

Networks,基于拨号用户的虚拟专用拨号网业务)、移动电话预付费等业务。

最近IEEE提出了802.1x标准,

这是一种基于端口的标准,用于对无线网络的接入认证,在认证时也采用RADIUS协议。

 

历史

  RADIUS协议最初是由Livingston公司提出的,原先的目的是为拨号用户进行认证和计费。

后来经过多次

改进,形成了一项通用的认证计费协议。

  创立于1966年MeritNetwork,Inc.是密执安大学的一家非营利

公司,其业务是运行维护该校的网络互联MichNet。

1987年,Merit在美国NSF(国家科学基金会)的招标中胜

出,赢得了NSFnet(即Internet前身)的运营合同。

因为NSFnet是基于IP的网络,而MichNet却基于专有网络

协议,Merit面对着如何将MichNet的专有网络协议演变为IP协议,同时也要把MichNet上的大量拨号业务以及

其相关专有协议移植到IP网络上来。

  1991年,Merit决定招标拨号服务器供应商,几个月后,一家叫

Livingston的公司提出了建议,冠名为RADIUS,并为此获得了合同。

  1992年秋天,IETF的NASREQ工作组

成立,随之提交了RADIUS作为草案。

很快,RADIUS成为事实上的网络接入标准,几乎所有的网络接入服务器厂

商均实现了该协议。

  1997年,RADIUSRFC2058发表,随后是RFC2138,最新的RADIUSRFC2865发表于2000

年6月。

 

基本工作原理

  用户接入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       -don'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      -the"shortname"canbeusedforlogging

  nastype     =cisco     -the"nastype"isusedforcheckradandisoptional

}

 

清单4按主机名或IP地址列出NAS

client192.168.0.1{

  secret     =mysecret1

  shortname  =myserver

  nastype     =other

}

 

*为验证而配置用户

文件/etc/raddb/user包含每个用户的验证和配置信息。

清单5/etc/raddb/user文件

1)Authenticationtype:

Auth-Type:

=LDAP      -authenticateagainstLDAP

Auth-Type:

=Local,User-Password=="mypasswd"

                       -authenticateagainstthe

                       -passwordsetin/etc/raddb/user

Auth-Type:

=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"

任何功能组合都和这个属性一起返回:

Cisco:

Avpair="aironet:

admin-capability=ident+admin"

Cisco:

Avpair="aironet:

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:

Auth:

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

FriMar 419:

51:

172005

       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=Stop

       Acct-Authentic=RADIUS

       Service-Type=NAS-Prompt-User

       Acct-Session-Id="00000026"

       Acct-Terminate-Cause=Idle-Timeout

       Acct-Session-Time=665

       Acct-Delay-Time=0

       Client-IP-Address=192.168.0.1

       Acct-Unique-Session-Id="913029a52dacb116"

       Timestamp=1109937077

结束语

通过遵循本文中列出的简单步骤,您可以建立一个RemoteAuthenticationDial-InUserSer

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1