CentOS下使用FreeRadius实现802.1X网络准入
2018-11-07
802.1X协议是基于Client/Server的访问控制和认证协议。它可以限制未经授权的设备通过接入端口访问网络。在获得网络提供的各种业务之前,802.1X首先对连接到交换机或AP上的设备进行认证。在认证通过之前,802.1X只允许EAPoL(基于局域网的扩展认证协议)数据通过设备连接的交换机端口;认证通过以后,正常的数据可以顺利地通过以太网端口。
基于以太网端口认证的802.1X协议有如下特点:
1.IEEE 802.1X协议为数据链路层协议,不需要到达网络层,对设备的整体性能要求不高,可以有效降低建网成本。
2.借用了在RAS系统中常用的EAP(扩展认证协议),可以提供良好的扩展性和适应性,实现对传统PPP认证架构的兼容。
3.802.1X的认证体系结构中采用了“可控端口”和“不可控端口”的逻辑功能,从而可以实现业务与认证的分离,由Radius服务器和交换机利用不可控的逻辑端口共同完成对用户的认证与控制,业务报文直接承载在正常的数据链路层报文上通过可控端口进行交换,通过认证之后的数据包是无需封装的纯数据包。
4.可以使用现有的后台认证系统降低部署的成本,并有丰富的业务支持。
5.可以映射不同的用户认证等级到不同的VLAN。
6.可以使交换端口和无线LAN具有安全的认证接入功能。
部署结构
包括客户端、接入网络、认证与帐户系统。
客户端:可以是Windows、OSX或移动终端。Windows与OSX均支持802.1X协议,并且移动端也支持企业级WPA(支持用户名与密码)并与Radius服务集成。
接入网络:支持802.1X与Radius的交换机或无线AP均可,由于802.1X是一个已经普遍支持的行业标准,所以目前几乎所有主流的交换机与AP都可以支持。
认证与帐户系统:Radius服务器(本文使用FreeRadius),提供帐户管理的数据库(本文使用MySQL数据库)。
Radius服务安装与配置
1.拷 贝freeradiusserver-3.0.11.tar压缩包到CentOS中。
2.root下使用命令tar -xzvf freeradiusserver-3.0.11.tar.gz 解压缩包。
3.执 行 命 令yum install libtalloc-devel-y安装libtalloc
4.进入解压后的文件夹下tar -xzvf freeradiusserver-3.0.11,执行命令./configure
5.先后执行命令make和make install
6.进入cd /usr/local/etc/raddb,用vim打开文件users,将以下注释去掉。
7.进入cd /etc/hosts修改并添加如下内容。
8.进入cd usr/local/etc/raddb/,打 开 radius.conf
将allow_vulnerable_openssl = no修改成allow_vulnerable_openssl = yes
9.修改防火墙配置,允许FreeRadius所使用的端口1812和1813通过。iptables -A INPUT -p udp--dport 1812 -j ACCEPT
10.Radius部署完成后需要进行相关测试,在终端输 入“radiusd -X”,新 打开一个终端输入“radtest steve testing localhost 0 testing123”。
其中steve是用户名,testing是密码。
11.与交换机的对接
(1)进入目录/usr/local/etc/raddb/siteenabled,打开defoult文件。
把authorize{}、accounting{}中sql前面的#去掉,并把authorize{}中files前加#;
(2)进入目录/usr/local/etc/raddb,打开文件clients.conf添加如下内容:
MySQL服务安装与配置
其 中 MySQL、MySQLServer、MySQL-Devel都必须安装,缺一不可。
1.运行命令 “yum list| grep mysql”查看网络上可以提供下载的资源列表。
2.输 入“yum install-y mysql-server mysql mysql-devel”命 令 可 以将 MySQL、MySQL-Server 和MySQL-Devel都安装好。
3.输 入命令“service mysqld restart”启动MySQL服务。
4.创建数据库,输入命令“mysql-uroot-p”,要求输入密码时,直接回车即可。
5.导入表结构,执行命令如下:
6.建立组信息和用户信息。输 入“mysql -u root radius”命令,打开数据库,在 mysql> 提示符下,执行如下命令:
(1)建立组信息:(本文新建组名称为user)
(2)建立用户信息:(本文新建用户名为test,密码为testpwd)
备注:802.1x认证客户端登录的用户名test,密码testpwd。
(3)将用户加入组中:
7.修改 FreeRadius中的MySQL认证配置
(1)进入以下路径cd
(2)执行命令 :ln -s ../mods-available/sql
8.修改 FreeRadius中的MySQL配置文件
(1)vim usr/local/etc/raddb/mods-available/sql
(2)找到driver=“rlm_sql_null”这一行,修改为driver=“rlm_sql_mysql”,保存并退出。
9.执行下列命令:vim usr/local/etc/raddb/sites-available/default,将 authorize{}和accounting{}里面的SQL前面的#号去掉。
10.对sql.conf进行如下更改:
(1)server="localhost"
(2)login="root"
(3)password="123456"
(4)radius_db="radius"
11.MySQL Radius下执行命令:select *from radgroupreply;显示数据库配置。
12.重新以调试方式运行 freeradius :radiusd -X
13.再打开一个新的终端,运行如下的测试工具命令:radtest test testpwd localhost 1812 testing123(如果认证通过的话,服务器的搭建顺利完成)。
在网络设备设备上开启802.1X认证,本文以H3C网络设备为例
1.H3C进入特权模式后,开启802.1X认证协议和认证方式,命令如下:
2.与认证服务器Radius的配置,命令如下:
备注:此处交换机共享密钥为testing123,必须与服务器保持一致。
3.配置3A认证,最好是每个认证都开启,在配置过程中可能会因为没有配置计费认证,从而导致认证失败,具体命令如下:
4.开启端口的802.1X的认证,命令如下: