WiFi-Enterprise环境搭建
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
首先登录WLC管理网页,点击Advance进入高级管理页面,在Security-Loacl EAP-Profile页面下新建Local Eap配置并勾选LEAP和PEAP,如下图:
在AAA设置的Local Net Users管理界面添加登录用户,这里设置的用户名和密码将会在客户端登录时用到,如下图:
在WLAN管理界面新建WLAN并将Security Layer2将加密协议设置成WPA/WPA2,认证方式选择802.1x:
在WLAN的AAA Server 勾选RADIUS Server Overwrite interface ,勾选Local EAP Authentication 并选择刚刚我们新建的Local Eap Profile:
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环境搭建相关推荐
- 无线WiFi安全渗透与攻防(一)之无线安全环境搭建
无线安全环境搭建 1.802.11标准 (1).概念 802.11标准是1997年IEEE最初制定的一个WLAN标准,工作在2.4GHz开放频段,支持1Mbit/s和2Mbit/s的数据传输速率,定义 ...
- 涂鸦 Wi-Fi SDK开发系列教程——1. SoC开发环境搭建
SoC开发环境搭建 本章节主要介绍如何搭建涂鸦 Wi-Fi 和 Wi-Fi&Bluetooth LE 系列模组二次开发的编译环境.在 Windows 上使用 VirtualBox 虚拟机软件安 ...
- ensp 防火墙示例_ENSP网络实验环境搭建及防火墙功能实现
原标题:ENSP网络实验环境搭建及防火墙功能实现 最近看了几本书,分别是: <Wireshark网络分析的艺术>(读完): <Wireshark网络分析就这么简单>(读完): ...
- CentOS7环境搭建使用PhpStorm上传代码
一.虚拟机介绍 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. 虚拟系统通过生成现有操作系统的全新虚拟镜像,它具有真实win ...
- centOS7 LNMP+phpmyadmin环境搭建 第三篇phpmyadmin安装
这篇文章主要介绍了CentOS7 LNMP+phpmyadmin环境搭建,第三篇phpmyadmin安装,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 之前我们已经安装了lnmp的环境,现在让我们 ...
- 小R SLAM机器人树莓派3b+ ROS kinetic 环境搭建笔记
上位机环境搭建基本应该没什么难的,装一个Ubuntu16.04,然后根据ros官方指导来操作即可 http://wiki.ros.org/kinetic/Installation/Ubuntu 树莓派 ...
- Microsoft NLayerApp案例理论与实践 - 项目简“.NET研究”介与环境搭建
项目简介 Microsoft – Spain团队有一个很不错的面向领域多层分布式项目案例:Microsoft – Domain Oriented N-Layered .NET 4.0 App Samp ...
- 第02章_MySQL环境搭建
第02章_MySQL环境搭建 1. MySQL的卸载 步骤1:停止MySQL服务 在卸载之前,先停止MySQL8.0的服务.按键盘上的"Ctrl + Alt + Delete"组合 ...
- LAMP环境搭建之rpm软件包
Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个 ...
- CentOS+Nginx+Tomcat+Mysql+PHP 环境搭建及系统部署
==============安装centos 7.0======================= 选择最小安装,将相关的"调试工具"."兼容性程序库".&qu ...
最新文章
- MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数
- 3.5 实例讲解Lucene索引的结构设计
- wordpress 表格文字对齐_Word文字对齐还用空格键?OUT了,这3个文字对齐方式你值得拥有!...
- 得罪前女友到底有多可怕?
- 【机器学习】 - keras中的模型可视化plot_model模块(含依赖包pydot和graphviz的详细安装过程与注意事项)
- php5.4源码下载,WordPress v5.4.2官方正式版源码下载
- mingw w64 v8.0.0_MinGW+OpenGL
- 学Python的初体验——模块简述
- Oracle的dbms_output包的put()和put_line()的区别只是有没有回车换行吗?
- titit 切入一个领域的方法总结 attilax这里,机器学习为例子
- sinc函数卷积_两个矩形窗函数的卷积
- cad没有命令输入框_cad2017命令输入框没了
- [学习报告]《LeetCode零基础指南》(第五讲) 指针-gyro
- Unison 的相关参数介绍
- 10年程序员私单的经历,送你3个找客户的关键技巧
- 十个最好的翻译学习网站
- 西安市:外地职工离职如何提取公积金
- 为什么优秀的程序员bug很少?因为他们……
- python图片合成海报
- 在matlab内绘制函数图像