0

我知道我可能面临一个不可能完成的任务。我想要的是radidd写下在访问请求中收到的每个mac,以便稍后拒绝访问这些MAC。

我知道策略文件是用 unlang 编写的,坏消息是 radiusd 对任何 conf 文件都没有任何写权限......

无论如何,是否有人能够在 FreeRADIUS 的政策处理中写入文件?

我想要实现的是这样的:

raddb/站点可用/默认

authorize {
  rewrite_calling_station_id
  unauthorized_macs
  if(ok) {
    reject        
  }
  else {
    update control {
      Auth-Type := Accept
    }
    GET MAC FROM CALLIN_STATION_ID ATTRIBUTE
    WRITE THIS F***ING MAC TO unauthorized_macs FILE
 }

}

感谢 Arran,我可以通过以下方式解决这个问题:

authorize {
  rewrite_calling_station_id
  authMac
  if(ok) {
    reject
  }   
  else {
    linelog
    update control {
      Auth-Type := Accept
    }   
 }

}

其中linelog配置如下: raddb/mods-enabled/linelog

linelog {
    filename = /path/to/hell/authMac
    format = "%{Calling-Station-ID}"
  }
4

1 回答 1

0
update request {
    Tmp-String-0 := `echo "%{Calling-Station-ID}" >> "/path/to/f___ing_unauthorized_macs_file"`
}

还有一个 linelog 模块,它在 >= v3.0.x 中会更好,因为它实现了内部锁定(除了flock)来防止行交错。

请参阅/etc/raddb/mods-available/linelog示例。

于 2016-10-07T11:00:06.167 回答