美文网首页技术干货
给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认证

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