WiFi-Enterprise环境搭建

  • 背景
  • 搭建
    • 网络拓扑图
    • Local PEAP
    • EAP-PEAP
    • EAP-TLS
  • 总结

背景

由于我们当前行业终端产品的面向客户群体是企业级用户,因此针对个人的wpa/wpa2-psk认证方式无法满足客户对Security的需求,而企业环境下的wifi解决方案非WPA/WPA2-EAP莫属。
所以搭建WPA/WPA2-EAP测试环境不管是对开发调试还是测试来说都势在必行。


搭建

网络拓扑图

网络拓扑图如下:

当前被WiFi Alliance认可的基于TLS的EAP方式主要有两种,分别是EAP-PEAP和EAP-TLS,区别是EAP-PEAP是证书单项认证,只需要服务器提供证书给客户端。而EAP-TLS是证书双向认证,需要客户端上传客户端证书。


我们先讲EAP-PEAP的实现方式,EAP-PEAP有两种实现方式,当我们没有认证服务器时可以在WLC上通过Local EAP的方式实现。具体步骤如下:

Local PEAP

  1. 首先登录WLC管理网页,点击Advance进入高级管理页面,在Security-Loacl EAP-Profile页面下新建Local Eap配置并勾选LEAP和PEAP,如下图:

  2. 在AAA设置的Local Net Users管理界面添加登录用户,这里设置的用户名和密码将会在客户端登录时用到,如下图:

  3. 在WLAN管理界面新建WLAN并将Security Layer2将加密协议设置成WPA/WPA2,认证方式选择802.1x:

  4. 在WLAN的AAA Server 勾选RADIUS Server Overwrite interface ,勾选Local EAP Authentication 并选择刚刚我们新建的Local Eap Profile:

  5. Android端选择刚新建的WLAN,EAP method选择PEAP,CA certificate选择Do not validate,Identity填入Local User时新建的用户名,PassWord 填入密码,点击连接,能连接成功说明配置成功。


EAP-PEAP

EAP-PEAP的实现需要用到认证服务器,在Windows平台上需要用windows server系统,价格机器昂贵,秉承勤俭节约的原则,我们选择在ubuntu上部署免费的FreeRadius服务器。EAP-PEAP与Local PEAP相比我们需要添加认证服务器,并在WLC上配置。

首先配置Freeradius认证服务器

  • 安装命令

    sudo apt-get install freeradius
    
  • 配置client,设置用户访问的网段信息

    cd /etc/freeradius
    sudo vim clients.conf
    # 在配置文件中添加当前的测试网段信息
    client 10.0.0.0/24 {secret          = ciscoshortname       = MDtestNetwork}
    
  • 配置users,添加用户组

    sudo vim user.conf# 添加需要接入的用户组信息,以下示例添加2组用户
    MDtest  Cleartext-Password := "ciscotest"
    MDsoft  Cleartext-Password := "ciscosoft"
    
  • 启用EAP

    cd /etc/freeradius/
    sudo vim radiusd.conf
    # 去掉以下语句前的 "#"以取消注释
    $INCLUDE ${confdir}/modules/
    $INCLUDE eap.conf
    
  • 重启Freeradius服务

    sudo server freeradius stop
    sudo freeradius -X
    

配置WLC

  • 进入WLC高级管理界面,在Security-AAA-Radius-Authentication,下面新建Radius服务器配置,Server IP 填写Ubuntu认证服务器地址,端口填写1812,Shared Secret填写Freeradius服务器clients.conf底下配置的secret:

  • 在WLAN管理界面新建WLAN并将Security Layer2将加密协议设置成WPA/WPA2,认证方式选择802.1x:

  • 在Security-AAA Server配置下勾选RADIUS Server Overwrite interface,勾选Authentication Servers,并在下拉栏选中刚添加的认证服务器IP,取消勾选Local EAP:

Android端的配置同 Local PEAP一样,只要用户名密码输入Ubuntu认证服务器里users用户组的用户名和密码即可。


EAP-TLS

EAP-TLS由于使用的是双向证书认证方式,因此我们需要生成3个证书来实现,分别是 CA根证书,服务器证书客户端证书,其中服务器证书和客户端证书需要需要添加CA签名。我们可以通过OpenSSL来生成对应的3种证书。

