给Cisco的AP配置RADIUS认证

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容