Freeradius 和 PHP 身份验证脚本

2023-11-21

我正在尝试根据 PHP 脚本对 freeradius 用户进行身份验证,但没有成功。 我已经尝试了几个小时来配置这个权利,而我在谷歌上找到的所有线程要么是死链接,要么是过时的......

半径配置文件

prefix = /usr
exec_prefix = /usr
sysconfdir = /etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = /var/log/freeradius
raddbdir = /etc/freeradius
radacctdir = ${logdir}/radacct

#  Name of the running server
name = freeradius

#  Location of config and logfiles.
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/${name}

# Should likely be ${localstatedir}/lib/radiusd
db_dir = ${raddbdir}

libdir = /usr/lib/freeradius

pidfile = ${run_dir}/${name}.pid

# user/group: The name (or #number) of the user/group to run radiusd as.
user = freerad
group = freerad

#  max_request_time: The maximum time (in seconds) to handle a request.
max_request_time = 30

#  cleanup_delay: The time to wait (in seconds) before cleaning up
#  a reply which was sent to the NAS.
cleanup_delay = 5

#  max_requests: The maximum number of requests which the server keeps
#  track of.  This should be 256 multiplied by the number of clients.
#  e.g. With 4 clients, this number should be 1024.
max_requests = 1024

#  listen: Make the server listen on a particular IP address, and send
#  replies out from that address. This directive is most useful for
#  hosts with multiple IP addresses on one interface.
listen {
    type = auth
    ipaddr = *
    port = 0
}

#  This second "listen" section is for listening on the accounting
#  port, too.
listen {
    ipaddr = *
    port = 0
    type = acct
}

hostname_lookups = no
allow_core_dumps = no
regular_expressions = yes
extended_expressions    = yes

log {
    destination = files
    file = ${logdir}/radius.log
    syslog_facility = daemon
    stripped_names = no
    auth = no
    auth_badpass = no
    auth_goodpass = no
}

checkrad = ${sbindir}/checkrad

security {
    max_attributes = 200
    reject_delay = 1
    status_server = yes
}

proxy_requests  = off

# CLIENTS CONFIGURATION
client 0.0.0.0/0 {
    secret = secret
    shortname = wireless
}

# THREAD POOL CONFIGURATION
thread pool {
    start_servers = 5
    max_servers = 32
    min_spare_servers = 3
    max_spare_servers = 10
    max_requests_per_server = 0
}

# MODULE CONFIGURATION
modules {
    $INCLUDE ${confdir}/modules/
    $INCLUDE eap.conf
}

# Instantiation
instantiate {
    exec
    expr
    expiration
    logintime
}

$INCLUDE policy.conf

$INCLUDE sites-enabled/

模块/执行

exec {
    wait = yes 
    program = "/usr/bin/php -f /usr/local/auth.php %{User-Name} %{User-Password}"
    input_pairs = request 
    output_pairs = reply
    shell_escape = yes
}

站点可用/默认

authorize {
    preprocess
    exec
    chap
    suffix
    files
    expiration
    logintime
    pap
}

authenticate {
    Auth-Type PAP {
        pap
    }
    Auth-Type CHAP {
        chap
    }
    eap
}


preacct {
    preprocess
    acct_unique
    suffix
    files
}

accounting {
    detail
    radutmp
    exec
    attr_filter.accounting_response
}

session {
    radutmp
}

post-auth {
    exec
    Post-Auth-Type REJECT {
        attr_filter.access_reject
    }
}

pre-proxy {
}

post-proxy {
}

虽然我不知道要在用户文件中放入什么......


这实际上很容易。删除你所做的一切并重新开始。

进入您的站点启用/默认文件。

进入授权指令并添加此代码。将 yourscript.php 替换为正确的脚本。确保用户 radiusd 有权运行该脚本。

