美文网首页技术干货
给Cisco的AP配置RADIUS认证

给Cisco的AP配置RADIUS认证

作者: 贺鱼 | 来源:发表于2017-12-23 12:57 被阅读0次

Cisco的AP是非常牛逼的,最大的特点就是稳定,连续开几个一两百天是不会有问题。另外,负载能力也是一级棒,一个AP带个几十个设备是没有丝毫压力的。再有一个优点就是,虽然新品的价格很贵,但是二手货的价格非常便宜。一两百一个。而且淘宝一搜一大把,非常适合装逼,也很实用。

在企业内部部署wlan的时候呢,平时家里的那种WPA/WPA2这样的认证模式就明显有问题了。 因为企业内部人多,WPA/WPA2认证模式只能设置一个密码,这样的密码在内部分享的话,自然是不好的。于是WPA/WPA2还有企业模式。这里我们用WPA2 Enterprise方式来配置。这种方式呢,是可以开用户,一人一个账号,各自用各自的账号链接wlan,还能给用户做审计,功能相对更加完善。

Cisco的AP12xx系列自然是支持WPA2 Enterprise这样的认证。他的用户开设认证都是通过后台接radius服务器来实现的,下面我们就尝试用linux下的freeradius来搭建一个支持Cisco AP12xx系列设备的账号认证审计服务。

关键字:cisco,aironet, ap, access point, 802.1x, peap, radius , freeradius

安装CentOS

第一步自然是安装操作系统,我们选用目前用的比较多的centos 7来进行搭建。 为了让系统足够的干净,最小化安装,打好补丁,关闭selinux,增加好epel和remi,官方mysql的源,安装好mysql-community-server。

安装freeradius

废话少说,直接用yum,过程比较愉快:

[root@v-radius ~]# yum install freeradius freeradius-utils freeradius-mysql -y

初始化数据库

freeradius里面附带了用mysql做后台时候需要创建的一些表,这些东西默认放在 /etc/raddb/mods-config/sql/main/mysql 目录下面,我们就直接在mysql里面创建一个库,然后把相应的sql导入一下,即可把相应的数据表建好:

[root@v-radius ~]# mysql -u root 
mysql> create database radiusdb charset utf8;
mysql> \q

[root@v-radius ~]# mysql -u root radiusdb < /etc/raddb/mods-config/sql/main/mysql 
[root@v-radius ~]# 

配置radius

radius的配置主要集中在/etc/raddb 下面。centos7的系统已经将相关配置分了类,将不同方面的配置,分散在mods-enabled 和sites-enable 目录下:


image.png

sites-enabled里面主要是关于virtual server的配置(freeradius 2.x开始支持virtual server,相当于httpd里面的虚拟主机)

mods-enabled里面主要是关于各个模块的配置信息。 从管理的角度出发,一般我们的配置是在 mods-available里面配置好相应的模块,然后通过符号连接,连接到mods-enable目录中去。 本文需要用到的几个mod是 mschap, sql和eap。下面分别讲讲这三个配置:

sql

[root@v-radius ~] vi /etc/raddb/mods-available/sql

