Freeradius测试环境搭建
AAA服务器和RADIUS协议
AAA(Authentication,Authorization,Accounting)验证,受权,记帐。AAA服务器主要功能是:哪些用户具备访问权限,具备访问权限的用户 又能够访问哪些服务,对用户正在使用的网络资源进行计帐。
RADIUS(Remote Authentication Dial In User Service)协议是惟一的AAA标准。RADIUS协议是基于UDP的一种客户机/服务器协议。RADIUS客户机是网络访问服务器,它一般是一个路由器,交换机或者无线访问点。RADIUS服务器一般是运行在linux或Windows服务器上的一个监护程序。 RADIUS协议的认证端口是1812,记帐端口是1813。
RADIUS协议的特色:
1. Client/Server模式
RADIUS协议是C/S结构协议,客户端是把用户信息传递给RADIUS服务器,并负责执行返回的响应。 RADIUS服务器负责接受用户的请求,对用户身份进行认证,并为客户端返回全部为用户提供服务所必须的配置信息。RADIUS服务器能够为其余的RADIUS Server担当代理。
2. 网络安全
客户端和RADIUS服务器之间的交互通过共享密钥认证,另外避免有人在网络上监听获取用户密码,客户端和服务器以前的任何的通讯都是通过加密后传输的。
3. 认证机制
RADIUS服务器能够采用多种认证方式鉴别用户的合法性,当用户提供了用户名密码后,RADIUS服务器能够支持点对点的PAP认证(PPP PAP),点对点的CHAP认证(PPP CHAP),UNIX的登录操做(UNIX Login)和其余认证机制。
RADIUS的工做过程:
1. 用户输入用户名密码等信息到客户端
2. 客户端产生一个接入请求报文到RADIUS服务器,其中包含了用户名,密码,客户端ID和用户访问端口的ID,密码都是通过MD5加密的。
3. RADIUS服务器对用户进行认证
4. 若是认证成功,RADIUS服务器想客户端发送容许接入包,不然就发送拒绝接入包。
5. 若客户端接受到容许接入包,则为用户创建链接,对用户进行受权和提供服务;若接受到拒绝接入包,则拒绝用户接入请求。
6. 客户端发送计费请求给RADIUS服务器
7. RADIUS服务器接受到计费请求包后开始计费,并向客户端回送开始计费的响应包。
8. 用户断开链接,客户端发送中止计费包给RADIUS服务器
9. RADIUS服务器接收到中止计费包后中止计费,并向客户端发送中止计费响应包,完成该用户的一次计费,记录计费信息。
Freeradius的安装配置
Freeradius是开源免费并彻底兼容RADIUS协议的RADIUS服务器和客户端软件,能够用它对用户的接入和访问特定的网络进行有效的控制,受权,计费等等,它支持多种验证,包括文件,LDAP,数据库等等。
测试环境:
192.168.2.97 freeradius server
192.168.2.226 test.com(域服务器)
192.168.2.110 测试client
配置hosts文件,freeradius测试时须要解析主机名
192.168.2.226 test.com
192.168.2.97 freeradius.test.com
修改freeradius的主机名
[root@lamp ~]# vim /etc/sysconfig/network
HOSTNAME=freeradius.test.com
Freeradius与AD结合须要用的组件有freeradius,samba,krb5-server,直接yum安装以上组件便可,安装samba krb5-server freeradius2 freeradius2-util
-
[root@lamp ~]
-
[root@lamp ~]
-
[global]
-
workgroup = test
-
realm = test.com
-
netbios name = freeradius
-
security = ads
-
password server = testtest.test.com
-
winbind separator = +
-
idmap uid = 10000-20000
-
idmap gid = 10000-20000
-
winbind enum users = yes
-
winbind enum groups = yes
-
nt acl support = yes
-
winbind cache time = 0
-
template shell = /bin/bash
-
template homedir = /home/%D/%U
-
winbind use default domain =yes
-
[homes]
-
comment = Home Directories
-
path = /home/%D/%U
-
browseable = no
-
writable = yes
-
-
valid users = %U
-
[root@freeradius ~]
-
passwd: files winbind
-
shadow: files winbind
-
-
group: files winbind
-
[root@lamp ~]
-
[libdefaults]
-
default_realm = test.COM
-
dns_lookup_realm = false
-
dns_lookup_kdc = false
-
ticket_lifetime = 24h
-
forwardable = yes
-
[realms]
-
test.COM = {
-
kdc = testtest.test.com:88
-
admin_server = testtest.test.com:749
-
default_domain = test.com
-
}
-
[domain_realm]
-
.example.com = EXAMPLE.COM
-
-
example.com = test.COM
-
[root@lamp ~]
-
[realms]
-
test.COM = {
-
-
acl_file = /var/kerberos/krb5kdc/kadm5.acl
-
dict_file = /usr/share/dict/words
-
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
-
supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hm
-
ac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal des-cbc-crc:v4 des-cbc
-
-crc:afs3
-
-
}
-
[root@lamp ~]
-
-
Password for administrator@test.COM:
-
若是没有什么报错就说明通讯正常。
-
[root@freeradius ~]
-
Starting SMB services: [ OK ]
-
Starting NMB services: [ OK ]
-
[root@freeradius ~]
-
[root@freeradius ~]
-
-
[root@freeradius ~]
-
[root@freeradius ~]
-
Password:
-
-
Joined domain test.
-
[root@freeradius ~]
-
-
checking the trust secret via RPC calls succeeded
-
[root@freeradius ~]
-
administrator
-
guest
-
krbtgt
-
ddclic
-
test01
-
test02
-
[root@freeradius ~]
-
BUILTIN+administrators
-
BUILTIN+users
-
domain computers
-
domain controllers
-
schema admins
-
-
enterprise admins
-
[root@freeradius ~]
-
test1:*:10033:10008:test1:/home/test/test1:/bin/bash
-
test2:*:10034:10008:test2:/home/test/test2:/bin/bash
-
test3:*:10035:10008:test3:/home/test/test3:/bin/bash
-
test4:*:10036:10008:test4:/home/test/test4:/bin/bash
-
-
test5:*:10037:10008:test5:/home/test/test5:/bin/bash
-
-
-
[root@freeradius ~]
-
-
[root@freeradius ~]
-
exec ntlm_auth {
-
wait = yes
-
program = "/usr/bin/ntlm_auth --request-nt-key --domain=test.COM --username=%{mschap
-
:User-Name} --password=%{User-Password}"
-
-
} }
-
[root@freeradius ~]
-
authenticate {
-
ntlm_auth
-
}
-
[root@freeradius ~]
-
authenticate {
-
ntlm_auth
-
-
}
-
[root@freeradius ~]
-
-
DEFAULT Auth-Type = ntlm_auth
-
[root@freeradius ~]
-
policy {
-
-
-
ntlm_auth.authorize {
-
if (!control:Auth-Type && User-Password) {
-
update control {
-
Auth-Type := ntlm_auth
-
}
-
}
-
}
-
-
}
-
[root@freeradius ~]
-
[root@freeradius ~]
-
Sending Access-Request of id 48 to 127.0.0.1 port 1812
-
User-Name = "test"
-
User-Password = "123456"
-
NAS-IP-Address = 192.168.2.97
-
NAS-Port = 0
-
Message-Authenticator = 0x00000000000000000000000000000000
-
-
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=48, length=20
-
-
[root@freeradius ~]
-
-
-
-
[root@freeradius ~]
-
ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --username=%{mschap:User-Name:-None} --domain=%{%{mschap:NT-Domain}:-test.COM} --challenge=%{%{mschap:Challenge}:-00} --n
-
-
t-response=%{%{mschap:NT-Response}:-00}"
-
-
[root@freeradius ~]
-
Sending Access-Request of id 127 to 127.0.0.1 port 1812
-
User-Name = "test"
-
NAS-IP-Address = 192.168.2.97
-
NAS-Port = 0
-
Message-Authenticator = 0x00000000000000000000000000000000
-
MS-CHAP-Challenge = 0x0f1ec04f5f7f3ec2
-
MS-CHAP-Response = 0x000100000000000000000000000000000000000000000000000085c8068f30dcb423d1e6f7ed5db18b53a1d321ceb8f2266c
-
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=127, length=38
-
-
MS-CHAP-Error = "\000E=691 R=1"
-
-
Exec-Program output: winbind client not authorized to use winbindd_pam_auth_crap. Ensure permissions on /var/cache/samba/winbindd_privileged are set correctly. (0xc0000022)
-
-
Exec-Program-Wait: plaintext: winbind client not authorized to use winbindd_pam_auth_crap. Ensure permissions on /var/cache/samba/winbindd_privileged are set correctly. (0xc0000022)
-
-
[root@freeradius ~]
-
[root@freeradius samba]
-
[root@freeradius samba]
-
Shutting down Winbind services: [ OK ]
-
Starting Winbind services: [ OK ]
-
-
[root@freeradius ~]
-
-
[root@freeradius samba]
-
Sending Access-Request of id 231 to 127.0.0.1 port 1812
-
User-Name = "test"
-
NAS-IP-Address = 192.168.2.97
-
NAS-Port = 0
-
Message-Authenticator = 0x00000000000000000000000000000000
-
MS-CHAP-Challenge = 0x58a8d7e945e9ed8f
-
MS-CHAP-Response = 0x00010000000000000000000000000000000000000000000000000fcd072553b1813344cbe6d3fc3fe5e1ecbf853eaf5a4a03
-
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=231, length=84
-
MS-CHAP-MPPE-Keys = 0x0000000000000000c2bea7b13efd39e82dcd04478fb185370000000000000000
-
MS-MPPE-Encryption-Policy = 0x00000001
-
-
MS-MPPE-Encryption-Types = 0x00000006