燃爆了(openwrt安装ssl证书)openwrt开放端口安全,OpenWRT+FreeRadius+TinyRadius+Daloradius实现portal加radius安全认证,radius java客户端,
想要实现的需求是:当接入网络时,需要跳转到自定义的portal认证页面,输入用户名和密码后,跳转到Freeradius进行认证,认证完成后才允许用户联网。实质上就是实现了portal认证和radius认证方式的相结合,以此来实现多重安全认证。
基本知识介绍
AAA:
AAA是认证(Authentication)、授权(Authorization)和计费(Accounting)的简称,是网络安全中进行访问控制的一种安全管理机制,提供认证、授权和计费三种安全服务。
认证(Authentication):是对用户的身份进行验证,判断其是否为合法用户。授权(Authorization):是对通过认证的用户,授权其可以使用哪些服务。计费(Accounting):是记录用户使用网络服务的资源情况,这些信息将作为计费的依据。portal认证:
Portal在英语中是入口的意思。Portal认证通常也称为Web认证,一般将Portal认证网站称为门户网站。未认证用户上网时,设备强制用户登录到特定站点,用户可以免费访问其中的服务。当用户需要使用互联网中的其它信息时,必须在门户网站进行认证,只有认证通过后才可以使用互联网资源。用户可以主动访问已知的Portal认证网站,输入用户名和密码进行认证,这种开始Portal认证的方式称作主动认证。反之,如果用户试图通过HTTP访问其他外网,将被强制访问Portal认证网站,从而开始Portal认证过程,这种方式称作强制认证。Portal业务可以为运营商提供方便的管理功能,门户网站可以开展广告、社区服务、个性化的业务等,使宽带运营商、设备提供商和内容服务提供商形成一个产业生态系统。
radius认证:
RADIUS:Remote Authentication Dial In User Service,远程用户拨号认证系统由RFC2865,RFC2866定义,是应用最广泛的AAA协议。AAA是一种管理框架,因此,它可以用多种协议来实现。在实践中,人们最常使用远程访问拨号用户服务(Remote Authentication Dial In User Service,RADIUS)来实现AAA。
RADIUS是一种C/S结构的协议,它的客户端最初就是NAS(Net Access Server)服务器,任何运行RADIUS客户端软件的计算机都可以成为RADIUS的客户端。RADIUS协议认证机制灵活,可以采用PAP、CHAP或者Unix登录认证等多种方式。RADIUS是一种可扩展的协议,它进行的全部工作都是基于Attribute-Length-Value的向量进行的。RADIUS也支持厂商扩充厂家专有属性。
FreeRadius:
FreeRADIUS 是一个实现了 RADIUS 的服务器。Freeradius包含一个radius服务器和radius-client,可以对支持radius协议的网络设备进行鉴权记账,常见的开源路由器操作系统:如Openwrt,DD-wrt等,都支持radius协议,对PPPOE,热点,VPN等服务器进行账户管理认证,记账。
daloRadius:
来自github主页的介绍:daloRADIUS(http://www.daloradius.com/)是一种高级 RADIUS Web 管理应用程序,旨在管理热点和通用 ISP 部署。它具有用户管理、图形报告、会计、计费引擎,并与 GoogleMaps 集成以进行地理定位。
daloRADIUS 是用 PHP 和 JavaScript 编写的,并利用了一个数据库抽象层,这意味着它支持许多数据库系统,其中包括流行的 MySQL、PostgreSQL、Sqlite、MsSQL 等。
它基于FreeRADIUS部署,数据库服务器作为后端。除了实现 ACL 的其他功能外,它还集成了用于可视化定位热点/接入点的 GoogleMaps 集成以及更多功能。
说白了就是一个Freeradius的web管理工具,有了它可以更方便的管理操作freeradius。
TinyRadius:
来自github主页的介绍:TinyRadius 是一个小巧、快速且可靠的 Java Radius 库,按照 RFC 2865/2866 的规定发送和接收 Radius 数据包。就是一个实现了radius协议的java版本实现的radius客户端。通过它对接portal和radius服务器。
环境准备:
ubuntu18.04 TLS 安装Freeradius服务器以及运行daloradiusOpenwrt armv8php7.2mysql 5.7.35Apache 2.4FreeRadius 3.0
安装FreeRadius
step1.更新软件源并重启
step2.安装mysql数据库并创建数据库
创建数据库:
step3.安装并配置FreeRadius on Ubuntu18.04
上述命令安装了freeradius以及 freeradius-mysql和工具包。
Import the freeradius MySQL database scheme:
检查刚才导入的数据库:
创建sql模块的软连接到mods-enabled:
配置freeradius使其支持sql模块以及修改数据库的连接配置:
打开的文件中找到下面这段进行修改:
改变 /etc/freeradius/3.0/mods-enabled/sql 的所属组和所属用户:
重启freeradius 服务:
sudo systemctl restart freeradius.service
测试Freeradius(使用openwrt创建一个WPA-EAP认证的热点进行测试)
首先要确保openwrt机器和freeradius服务器能够相互ping通,不一定非得在同一个局域网。
step1:在Radius服务器端添加Radius客户端(这一步是必须做的,否则从客户端发来的认证请求会被服务器忽略)
添加如下:
step2:创建测试用户
在末尾添加 : 123 Cleartext-Password:="123"
step3:将freeradius 以调试模式重新启动
在Openwrt系统中的命令为 radius -X ,在ubuntu系统中的命令为freeradius -X .
如果启动的时候遇到错误说:
这说明系统已经有一个进程在运行了,这时候执行 ps aux | grep "radius",将已经运行的进程kill,再次启动就好了。
当执行freeradius -X之后提示如下,说明freeradius服务器启动成功:

step4:配置WPA-EAP认证方式的wifi热点
主要设置加密方式和Radius认证服务器的ip地址以及刚在添加客户端时填写的radius认证密钥。其余的可以默认即可。

设置完毕重启openwrt设备。
step5:连接测试
使用手机或者笔记本电脑搜索wifi热点,点击连接,输入之前设置的测试用户名及密码。

此时,freeradius服务器端应该会收到认证请求,并完成认证流程,之后wifi便连接成功!

至此,完成了freeradius服务器的搭建与测试认证过程。
安装daloRadius
Step 1: Install Apache Web Server and PHP
Daloradius will require php and Apache web server to be installed on the host system.
Installing Apache on Ubuntu:
Install Apache web server by running:
For installation of PHP on Ubuntu 18.04 and Ubuntu 16.04, run:
Check the version of php installed:
至此,完成了apache2和php7.2的安装。
Step 2: Install and Configure Daloradius on Ubuntu
Change directory for configuration:
Configuring daloradius
Now import Daloradius mysql tablesThen change permissions for http folder and set the right permissions for the daloradius configuration file.
You should now modify the filedaloradius.conf.php to adjust the MySQL database information. Open the daloradius.conf.php and add the database username, password and db name.
Especially relevant variables to configure are:
To be sure everything works, restart freeradius and apache2
Open Admin link using your system IP address or domain name:
输入用户名和密码:
打开主页面:
至此完成了daloradius的安装与配置。
之后在daloradius上面进行配置会同步对freeradius服务器进行配置,其实原理就是二者操作同一个数据库系统。
之前我们测试openwrt时候采用的是修改文件的方式进行管理,到这里就可以在web页面上进行配置用户和NAS了,这是采用数据库的管理方式了。
测试daloRadius与Freeradius服务器配合使用
首先同样的创建一个测试用户:名为zms,密码为zms
然后创建一个NAS(Network Access Server):
设置NAS ip,密钥,类型为other。这里就对应之前的openwrt的热点信息。
配置好之后重启apache2和freeradius服务器。
以同样的方式连接热点进行测试,发现认证成功,完成freeradius与daloRadius 的联动。
使用TinyRadius运行一个radius认证客户端
下载tinyRadius源代码:https://github.com/ctran/TinyRadius
用IDE打开,导入项目,进行maven引包。
由于项目使用log4j,所以需要对其进行配置,
在src/main/java包下新建resource包,新建一个文件log4j.properties
粘贴以下内容:
在org.tinyradius.util包下新建initLogRecord.java文件,粘贴如下内容:
打开TestClient.java
修改main函数进行测试:指定host为你的radius服务器的ip,shared为认证密钥,user用户名,pass密码。
然后执行,如果一切配置正常,在控制台会输出认证信息:
同时,服务器端会输出认证信息。
至此,完成了TinyRadius与FreeRadius服务器的配合使用。
总结:
本文搭建起来一套基于freeradius的认证系统,验证了系统之间的连通性,下一步将尝试开发一套radius认证客户端来实现自定义的系统认证功能。添加上更为安全的认证和验证方式,以及添加对流程的可溯源可循证系统。敬请期待!
本文系作者 @河马 原创发布在河马博客站点。未经许可,禁止转载。
暂无评论数据