authorize{
    update control { 
        Auth-Type := `/usr/bin/php -f /etc/raddb/yourscript.php '%{User-Name}' '%{User-Password}' '%{Client-IP-Address}'`
    }

确保您的脚本回显“接受”或“拒绝”而不带引号。这应该验证您的用户。

既然有人问如何拉属性 -

打开 /etc/raddb/users 文件并更新以下内容 -

DEFAULT Auth-Type = Accept
Exec-Program-Wait = "/usr/bin/php -f  /etc/raddb/yourscript.php '%{User-Name}' '%{User-Password}' '%{Client-IP-Address}'"

本质上,您是在告诉它 Auth-Type 是否为 Accept 来执行以下脚本并提取属性。确保您的 PHP 脚本只是回显属性。根据供应商的不同,属性显然会有所不同。

Edits-

  • 添加属性信息

  • 添加了“%{Client-IP-Address}”以指定用户尝试连接的设备

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Freeradius 和 PHP 身份验证脚本 的相关文章

  • $resource `get` 函数如何在 AngularJS 中同步工作?

    我当时正在看thisAngularJS 教程描述了如何使用 Angular 资源连接 Twitter 视频教程 这是在示例控制器中设置的资源 scope twitter resource http twitter com action ac
  • 使用 PHP 获取 TrueType 中可用的字符

    如何获取 TrueType 字体中所有可用字符的列表 使用 PHP PHP 似乎没有任何可用的扩展directly with FreeType 处理 TrueType 字体的统治性开源库 您可能需要使用适当的库来使用另一种语言 例如Perl
  • ModuleNotFoundError:没有名为“django”的模块

    我正在尝试在线制作一个项目 但出现一个我无法解决的错误 我已经安装了 django 但服务器给我这个错误 Virtualenv 也处于活动状态 2017 09 25 20 10 27 471 2017 09 25 20 10 30 892
  • 无法将 ListBox.ObjectCollection 转换为(类型化)数组

    我想将项目转换为字符串数组或我用来填充 ListBox DataSource 的类型 该类型已覆盖 ToString 但我似乎无法将其转换 甚至无法转换为 String String a String ListBox1 Items Cont
  • Cognito 用户池触发器上的 AWS Lambda 错误

    我正在尝试将一条记录插入到 DynamoDB 中 调用 Cognito 用户池的 预注册 触发器 出于测试目的 Lambda 函数非常简单 但在 AWSCognito CognitoIdentityServiceProvider Cogni
  • 刚刚开始出现 AIR SQLite 错误 3182 发生磁盘 I/O 错误

    我们的软件有一个新的测试版 进行了一些更改 但不是围绕我们的数据库层 我们刚刚开始在服务器日志中报告错误 3128 似乎一旦发生 只要应用程序打开 它就会发生 代码中最明显的部分是我们通过 SQLite 每秒记录数据的部分 仅这个月我们的服
  • 仅在 Swift 4.2 中上传带有多部分表单数据的图像

    我尝试了很多解决方案 我得到了一些 但他们正在使用objective c code在某处 我只需要解决方案swift 4 2并且没有任何第三方 例如Alamofire 使用它工作正常objective c类 我已经能够仅使用标头和其他参数以
  • 在 C# 中,创建新字节数组时字节的默认值是多少?

    这个问题的答案已经超出了我的搜索范围 当我这样做时 var authToken new byte 16 authToken 0 的值是多少 它是零还是零 默认值为 0 有关默认值的更多信息 http msdn microsoft com e
  • NSTableView + 删除键

    我正在寻找一种简单的解决方案 通过按删除键来删除 NSTableView 行 我在谷歌搜索时看到的都是这样的答案 http likethought com lockfocus 2008 04 a slightly improved nsta
  • EJB 3.1 容器管理的并发与同步

    我已经开始阅读有关单例会话 bean 和用于采用容器管理并发的注释的内容 与简单地使用 同步 关键字相比 我没有看到这样做的好处 所以我怀疑我遗漏了一些重要的东西 考虑一下书中的这个例子 企业 JavaBeans 3 1 作者 Rubing
  • 在pandas中找到每组中最小值大于值的行

    我有一个数据框 如下所示 pd DataFrame A C1 C1 C1 C1 C2 C2 C2 C2 C3 C3 C3 C3 B 1 4 8 9 1 3 8 9 1 4 7 0 Out 40 A B 0 C1 1 1 C1 4 2 C1
  • python查找字符串中重复的子字符串[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在Python中寻找一个函数 您可以在其中给出一个字符串作为输入 其中某个单词已重复多次 直到达到一定的长度 那么输出就是那个词 重复的单词不一定全部重复 也有可能根本没有重
  • 从 JAXB 泛型中删除 xsi:type、xmlns:xs 和 xmlns:xsi

    使用 JAXB 时 我想在使用泛型时从 XML 元素中删除多余的命名空间 类型 我该怎么做或者我做错了什么 我想使用泛型 这样我只需编写一次代码块 示例代码 public static void main String args try T
  • 使用 UserDefaults 保存和检索 bool

    我正在尝试保存一个bool从 UISwitch 到 UserDefaults 的值 并在另一个视图中检索它 但是 我尝试遵循多个教程和堆栈答案 但似乎都不起作用 这就是我保存它的方式 class SettingsViewController
  • 如何强制清除 STL 内存缓存?

    我有一个类 它有一个类型字段unordered map 我在我的应用程序中创建了该对象的单个实例 该实例被包装在shared ptr 该对象非常消耗内存 我想在使用完它后立即将其删除 然而 重置指针仅仅释放了对象占用的一小部分内存 如何强制
  • 手动将设备插件(和其他)安装到 cordova 3.0 中

    Phonegap Cordova 3 0 从 3 0 版本开始已转向模块化设计 例如 要调用device versionAPI 您需要将设备插件包含到您的项目中 任何人都可以向我提供有关如何将设备 或任何其他 cordova API 插件安
  • Java .Class 文件更改字符串

    我正在尝试修改一个minecraft mod gravisuite 每当我按F键时 它就会将 重力引擎关闭 打开 但是我想更改此字符串 我首先将 重力引擎关闭 替换为 重力引擎关闭 通过使用十六进制编辑器 但此后该文件不再有效 我尝试使用

随机推荐

  • SQL:两个没有年份的日期之间在哪里?

    我正在尝试查询历史数据 我需要返回 1 个月内的数据 2 周前和 2 周前 但我需要年份无关紧要 所以 如果我今天要进行查询 我希望所有行都带有datexxxx 06 31 和 xxxx 07 27 之间 先谢谢您的帮助 编辑 我尝试过两种
  • openSSL rsautl 和 dgst 之间的区别

    以下命令为输入文件生成签名 openssl dgst sha1 sign privateKey pem out signature1 someInputFile 以下命令还为输入文件生成签名 openssl dgst binary sha1
  • 使用 JavaScript Array.sort() 方法进行洗牌是否正确?

    我正在帮助某人解决他的 JavaScript 代码 我的目光被如下所示的部分吸引了 function randOrd return Math round Math random 0 5 coords sort randOrd alert c
  • 如何使用javascript从IE中的iframe中删除边框

    我正在尝试通过 javascript 将 iframe 插入浏览器 DOM 中 并希望删除 IE 的边框 但似乎无法删除 我已经尝试过这些但无济于事 iframeElement style borderStyle none and ifra
  • 用于索赔模式 xRM 的 Apache CXF 客户端(Microsoft Dynamics CRM 2011)?

    我正在尝试为 Microsoft Dynamics CRM 2011 xRM Web 服务 我理解为基于 WCF 4 创建 Apache CXF 2 7 5 客户端 其中 CRM 处于声明模式 以便 WSDL此 Web 服务指向 STS 在
  • “endl”和“\n”之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 C std endl 与 n 我想知道是否有重要的这两种打印换行符的方法之间的区别 cout lt lt endl approach1 cout lt lt n approach2 有什么实际区别吗
  • 正则表达式否定整个单词? [复制]

    这个问题在这里已经有答案了 String test1 This is my test string 我想匹配一个不包含 test 的字符串 我可以用 Pattern p Pattern compile test 它有效 但在大多数网站上 例
  • Windows 上的 Python 和 XAMPP:如何做?

    我已经在我的 Win7x64 Xampp 和 Python 2 7 上安装了 现在我正在尝试获得Python语言的 力量 我该怎么做 我尝试过 mod python 和 mod wsgi 但第一个对于我的 Python 版本不存在 当我在安
  • 错误 CS2012:无法打开 <可执行路径> 访问 <可执行路径被拒绝>

    我当时正在 Visual Studio 2015 中开发 WPF 应用程序 一切都很顺利 直到意外地生成了 CS2012 错误 通知我它无法访问 更新 Debug 目录中的可执行文件 我尝试了以下方法但没有成功 Restart 关闭VS并再
  • 创建表单并在后台线程上使用 Form.ShowDialog

    使用Winforms 如果我所在的线程不是 主 ui 线程 我可以安全地进行操作吗 创建一个表格 在该表单上调用 ShowDialog 看来我会遵守以下规则 Winforms 控件必须在创建它们的线程上进行修改 从我完成的一些阅读来看 Sh
  • OpenCV TypeError:轮廓不是 numpy 数组,也不是标量

    我正在尝试使用 OpenCV 从 Nike 图像中提取标签 这是一个教程代码 取自 http opencv code com tutorials ocr ing nikes new rsvp program 我已经修改了几行代码 并且该部分
  • 指南针精灵图像和比例

    在过去的 4 个小时里 我一直在尝试找到一种使用 Compass 和 sass 创建精灵图像的方法 该图像还可以自动缩放每个单独的图像以与背景大小属性一起使用 我发现没有任何效果 不敢相信有这么难 有人有一个可行的例子吗 编辑 这是我到目前
  • 在线游戏,或者比ajax更快的东西来发送/接收数据

    我会尽可能地缩短它 到目前为止我所做的 我的游戏将使用 JavaScript 运行setTimeout or setInterval 这不是闪光灯或任何特殊的东西 到目前为止 我所做的就像一个测试运行 这样你可以更好地理解 几乎是循环 Aj
  • 为什么使用 Func 而不是 Predicate

    这只是一个好奇的问题 我想知道是否有人有一个好的答案 在 NET Framework 类库中 我们有以下两个方法 public static IQueryable
  • 如何在 C# 中实现进度条?

    如何在 C 中实现数据库调用的进度条和后台工作程序 我确实有一些处理大量数据的方法 它们是相对较长的运行操作 因此我想实现一个进度条 让用户知道确实发生了一些事情 我想过使用进度条或状态条标签 但由于只有一个 UI 线程 即执行数据库处理方
  • 如何在 Java 15 及以后版本中继续使用 Javascript

    在我的 Java 应用程序中 一个重要的小功能是能够根据音频文件的元数据 例如专辑 艺术家 标题 重命名音频文件 并且使用指定掩码JavaScript 这使得重命名功能非常灵活和强大 我知道 Javascript 已被弃用 但现在看来它实际
  • 适用于德尔福 2006/德尔福 2007/德尔福 2009 的 FitNesse

    是否有适用于 Delphi 2006 2007 2009 的 FitNesse 版本 如果是的话我在哪里可以找到它 还有其他类似 FitNesse 的程序可以在 Delphi 2006 上运行吗 Fitnesse 支持 Delphi 请参阅
  • eclipse 产品调用导致 java.lang.RuntimeException: 未找到应用程序 id

    我刚刚导出了一个产品 如果我点击 启动 Eclipse 应用程序 按钮 该产品就可以正常工作 如果尝试执行导出的产品 我会在启动时收到以下异常 SESSION 2012 03 16 17 28 21 206 eclipse buildId
  • 无法在 Linux 中复制名称中包含“$”的文件

    在我的 Linux 目录中 有一个名为TopSample Config class 每当我尝试将此文件复制到另一个位置 目录时 它都不允许我这样做 我这样做 cp TopSample Config class home praveen co
  • Freeradius 和 PHP 身份验证脚本

    我正在尝试根据 PHP 脚本对 freeradius 用户进行身份验证 但没有成功 我已经尝试了几个小时来配置这个权利 而我在谷歌上找到的所有线程要么是死链接 要么是过时的 半径配置文件 prefix usr exec prefix usr