设为首页 收藏本站
查看: 1915|回复: 0

[经验分享] Freeradius+Cisco2960S+windows AD实现有线802.1x认证

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-7 09:01:09 | 显示全部楼层 |阅读模式
                      概述  feeradius是一个免费开源的 AAA服务器,更能强大,很多功能不输商业化软件。曾经试过很多类似的软件,如Cisco的ACS,微软的NAP等,思科的不错就是太贵,微软的感觉不好用。本例主要实现freeradius3版本通过windows AD 及证书验证,实现在Cisco系列交换机上基于端口的802.1x认证,只有加入域的计算机和用户并且开启了认证才可以联网,否则交换机端口将其划入guest Vlan进行隔离修补。这里借鉴了官方文档的部分图片和内容,但官网有些方面说的还是不够完整,有些步骤省略了,因此本人结合自己的工作环境重新写了以下。拓扑如下:
          QQ截图20160107085954.jpg
环境准备
1.      CentOS7.2     【radius 服务器】
2.      Windows 2012   【AD服务区和CA机构,域名为test.com.cn】
3.      Windows 7 SP1  【客户端】
4.      FreeRadius 3.0
5.      Samba 3.0
6.      Openssl
7.      Cisco 2960S交换机
【这里需要提前把Windows域控制器准备好,并安装好CA证书颁发机构,建立一个用户jack用于测试】

linux server安装配置1.    安装配置samba,
  • 安装组件,【关门闭防火墙和selinux】

1
yuminstall samba samba-client samba-winbind krb5-server



  • 配置/etc/samba/smb.con
    在[global]部分修改如下内容:

1
2
3
4
5
workgroup =  TEST                #指定域的netbios名称
security = ads                  #指定samba的工作模式,和域集成
winbind use default domain = no        
password server = 10.10.10.10           #指定定身份验证的服务器为域控
realm = TEST.COM.CN               #指定AD域名



[home]段默认配置即可

配置/etc/krb5.conf,这里严格区分大小写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[logging]
default =FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server =FILE:/var/log/kadmind.log

[libdefaults]
default_realm = TEST.COM.CN                         #指定域名
dns_lookup_realm = false                                 
dns_lookup_kdc = false

[realms]
TEST.COM.CN = {
  kdc = 10.10.10.10:88                               #指域控为kdc服务器及端口
  admin_server = 10.10.10.10:749                     #指定域控的管理端口
  default_domain = test.com.cn
}

[domain_realm]
.test.com.cn = TEST.COM.CN
test.com.cn = TEST.COM.CN

[kdc]
  profile =/var/kerberos/krb5kdc/kdc.conf

[appdefaults]
pam = {
  debug = false
  ticket_lifetime = 36000
  renew_lifetime = 36000
  forwardable = true
  krb4_convert = false
}



  • 编辑/etc/nsswich.conf,在下列行末尾加 “winbind”

1
2
3
4
5
6
7
8
9
10
11
passwd:     files sss winbind
shadow:     files sss winbind
group:      files sss winbind

protocols:  files sss winbind

services:   files sss winbind

netgroup:   files sss winbind

automount:  files sss winbind



  • 将samba和winbind服务设置为开机启动,然后重启服务器,确定samba和winbind已经启动

1
2
Systemctl enable smb
Systemctlenable winbind



  • 重启后测试samba与域控的连通性并加入域并测试

1
2
3
4
5
6
Kinit administrator@TEST.COM.CN     #域名必须大写,输入密码后不返回结果说明没错误

net join –U Administrator       #加入域
wbinfo –a  jack%password       #测试与用户认证,只要最后结尾是如下就代表成功

   “challenge/response password authentication succeeded



  • 测试NTLM认证,【ntlm是windows 域环境下的认证方式】

ntlm_auth –-request-nt-key –-domain=TEST –-username=jack如果结果正确则返回:
NT_STATUS_OK : Success (0x0)
  • 修改/var/lib/samba/winbindd_privileged权限,在3.0中只要将用户radiusd加入wbpriv组即可,这个组有相应的访问权限:

usermod –G wbpriv radiusd否则就需要手动赋予权限【不建议这样使用】:
chown –R root.radiusd /var/lib/samba/winbindd_privileged2.    安装配置FreeRadius
  • 安装组件

yum install freeradius openssl
  • 添加交换机客户端。配置客户端文件/etc/raddb/clients.conf,该文件是添加radius通信客户端的,比如交换机,这里我么用的是Cisco的交换机,