生成证书文件

  • 安装OpenSSL,tinyca

    sudo apt-get install openssl
    sudo apt-get install tinyca
    sudo tinyca2
    
  • 配置Openssl,修改/usr/local/etc/rad-db/certs/xpextensions文件为以下内容,否则在Freeradius认证过程中,握手之后,客户端会向Freeradius服务器发送多余的信息,导致认证失败。

    [xpclient_ext]
    extendedKeyUsage=1,3,6,1,5,5,7,3,2
    [xpserver_ext]
    extendedKeyUsage=1,3,6,1,5,5,7,3,1
    
  • 配置tinyca2,进入tinyca2主界面,点击Perference-OpenSSL Configuration,然后进入Server Certificate Settings,在Extended Key Usage选项填写xpextensions文件中xpserver_ext对应的1,3,6,1,5,5,7,3,1。

  • 进入Client Certificate Settings,在Extended Key Usage选项填写xpextensions文件中xpclient_ext对应的1,3,6,1,5,5,7,3,2。

  • 使用tinyca2生成证书,先生成CA证书,需要输入证书名,密码,国家,省,市,公司,部门和邮箱等信息。Tips:Keylength可以选最小的1024以加快认证速度。

  • 生成CA证书后点击tinyca2界面上的Requests,进入Requests后右击New request,同生成CA证书的方式继续生成两份证书,分别名称未server和client。

  • 右击上一步生成的证书,点击Sign Request用CA证书来给证书签名,server签名为server证书,client签名为client证书。

  • 导出server证书,点击Certificats界面,在server证书上右键选择Export Certificate,格式选择PEM,Include Key 勾选yes。

  • 导出Client证书,因为我们时测试android设备,android设备不支持PEM格式,因此我们需要导出PKCS#12 格式,Include Key 勾选yes。

  • 导出CA证书,点击界面上的Export CA导出CA证书,格式为PEM,点击界面上的Export CRL,导出CRL 格式为PEM。

