MySQL + Freeradius:sqlcounter expire_on_login

时间:2019-05-10 14:55:40

标签: mysql limit freeradius

sqlcounter expire_on_login mysql freeradius rlm_sqlcounter

我正在尝试通过客户端的首次登录来设置访问时间 首先,我在启用模式的文件夹操作系统版本:Ubuntu 18.04和Freeradius版本:3.0.16

中启用sqlcounter模块

sqlcounter文件包含以下内容:

#/etc/freeradius/3.0/mods-enabled/sqlcounter
sqlcounter expire_on_login {
        sql_module_instance = sql
        dialect = mysql

        counter_name = Expire-After-Initial-Login
        check_name = Expire-After
        key = User-Name
        reset = never      
        query = "\
              SELECT IFNULL( MAX(TIME_TO_SEC(TIMEDIFF(NOW(), acctstarttime))),0) \
              FROM radacct \
              WHERE UserName='%{${key}}' \
              ORDER BY acctstarttime \
              LIMIT 1;"
}

/etc/freeradius/3.0/sites-available/default文件中,我在

下添加以下内容
authorize {
  expire_on_login

在我通过以下代码在radchceck的{​​{1}}表中添加限制后:

phpmyadmin

最后通过以下命令测试用户访问权限:INSERT INTO radcheck ( id , UserName , Attribute , op , Value ) VALUES (NULL , 'zaib', 'Expire-After', '=', '3600');

结果是:

radtest zaib zaib localhost 1812 testing123

User-Name = "zaib" User-Password = "zaib" NAS-IP-Address = 192.168.22.101 NAS-Port = 1812 Message-Authenticator = 0x00 Cleartext-Password = "zaib" Received Access-Reject Id 167 from 127.0.0.1:1812 to 0.0.0.0:0 length 20 (0) -: Expected Access-Accept got Access-Reject 日志输出中,我看到:

  

2019年5月10日星期五18:56:30:警告:(0)expire_on_login:找不到检查属性,控件:Expire-After,什么也不做...

还有:

  

2019年5月10日星期五18:56:30:错误:(0)找不到Auth-Type:通过Post-Auth-Type = Reject拒绝用户

我尝试将sql中的freeradius -xxX选项从op更改为=,然后得到以下结果:

:=

看起来不错,但限制根本不起作用,用户可以在时段结束后访问。

在自由半径日志中,我看到了:

  

2019年5月10日星期五18:56:30:警告:(0)expire_on_login:找不到检查属性,控件:Expire-After,什么也不做...

并且在MySQL Sent Access-Request Id 72 from 0.0.0.0:42845 to 127.0.0.1:1812 length 74 User-Name = "zaib" User-Password = "zaib" NAS-IP-Address = 192.168.22.101 NAS-Port = 1812 Message-Authenticator = 0x00 Cleartext-Password = "zaib" Received Access-Accept Id 72 from 127.0.0.1:1812 to 0.0.0.0:0 length 39 Mikrotik-Rate-Limit = "1024k/1024k" 表中,当用户登录时,我可以看到radacct的值是这样的:acctstarttime

任何想法如何解决? 请帮助我,谢谢。

0 个答案:

没有答案