1
2
3
4
5
6
7
client 192.168.2.0/24 {            #交换机所处网段,也可以是单独的IP地址

     secret      = password     #预共享密码
     shortname    = network1      #该客户端项的友好名称
     nas_type     = cisco      #指定网络客户端设备类型





l  配置FreeRadius 使用MS-CHAP,编辑 /etc/raddb/mods-available/mschap文件,设置如下参数:
with_ntdomain_hack = yesntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --username=%{mschap:User-Name}:-None} --challenge=%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00} --domain=%{%{mschap:NT-Domain}:-TEST}"
编辑/etc/raddb/mods-available/eap文件,修改如下参数:

default_eap_type = peap.

random_file = /dev/urandom

l  配置FreeRadius使用 ntlm_auth,编辑/etc/raddb/mods-enabled/ntlm_auth,修改如下:
       exec ntlm_auth {                wait = yes                program = "/usr/bin/ntlm_auth --request-nt-key --domain=TEST.COM.CN --username=%{mschap:User-Name} --password=%{User-Password}"        }编辑/etc/raddb/sites-enabled/default 和/etc/raddb/sites-enabled/inner-tunnel文件,修改如下:
authenticate {        ...        ntlm_auth        ...}
  • 启动并测试Freeradius通信验证:

radius –X            #启动radius服务进程,该进程默认在前端运行,可以实施输出debug信息,便于排错。实际用的使用可以将其加入开机自动启动,让其在后台运行测试mschap与域控通信验证:【该测试是以本机为客户端进行测试的,因为还没有配置交换机】
radtest jack password localhost 0 testing123                   如果认证成功会收到如下字样信息:
ad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=231, length=84
3.    配置证书
以上步骤如果测试没问题就把radius基本环境配置好了,现在要配置Freeradius服务器证书,再有windows域的企业内绝大多数会使用windows集成的CA机构,freeradius服务器上的openssl只是用来做证书申请使用。
l  Radius服务器上申请证书请求
进入到/etc/raddb/certs目录,理论上可以把这里面所有的文件全部删除掉,然后重新通过openssl进行申请证书
(umask 077 ; openssl genrsa –out server.key 1024)                       #生成证书私钥openssl req –new –key server.key –out server.req                        #生成证书请求
l  申请证书.
通过访问域控的http://10.10.10.10/certsrv 下载根证书即CA证书,重命名为ca.cer。然后“申请证书->高级证书申请”,使用base64编码申请。通过server.req申请base64编码的证书,下载并命名为server.cer

l  配置证书
将申请的根证书和服务器证书上传到/etc/raddb/certs目录下,由于通过windows申请的证书是.cer格式的,而linux下证书一般是pem格式,因此要做如下格式转换:
openssl x509 inform der –in ca.cer –out ca.pemopenssl x509 inform der –in server.cer –out server.pem
到此FreeRadius服务器上的所有配置已经完成。
交换机配置本例采用的Cisco2960S交换机,要开启aaa,配置radius服务器和认证组,并在端口启用dot1x认证和guest vlan,具体配置如下:
#全局配置enable aaa new-modelaaa authentication dot1x default group radiusaaa authorization network default group radiusdot1x system-auth-controldot1x guest-vlan supplicant
radius-server host 192.168.2.16 auth-port 1812 acct-port 1813 timeout 3radius server retransmit 2radius server cisco
#端口配置,interface G1/0/1(config-if)# switchport mode access(config-if)# switchport access vlan 10       #配置该端口默认为vlan10(config-if)# dot1x port-control auto(config-if)# authentication event no-response action authorize vlan 771 #配置guest vlan,当检测到该机器没加入域,则将其划到vlan 771中
Windows客户端配置1.开启dot1x服务打开服务管理 services.msc,将如下图服务开启,并设置为自动。域中的客户端可以通过组策略统一下发开启服务。 QQ截图20160107090010.jpg
2.查看设置网卡
当开启服务后,网卡属性里面自动会出现” 身份验证选项“,其实通常情况下什么都不需要更改,默认即可。但如果出现问题可以查看以下选项情况。
QQ截图20160107090020.jpg    QQ截图20160107090028.jpg

点击 设置 ,确保如下选项已选,其实windows默认情况
QQ截图20160107090036.jpg    QQ截图20160107090043.jpg

如果都配置好之后,正常情况下就已经生效了,该方式验证是同时验证机器和用户的身份,windows客户端加入域可以通过组策略自动组册证书,因此不需要再重新配置客户端证书,windows环境下要充分组策略的优势。
总结  这里的步骤只是仅仅安装可以使用,以后会再写一个后端集成mysql数据的文章,实现数据信息记录的保存等。

                   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-161219-1-1.html 上篇帖子: Cisco堆叠配置步骤+链路聚合实例 下篇帖子: Cisco N7K 四层模块式交换机 windows 认证
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表