搭建radius服务_radius搭建-程序员宅基地

技术标签: RADIUS  java  安全  linux  freeradius  

前言

本文转载于https://www.cnblogs.com/micq/articles/6178216.html,我在他的基础上添加了docker和ipv6的教程。

RADIUS 服务器软件可以从多个地方获得。在本文中,我将使用 FreeRADIUS搭建RADIUS服务,本文将介绍两种搭建方法,一种是使用官方源码进行搭建,另外一个则是使用docker的方式进行搭建。

RADIUS介绍

远程用户拨入验证服务(RADIUS, Remote Authentication Dial In User Service)是一个AAA协议,通常用于网络访问、或流动IP服务,适用于局域网及漫游服务。

RADIUS协议包括RADIUS验证协议(对应AAA的验证和授权)和RADIUS记账协议,分别定义于IETF RFC 2865和RFC 2866。

 

什么是AAA协议?

AAA是认证(Authentication)、授权(Authorization)和计费(Accounting)的简称,是网络安全中进行访问控制的一种安全管理机制,提供认证、授权和计费三种安全服务。

AAA提供的安全服务具体是指:

  1. 认证(Authentication):是对用户的身份进行验证,判断其是否为合法用户。
  2. 授权(Authorization):是对通过认证的用户,授权其可以使用哪些服务。
  3. 计费(Accounting):是记录用户使用网络服务的资源情况,这些信息将作为计费的依据。

首先,认证部分提供了对用户的认证。整个认证通常是采用用户输入用户名与密码来进行权限审核。认证的原理是每个用户都有一个唯一的权限获得标准。由AAA服务器将用户的标准同数据库中每个用户的标准一一核对。如果符合,那么对用户认证通过。如果不符合,则拒绝提供网络连接。

其次,用户要通过授权来获得操作相应任务的权限。比如,登录系统后,用户可能会执行一些命令来进行操作。这时,授权过程会检测用户是否拥有执行这些命令的权限。简单而言,授权过程是一系列强迫策略的组合,包括:确定活动的种类或质量、资源或者用户被允许的服务有哪些。授权过程发生在认证上下文中,一旦用户通过了认证,他们也就被授予了相应的权限。

最后,计费这一过程将会计算用户在连接过程中消耗的资源数目。这些资源包括连接时间或者用户在连接过程中的收发流量等等。可以根据连接过程的统计日志、用户信息、授权控制、账单、趋势分析、资源利用以及容量计划活动来执行计费过程。

源码方式搭建

下载freeradius-server-3.0.12.tar.bz2。