配置Radius服务器

  • 将生成的 server.pem CA.pem crl.pem 拷贝到 Freeradius 目录的Certs目录下,并赋予读写权限。

    cp server.pem CA.pem crl.pem /etc/freeradius/Carts/
    cd /etc/freeradius/Carts/
    sudo chmod -R 666 *
    
  • 更改Freeradius的认证类型,修改eap.conf文件中以下内容

    cd /etc/freeradius
    sudo vim eap.conf
    
    eap {#  Invoke the default supported EAP type when#  EAP-Identity response is received.##  The incoming EAP messages DO NOT specify which EAP#  type they will be using, so it MUST be set here.##  For now, only one default EAP type may be used at a time.##  If the EAP-Type attribute is set by another module,#  then that EAP type takes precedence over the#  default type configured here.#default_eap_type = tls  # 此处由peap更改为tls#  A list is maintained to correlate EAP-Response#  packets with EAP-Request packets.  After a#  configurable length of time, entries in the list#  expire, and are deleted.#timer_expire     = 60
    
     tls {##  These is used to simplify later configurations.#certdir = ${confdir}/certs # 证书目录cadir = ${confdir}/certsprivate_key_password = cisco # 生成证书时的私钥private_key_file = ${certdir}/server.pem # 服务器证书地址#  If Private key & Certificate are located in#  the same file, then private_key_file &#  certificate_file must contain the same file#  name.##  If CA_file (below) is not used, then the#  certificate_file below MUST include not#  only the server certificate, but ALSO all#  of the CA certificates used to sign the#  server certificate.certificate_file = ${certdir}/server.pem # 服务器证书地址#  Trusted Root CA list##  ALL of the CA's in this list will be trusted#  to issue client certificates for authentication.##  In general, you should use self-signed#  certificates for 802.1x (EAP) authentication.#  In that case, this CA file should contain#  *one* CA certificate.##  This parameter is used only for EAP-TLS,#  when you issue client certificates.  If you do#  not use client certificates, and you do not want#  to permit EAP-TLS authentication, then delete#  this configuration item.CA_file = ${cadir}/CA.pem # CA证书地址##  For DH cipher suites to work, you have to#  run OpenSSL to create the DH file first:##       openssl dhparam -out certs/dh 1024#dh_file = ${certdir}/dhrandom_file = /dev/urandom
    
  • 重新启动Radius服务器

    sudo service freeradius stop
    sudo freeradius -X
    

至此TLS证书服务器已经配置好了。

EAP-TLS认证方式 WLC的配置和EAP-PEAP一样,不需要重新配置,这里就不复述了。

Android客户端配置

  • 安装客户端证书
    将tinyca2中生成的client.P12拷贝到手机内存根目录下,进入手机 Settings->Security&Location->Encryption&credentials->Install from SD card,设置好后选择刚才导入的client证书文件,输入生成证书时设置的密码,在证书的用途选项里选择Wi-Fi,可以看到证书中已经包含一个CA证书和一个用户证书,点击安装后会提示需要设置PIN码,设置以后即可安装成功。

  • 进入WiFi界面,点击连接测试WiFi,EAP method选择TLS,CA certificate 和User certificate 均选择 client,Identify 填写用户组名,点击连接,连接成功说明配置OK。

  • 从Radius服务器的log上也可以看出来 EAP-TLS认证成功。

      Sending Access-Challenge of id 209 to 10.0.0.1 port 32771EAP-Message = 0x0107003d0d8000000033140303000101160303002892aa9fe5997b7fcf7f8f480642a3db44dfc7387e96bda8cedde8a14674f795441b8ce7124284ced2Message-Authenticator = 0x00000000000000000000000000000000State = 0xb64bae9eb34ca369095beaa8b3f54b0dFinished request 5.Going to the next requestWaking up in 4.7 seconds.rad_recv: Access-Request packet from host 10.0.0.1 port 32771, id=210, length=268User-Name = "MDtest"Chargeable-User-Identity = ""Location-Capable = Civix-LocationCalling-Station-Id = "00-08-22-2c-b8-fb"Called-Station-Id = "08-ec-f5-e6-8d-e0:CISCO-EAP"NAS-Port = 1Cisco-AVPair = "audit-session-id=0a0000010000008a5d773c2e"Acct-Session-Id = "5d773c2e/00:08:22:2c:b8:fb/150"NAS-IP-Address = 10.0.0.1NAS-Identifier = "Cisco_de:41:64"Airespace-Wlan-Id = 1Service-Type = Framed-UserFramed-MTU = 1300NAS-Port-Type = Wireless-802.11EAP-Message = 0x020700060d00State = 0xb64bae9eb34ca369095beaa8b3f54b0dMessage-Authenticator = 0xd3bdd1bbbd754a771ec78aa1d81d2684# Executing section authorize from file /etc/freeradius/sites-enabled/default+group authorize {++[preprocess] = ok++[chap] = noop++[mschap] = noop++[digest] = noop[suffix] No '@' in User-Name = "MDtest", looking up realm NULL[suffix] No such realm "NULL"++[suffix] = noop[eap] EAP packet type response id 7 length 6[eap] No EAP Start, assuming it is an on-going EAP conversation++[eap] = updated[files] users: Matched entry MDtest at line 76++[files] = ok++[expiration] = noop++[logintime] = noop[pap] WARNING: Auth-Type already set.  Not setting to PAP++[pap] = noop+} # group authorize = updatedFound Auth-Type = EAP# Executing group from file /etc/freeradius/sites-enabled/default+group authenticate {[eap] Request found, released from the list[eap] EAP/tls[eap] processing type tls[tls] Authenticate[tls] processing EAP-TLS[tls] Received TLS ACK[tls] ACK handshake is finished[tls] eaptls_verify returned 3[tls] eaptls_process returned 3[tls] Adding user data to cached session[eap] Freeing handler++[eap] = ok+} # group authenticate = okLogin OK: [MDtest] (from client MDtestNetwork port 1 cli 00-08-22-2c-b8-fb)# Executing section post-auth from file /etc/freeradius/sites-enabled/default+group post-auth {++[exec] = noop+} # group post-auth = noopSending Access-Accept of id 210 to 10.0.0.1 port 32771MS-MPPE-Recv-Key = 0x329af35622d449a9e41206b3af2dffacbd4ed86e70203068777e1c30add9a8a9MS-MPPE-Send-Key = 0xf0c69c4a87fbcd25d14b60f33d4aef650faa4598226124417da6e80ae9c23889EAP-Message = 0x03070004Message-Authenticator = 0x00000000000000000000000000000000User-Name = "MDtest"Finished request 6.Going to the next request
    

总结

WiFi-Enterprise这一块一直依赖都是我们所欠缺的,但是我们的客户都有要求,正好借这次项目的契机研究了一下,网上关于这方面的资源很少而且非常零散,成功搭建的过程也很曲折。希望这篇文章能帮助到以后需要测试WiFi-Enterorise的同学。

WiFi-Enterprise环境搭建相关推荐

  1. 无线WiFi安全渗透与攻防(一)之无线安全环境搭建

    无线安全环境搭建 1.802.11标准 (1).概念 802.11标准是1997年IEEE最初制定的一个WLAN标准,工作在2.4GHz开放频段,支持1Mbit/s和2Mbit/s的数据传输速率,定义 ...

  2. 涂鸦 Wi-Fi SDK开发系列教程——1. SoC开发环境搭建

    SoC开发环境搭建 本章节主要介绍如何搭建涂鸦 Wi-Fi 和 Wi-Fi&Bluetooth LE 系列模组二次开发的编译环境.在 Windows 上使用 VirtualBox 虚拟机软件安 ...

  3. ensp 防火墙示例_ENSP网络实验环境搭建及防火墙功能实现

    原标题:ENSP网络实验环境搭建及防火墙功能实现 最近看了几本书,分别是: <Wireshark网络分析的艺术>(读完): <Wireshark网络分析就这么简单>(读完): ...

  4. CentOS7环境搭建使用PhpStorm上传代码

    一.虚拟机介绍 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. 虚拟系统通过生成现有操作系统的全新虚拟镜像,它具有真实win ...

  5. centOS7 LNMP+phpmyadmin环境搭建 第三篇phpmyadmin安装

    这篇文章主要介绍了CentOS7 LNMP+phpmyadmin环境搭建,第三篇phpmyadmin安装,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 之前我们已经安装了lnmp的环境,现在让我们 ...

  6. 小R SLAM机器人树莓派3b+ ROS kinetic 环境搭建笔记

    上位机环境搭建基本应该没什么难的,装一个Ubuntu16.04,然后根据ros官方指导来操作即可 http://wiki.ros.org/kinetic/Installation/Ubuntu 树莓派 ...

  7. Microsoft NLayerApp案例理论与实践 - 项目简“.NET研究”介与环境搭建

    项目简介 Microsoft – Spain团队有一个很不错的面向领域多层分布式项目案例:Microsoft – Domain Oriented N-Layered .NET 4.0 App Samp ...

  8. 第02章_MySQL环境搭建

    第02章_MySQL环境搭建 1. MySQL的卸载 步骤1:停止MySQL服务 在卸载之前,先停止MySQL8.0的服务.按键盘上的"Ctrl + Alt + Delete"组合 ...

  9. LAMP环境搭建之rpm软件包

    Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个 ...

  10. CentOS+Nginx+Tomcat+Mysql+PHP 环境搭建及系统部署

    ==============安装centos 7.0======================= 选择最小安装,将相关的"调试工具"."兼容性程序库".&qu ...

最新文章

  1. MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数
  2. 3.5 实例讲解Lucene索引的结构设计
  3. wordpress 表格文字对齐_Word文字对齐还用空格键?OUT了,这3个文字对齐方式你值得拥有!...
  4. 得罪前女友到底有多可怕?
  5. 【机器学习】 - keras中的模型可视化plot_model模块(含依赖包pydot和graphviz的详细安装过程与注意事项)
  6. php5.4源码下载,WordPress v5.4.2官方正式版源码下载
  7. mingw w64 v8.0.0_MinGW+OpenGL
  8. 学Python的初体验——模块简述
  9. Oracle的dbms_output包的put()和put_line()的区别只是有没有回车换行吗?
  10. titit 切入一个领域的方法总结 attilax这里,机器学习为例子
  11. sinc函数卷积_两个矩形窗函数的卷积
  12. cad没有命令输入框_cad2017命令输入框没了
  13. [学习报告]《LeetCode零基础指南》(第五讲) 指针-gyro
  14. Unison 的相关参数介绍
  15. 10年程序员私单的经历,送你3个找客户的关键技巧
  16. 十个最好的翻译学习网站
  17. 西安市:外地职工离职如何提取公积金
  18. 为什么优秀的程序员bug很少?因为他们……
  19. python图片合成海报
  20. 在matlab内绘制函数图像

热门文章

  1. 计算机网络电子邮件的格式,计算机网络基础之申请电子邮箱
  2. 编程的第一次博客:记录和规划
  3. 江苏电信欢go与省公安厅合作保无线上网安全
  4. Excel技巧大全之具有多个搜索条件的索引匹配
  5. ChatGPT离自我意识还有多远
  6. 轻量级的Java快速开发平台
  7. C++ thread
  8. 使用 UltraISO 将系统写入U盘
  9. 解决Expected a string but was BEGIN_ARRAY错误 Gson
  10. python 与and运算符