2016-10-06 40 views
0

我知道我可能會面臨一個不可能完成的任務。我所需要的是將一個訪問請求中收到的每個MAC記錄下來,以便稍後拒絕訪問這些MAC。Unlang寫入文件FreeRADIUS

我知道這個政策文件是寫在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 
} 

}

感謝阿倫,我可以解決這個以下方式:

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

}

凡linelog被配置如下: raddb/MODS的啓用/ linelog

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

回答

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

還有這將是> =爲V3.0.x,因爲它更好的linelog模塊實現內部鎖定(除了聚集)以防止行交錯。

查看/etc/raddb/mods-available/linelog的例子。

+0

並且您可能需要將命令包裝在bash -c中,不記得使用exec命令使用shell命令的具體情況。 –