2016.06.15 更新參考來源位置。
Freeradius2已經附Perl模組,要做各種認證法都很容易了,比起網路上一堆用exec的範例感覺安全多了,不過卻很少人提到這新功能,就由我來介紹一下吧~
以FreeBSD 8.1環境示範,注意是裝net/freeradius2,net/freeradius還是1.x版
lang/perl5.12 make時可啟用threads。
參考來源:
- 官方 Wiki: Rlm_perl
- https://web.archive.org/web/20090227044016/http://lists.cistron.nl/pipermail/freeradius-devel/2002-August/003220.html
前提:假設使用者帳號是user@mail.XX.edu.tw,而pop3主機剛好也是mail.XX.edu.tw。
/usr/local/etc/raddb/proxy.conf
最後面增加
realm mail.XX.edu.tw {
authhost = LOCAL
accthost = LOCAL
}
接著使用Perl作POP3 over SSL認證:
先安裝
mail/p5-Mail-POP3Client
security/p5-IO-Socket-SSL
# cp -p /usr/local/etc/raddb/example.pl /usr/local/etc/raddb/pop3s.pl
修改/usr/local/etc/raddb/pop3s.pl
開頭增加
use Mail::POP3Client;
use IO::Socket::SSL;
....
修改認證函式
...
sub authenticate {
# For debugging purposes only
# &log_request_attributes;
my $pop = new Mail::POP3Client( USER => $RAD_REQUEST{'Stripped-User-Name'},
PASSWORD => $RAD_REQUEST{'User-Password'},
HOST => $RAD_REQUEST{'Realm'},
#如果pop3 server 和Realm不一樣,HOST看你想要寫死或判斷哪個realm用哪台...
#如果pop3 server 和Realm不一樣,HOST看你想要寫死或判斷哪個realm用哪台...
USESSL => 1,
);
if ($pop->Login()) {
$RAD_REPLY{'要回應的訊息'} = "1";
return RLM_MODULE_OK;
}
else {
return RLM_MODULE_REJECT;
}
$pop->Close();
$pop->Close();
}
# cp -p /usr/local/etc/raddb/module/perl /usr/local/etc/raddb/module/pop3perl
(新檔名可隨便取,反正在radius.conf中是讀整個module資料夾
將pop3.perl中修改
perl pop3 {
...
module = ${confdir}/pop3s.pl
再到
/usr/local/etc/raddb/sites-avaliable/default及
/usr/local/etc/raddb/sites-avaliable/inner-tunnel分別加入幾行
...注意這裡pop3是對應module中首行perl "pop3"這module名。
authorize {
...
files
+pop3
}
...
authenticate {
+Auth-Type POP3s {
+pop3
+}
...
}
/usr/local/etc/raddb/users
在最後加入
DEFAULT Auth-Type = POP3s, Realm != DEFAULT
想請教一下
回覆刪除若是用Gmail的Server作pop3-SSL驗證
該如何更改?
謝謝
您好 想請問一個問題
回覆刪除本篇最上面的部分
假設使用者帳號是user@mail.XX.edu.tw,而pop3主機剛好也是mail.XX.edu.tw
如果 pop3主機不一樣的話 還要修改哪個部分
以上兩個問題,都是pop3s.pl中認證部份 HOST 不直接用Realm而是判斷要用哪臺pop3 server 就行啦
刪除您好 我使用上有些問題想請教 當我使用perl pop3.pl pop.gmail.com XX XX 1時沒問題
回覆刪除但是當我使用radiusd -X 時會出現下面錯誤 請問有無解決方法 謝謝
Exec-Program output: Exec-Program: FAILED to execute /etc/raddb/pop3.pl: Exec format error
如果你把那檔案+x後直接也有問題,就是第一行寫錯了吧~
刪除作者已經移除這則留言。
回覆刪除您好 我按照上述步驟設定完後,使用radtest [username] [password] localhost 0 testing,並且適用radius -X 觀看,發現他並不會使用pop3s.pl中我設定的HOST,為什麼會這樣
回覆刪除謝謝
後來印出Message 發現問題是could not connect SSL socket 有什麼解決辦法嗎
刪除我這裡不負責翻譯英文,您該先考慮是radius could not還是你的主機 could not..
刪除