下载地址(https://ftp.yz.yamagata-u.ac.jp/pub/network/freeradius/old/freeradius-server-3.0.12.tar.bz2),如果下载速度太慢的话,可以使用迅雷下载。

下载之后,将freeradius-server-3.0.12.tar.bz2放入linux系统的指定位置。

tar -jxvf freeradius-server-3.0.12.tar.bz2  

cd freeradius-server-3.0.12/  

./configure  

打印的信息显示有一个错误,信息如下:

图 1

信息显示没有安装libtalloc,但是执行yum安装显示是已安装的:

yum install libtalloc  

图 2

解决办法,安装libtalloc-devel:

yum install libtalloc-devel -y  

问题解决,再次./configure,没有再打印这个错误信息, 说明这个问题解决,而是打印了下一个错误信息:

图 3

信息显示链接不到libcrypto,执行

rpm -qa |grep libcrypto  

没有信息打印,说明没有安装libcrypto,  libcrypto包含在openssl安装包里,OpenSSL 包含2个主要的库: libssl and libcrypto.

所以解决办法就是安装openssl:

yum install openssl openssl-devel  

运行./configure显示这个问题解决,并且没有报其它错误信息.

至此,./configure执行完全成功.

接下来要 执行make 命令.

make  

make命令被正确 执行

可以在./build/bin目录找到radiusd程序,这个就是radius server程序.

接下来安装这个 server:

make install  

成功安装.

执行下面命令,以超级身份运行:

radiusd -X  

运行正常,显示:

图 4

按照官方文档的测试方法,在文件 /usr/local/etc/raddb/users 的最前面添加:

testing Cleartext-Password := "password123"

testing 是用户名,  password123 是明文格式的密码.

以管理员方式再次运行radiusd,在运行radiusd时会说是端口已经被使用,是因为系统服务已经自动运行。关闭之后再运行即可。

service freeradius stop   

radiusd -X  

正常运行.

 

接下来用radtest来测试服务器:

radtest testing password123 127.0.0.1 0 testing123  

如果返回

(0) Error parsing "stdin": Failed resolving "fedora.hexiaowang" to IPv4 address: Name or service not known  

fedora.hexiaowang 是我给我的Fedora 25取的计算机名称.

这个错误是程序无法把计算机名 fedora.hexiaowang 映射成IP.解决办法,把 fedora.hexiaowang 映射成 本机IP 127.0.0.1 添加到 /etc/hosts 文件.

这是添加之前的hosts文件:

cat hosts  

图 5

这是添加之后的hosts文件:

图 6

再次执行radtest测试服务器 # radtest testing password123 127.0.0.1 0 testing123 ,结果显示:

图 7

收到 Access-Reject 消息,表示请求失败,测试没通过.解决办法:把 radiusd.conf 文件里的禁止写log(no)改成允许(yes)

vi /usr/local/etc/raddb/radiusd.conf  

修改后的 radiusd.conf 文件片段如下:

图 8

再次执行radtest测试服务器 # radtest testing password123 127.0.0.1 0 testing123 ,结果显示:

图 9

收到 Access-Accept 即表示测试成功!

配置 radius server 端:

修改服务器端记录客户端的配置文件 /etc/raddb/clients.conf 文件,该文件默认值提供了本机测试的 local 配置,即:安装完后默认只允许本机的client客户端访问radius服务器。Client有多种配置方式,

 

  # 只允许本机的客户端访问

client localhost {

       ipaddr = 127.0.0.1

       secret = testing123

}

  

  # 添加一个子网 192.168.230.0/24 的网段可访问

  client 192.168.230.0/24 {

       secret          = alonesword

       shortname       = lan-w3pc

  }

  

     

       # 添加一个ipv6格式的网络,只有2001::480d:5786:958c:4e22可以访问

  client 2001::480d:5786:958c:4e22 {

       secret          = test

  }

 

保存文件 /etc/raddb/clients.conf

重启radius服务.

Docker方式搭建

Docker镜像我们使用到的是其官方提供的freeradius-server

没有docker的先安装docker,以及学习如何使用docker。

执行拉取镜像命令:

docker pull freeradius/freeradius-server:latest 

运行docker容器(当然,你也可以自己将主要的配置文件挂载到宿主机上,可以选择将容器中的/etc/raddb整个文件夹挂载到宿主机中,主要的配置文件都在这个文件夹下)

docker run --name freeradius --restart=always -d -p 1812-1813:1812-1813/udp freeradius/freeradius-server:latest

该容器镜像内部默认是没有安装vi,vim等命令的,如果是在外网环境,可以执行命令

apt-get update  

apt-get install vim  

安装好vim之后,就可以修改配置文件了,内网环境还是建议配置挂载。

按照官方文档的测试方法,在容器内修改文件 /etc/raddb/users ,在最前面添加:

testing Cleartext-Password := "password123"

testing 是用户名,  password123 是明文格式的密码.

接下来用radtest来测试服务器:

radtest testing password123 127.0.0.1 0 testing123  

结果显示:

图 10

收到 Access-Accept 即表示测试成功!

之后是配置/etc/raddb/clients.conf文件,配置方法与源码方式的配置方法相同。

如何配置ipv6?

这里主要介绍源码安装方式如何配置ipv6,如果要让docker安装的freeradius容器支持ipv6,需要事先为docker引擎配置ipv6。

源码配置ipv6教程。

1. 查看本机是否配置了ipv6

ip addr | grep net6  

复制ipv6的地址,比如我的是:2004::480d:5786:958c:4e2c。

修改default文件中的ipv6地址

vim /usr/local/etc/raddb/sites-enabled/default  

修改第215行和229行(不同版本可能会有不同)

图 11

添加client客户端的ipv6地址

vim /usr/local/etc/raddb/clients.conf  

图 12

这样就可以通过2004::4888:5796:958c:8888的机器访问服务器(2004::480d:5786:958c:4e2c)的radius服务了。

 

 

 

 

 

 

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fbvukn/article/details/109636348

智能推荐

maven多模块 统一版本管理 的正确姿势 (CI Friendly Versions) - ${revision}_reports that usage of properties in modules parent-程序员宅基地

文章浏览阅读1.6w次,点赞3次,收藏21次。在使用Maven多模块结构工程时,配置版本是一个比较头疼的事。继承版本,依赖版本,自身版本,都需要单独定义,很是麻烦。版本号变更使用mvn versions:set,有时候也可能导致版本号不一致、不便于统一管理:mvn versions:set但其实Maven已经提供了这种CI版本的管理方式,下面来介绍具体用法。从Maven 3.5.0-beta-1版本开始,就可以使用${revision},${sha1}和${changelist}作为占位符来替换pom文件了。注意:Id..._reports that usage of properties in modules parent definition is prohibited

电子商城实录------项目目录的结构搭建及其说明3_网上购物系统项目目录结构-程序员宅基地

文章浏览阅读313次。结合上几个章节,我开始对《电子商城实录------项目目录的结构搭建及其说明2》中方法优化Framework.class.php代码加入static:<?php//核心启动类class Framework{public static function run(){echo "hello,wrold!";}//初始化方法private static function ..._网上购物系统项目目录结构

HTML5期末大作业 精彩在线影视网站设计——在线影视(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码_dw影视网站源码-程序员宅基地

文章浏览阅读516次。HTML5期末大作业 精彩在线影视网站设计——在线影视(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业_dw影视网站源码

cv_bridge与opencv版本不一致导致程序编译错误及无法运行程序问题的解决方案(附带ORB_SLAM3案例))_sh_cv_bridge版本-程序员宅基地

文章浏览阅读3.7k次,点赞7次,收藏40次。目录1、问题描述开发环境我的程序配置2、问题造成的后果3、解决方案说明:4、实例,针对ORB_SLAM3问题5、其他参考解决方案6、另一个例程7、其他:修改系统默认链接的cv_bridge版本号,以及查看当前系统链接的cv_bridge版本号与位置与本篇问题相关的一个问题,可参考我之前的一篇博客:cv_bridge与python版本问题导致编译错误error: return-statement with no value, in function retur._sh_cv_bridge版本

web前端-番外-vscode和emmet语法_打div自动生成标签是什么插件-程序员宅基地

文章浏览阅读891次,点赞3次,收藏5次。文章目录vscode常用插件中文插件网页运行标签自动更正Emmet常用语法快速生成html结构快速生成css样式快速格式化代码参考所谓“工欲善其事,必先利其器”,想要快速高效的完成开发,必须要借助一些开发工具,毕竟“搬砖”我们也是专业的!这里推荐一个不仅用于web前端开发也可以用于其他编程语言的“神器”–vscode。vscode优点:跨平台丰富插件支持多种编程语言支持Emmet语法,高效书写代码vscode常用插件安装不表,下面介绍几个web前端开发常用插件中文插件Chinese _打div自动生成标签是什么插件

vue项目打包发版后路径访问页面空白_前端vue 中用env脚本打包之后访问不到页面-程序员宅基地

文章浏览阅读743次。从这里可以看到,问题出在访问的路径不正确才导致的页面空白,对于这种问题该怎么处理呢?找到文件vue.config.js在此处配置publicPath publicPath: process.env.VUE_APP_BUILD_MODE === 'devops' ? process.env.VUE_APP_BASE_URL : process.env.VUE_APP_BUILD_MODE === 'poc' // 生产环境 ? '/文件名/'._前端vue 中用env脚本打包之后访问不到页面

随便推点

flask使用form表单报错:“KeyError: 'A secret key is required to use CSRF.'”_keyerror: 'form-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。flask使用form表单报错:“KeyError: ‘A secret key is required to use CSRF.’”报错详情:KeyError: 'A secret key is required to use CSRF.'Traceback (most recent call last)FFile "F:\Projects\flask_env\lib\site-pac..._keyerror: 'form

修改ubuntu ls 显示的目录底色_ubuntu中如何不显示绿色-程序员宅基地

文章浏览阅读884次。绿色底色很烦,看不清文件夹的名字在.bashrc里加一行,LS_COLORS=$LS_COLORS:'ow=1;32:'这样即可取消有些文件夹的绿色底色。其中ow的意思是OTHER_WRITABLE1的意思是粗体,32的意思是绿色前景参考:编码 颜色/动作 0 重新设置属性到缺省设置 1 设置粗体 2 设置一半亮度(模拟彩色显示器的颜色) 4 设置下划线(模拟彩色显示器的颜色) 5 设置闪烁 7 设置反_ubuntu中如何不显示绿色

django-celery-beat的使用-程序员宅基地

文章浏览阅读7.5k次,点赞3次,收藏7次。一、安装与配置使用pip安装包:$ pip install django-celery-beat将django_celery_beat模块添加到INSTALLED_APPSDjango项目中settings.py:#jdango时区配置# 官方用来修复CELERY_ENABLE_UTC=False and USE_TZ = False 时时间比较错误的问题;# 详情见:https://github.com/celery/django-celery-beat/pull/216/file_django-celery-beat

CUDA C++ Programming Guide——简介_d. guide, “cuda c programming guide,” nvidia, july-程序员宅基地

文章浏览阅读7.5k次。使用GPU的好处在类似的价格和功率范围内,图形处理单元(GPU)提供的指令吞吐量和内存带宽比CPU高得多。许多应用程序利用这些更高的功能在GPU上比在CPU上运行得更快(请参阅GPU应用程序)。其他计算设备(如FPGA)也非常节能,但是编程灵活性比GPU小得多。由于GPU和CPU的设计目标不同,因此存在这种能力差异。尽管CPU被设计为擅长以最快的速度执行一系列操作,称为线程,并且可以并行执行数十个这些线程,但GPU被设计为擅长并行执行数千个线程(摊销降低单线程性能以实现更高的吞吐量)。GPU专用于高度并行_d. guide, “cuda c programming guide,” nvidia, july, 2013

python实现注册功能_Python Django 实现简单注册功能过程详解-程序员宅基地

文章浏览阅读148次。项目创建略,可参考Python Django Vue 项目创建。目录结构如下编辑views.pyfrom django.shortcuts import render# Create your views here.from django.http import HttpResponsefrom django.shortcuts import renderfrom common.DBHandle ..._python vue实现注册功能

数组的应用_数组应用-程序员宅基地

文章浏览阅读926次。摘要数组的定义:数组(Array)是有序的元素序列。[1]若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。[1]这些有序排列的同类数据元素的集合称为数组。简洁的说:数组是一组元素类型相同的集合。数组也分为一维数组和二维数组,当然也有三维、四维数组等等,目录摘要..._数组应用