sql {
  driver = "rlm_sql_mysql"
  dialect = "mysql"

  server = "localhost"
  port = 3306
  login = "root"
  password = ""

  radius_db = "radiusdb"

以上配置,还是容易看懂的。我这是测试环境,所以就直接root连mysql了。 配置完了,别忘了把sql连接到mods-enabled目录下:

[root@v-radius ~] cd /etc/raddb/mods-available
[root@v-radius ~] ln -s sql ../mods-enabled/

eap

EAP是 Extensible Authentication Protocol的缩写,中文翻译成 扩展认证协议,在RFC3748中定义,取代了旧版本的RFC2284。他主要被应用在无线认证环境中。当然这个协议其实现在已经被更新的标准取代了,但是因为历史的原因,配置项还是叫这个名字。 现在主要使用的是 PEAP协议:

PEAP是Protected Extensible Authentication Protocol的缩写,现在各主流操作系统,各大wlan设备制造商都是支持PEAP的。 具体配置项如下:

[root@v-radius ~] cd /etc/raddb/mods-available
[root@v-radius ~] vi eap

eap {

  default_eap_type = peap
  timer_expire = 60

  peap {
    tls = tls-common
    default_eap_type = mschapv2

mschap

mschap这个东西比较熟悉了,windows下的各种PPP, PPPoE,PPTP等,都要用这个东西来认证。

[root@v-radius ~] cd /etc/raddb/mods-available
[root@v-radius ~] vi eap
mschap {
  use_mppe = yes
  require_encryption = yes
  require_strong = yes
...

添加账号信息

帐号信息是添加在 radiusdb库的radcheck表里面:

mysql> insert into radcheck set username='guest', attribute='Cleartext-Password', op=':=', value='testpassword';
mysql> 
初始化数据

配置客户端信息

客户端信息在/etc/raddb/clients.conf 中配置,主要有客户端的IP,连接上来的密码等信息:

[root@v-radius ~] cd /etc/raddb/
[root@v-radius ~] vi clients.conf

client localhost {
  ipaddr = 127.0.0.1
  proto = *
  secret = testing123
...
}

client cisco_ap {
  ipaddr = 10.23.0.0/16
  secret = hehehe12345
  shortname = "Cisco AP12xx"
}

这里定义了两个客户,一个是Localhost,用于测试用的,另一个是cisco_ap,用于无线ap连接用的。

启动freeradius

可以用 -f -X的参数,让radius运行在前台,并且打印出足够多的调试信息,用来找错调试用。
生产环境,可以用 systemctl start radiusd 启动服务。

测试认证

用radtest来测试radius服务是否正常:

[root@v-radius raddb]# radtest guest testpassword localhost 0 testing123
Sent Access-Request Id 71 from 0.0.0.0:37814 to 127.0.0.1:1812 length 75
        User-Name = "guest"
        User-Password = "testpassword"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
        Message-Authenticator = 0x00
        Cleartext-Password = "testpassword"
Received Access-Accept Id 71 from 127.0.0.1:1812 to 0.0.0.0:0 length 20

这就表示测试通过。


image.png

Cisco AP1240的配置

这个配置可以在web中进行,具体见截图。


image.png

测试

操起手机,打开设置,选择 无线局域网,选择我们的SSID,认证的对话框如约而至。输入账号密码,出现了一个界面:


join_cz0011_example_cert.jpg

这Example Server Certificate是什么鬼? 定是默认的配置。要是直接这么弄也能用,但是太low了。

发现证书都在 /etc/raddb/certs 里面,我先把里面的东西做个备份。然后清理了一下:

[root@v-radius ~]# cd /etc/raddb/certs
[root@v-radius certs]# rm -f *.pem *.der *.csr *.crt *.key *.p12 serial* index.txt*

然后分别配置好ca.cnf, server.cnf, client.cnf :

ca.cnf

[root@v-radius certs]# vi ca.cnf
...
[ req ]                                                          
prompt                  = no                                     
distinguished_name      = certificate_authority                  
default_bits            = 2048                                   
input_password          = hehepass1234                                
output_password         = hehepass1234                                
x509_extensions         = v3_ca                                  
                                                                 
[certificate_authority]                                          
countryName             = CN                                     
stateOrProvinceName     = JS                                     
localityName            = Changzhou                              
organizationName        = Internet News Center                   
emailAddress            = hefish@qq.com                          
commonName              = "CZ001 Radius Certificate Authority"   
...

server.cnf

[root@v-radius certs]# vi server.cnf
...
[ req ]
prompt                  = no
distinguished_name      = server
default_bits            = 2048
input_password          = hehe12345
output_password         = hehe12345

[server]
countryName             = CN
stateOrProvinceName     = JS
localityName            = Changzhou
organizationName        = Internet News Center
emailAddress            = hefish@qq.com
commonName              = "CZ001 Radius Server Certificate"
...

client.conf

[root@v-radius certs]# vi client.cnf
...
[ req ]
prompt                  = no
distinguished_name      = client
default_bits            = 2048
input_password          = keke123123
output_password         = keke123123

[client]
countryName             = CN
stateOrProvinceName     = JS
localityName            = Changzhou
organizationName        = Internet News Center
emailAddress            = hefish@qq.com
commonName              = sample@cziic.cn
...

证书有效期在ca.cnf里面控制, [CA_default]里面 default_days,默认是60天,可以改的长点,比如36500天。

之后,我们用bootstrap脚本来生成ca, server, client的证书:

[root@v-radius certs]# ./bootstrap 

证书生成好,记得要修改eap配置里面的服务器证书密码:

[root@v-radius certs]# vi ../mods-enabled/eap
...
tls-config  tls-common {
    private_key_password = hehe12345
    private_key_file = ${certdir}/server.pem
...

然后重启radius服务。再次连接WLAN:


join_cz0011_cz001_cert.jpg

不错不错。很好,很强大!

相关文章

  • 给Cisco的AP配置RADIUS认证

    Cisco的AP是非常牛逼的,最大的特点就是稳定,连续开几个一两百天是不会有问题。另外,负载能力也是一级棒,一个A...

  • rucks 自动重启

    上周rucks ap 遇到一个故障,某个ap对外发送多个ssid ,其中两个ssid基于radius+AD认证, ...

  • 搭建小型局域网

    Packet Tracer 是 Cisco 公司针对 CCNA 认证开发的一个用来设计、配置和故障排除网络的模拟软...

  • ccna学习 01

    CISCO认证--CCNA(初级)/CCNP-CCIP(中级)/CCIP(高级) CCNA学习体系 Cisco路由...

  • 思科、华为认证考试详细介绍

    思科认证: 思科认证报名网站:https://home.pearsonvue.com/cisco[https://...

  • Cisco WLC DHCP Option 43

    可以通过DHCP选项43将Cisco Aironet无线控制器地址提供给您的接入点,因此您无需手动配置每个AP本...

  • wifidog无线认证RADIUS 配置指南

    RADIUS 是通信网络中负责认证、鉴权、计费的服务节点。它通常和各种网络接入服务节点相连,如路由器、交换机、RA...

  • CCNP培训平台,首选IT易学网

    思科Cisco认证是由网络领域著名厂商--思科Cisco公司推出的。 该认证可证明持证者已掌握网络的基本知识,能利...

  • radius服务器运行过程

    消息交互 radius服务器对用户的认证过程通常需要利用nas等设备的代理认证功能,radius客户端和radiu...

  • CCNA&CCNP&CCIE

    CCNA(Cisco Certified Network Associate):思科认证网络工程师CCNA认证标志...

网友评论

    本文标题:给Cisco的AP配置RADIUS认证

    本文链接:https://www.haomeiwen.com/subject/mpmxgxtx.html