Freeradius 整合 Gmail POP3s 協定認證
Freeradius整合POP3這個應用已經蠻長一段時間了,這個方式其實在整合及擴充上相對比較簡單及便利,使用既有的Mail Server(支援POP3 over SSL協定
)來達到認證的需求,就可以省下架設Microsoft Active Directory or LDAP或是複雜的介接設定。
以下就來說明一下Freeradius是如何透過POP3協定來作認證。
Change Log
- 20170101 更新針對
Freeradius 3.0.x
版本對於authorize的設定方式,加入Policy的應用。
基本環境
- CentOS 6.x
- Freeradius 2.1.12 / 3.0.x
- Google Mail (Gmail) / POP3 over SSL
Packages Install
此次的功能我們會需要freeradius2-perl來擴充應用,撰寫Freeradius的perl module作為pop3的溝通媒介。
1 | yum install freeradius2 freeradius2-utils freeradius2-perl perl |
由於安全性的考量,很多Mail Server都會採用加密的方式來作界接,所以我們也需要針對perl來安裝ssl的外掛套件。
1 | [root@radius ~]# cpan |
proxy.conf
在最下面加入你所要認證的domain,這裡你可以加好幾個gmail所屬的domain(Google Apps)。
1 | realm gmail.com { |
users (Freeradius 2.x)
在這個檔案的最下面加入
1 | # # |
這個用意是指,如果帳號的字串裡面沒有match到proxy.conf所設定的Realm DEFAULT,就將此request加入Auth-Type = Perl,並繼續執行驗證。
modules/perl
尋找module這個參數,將example.pl改為你想要自訂的perl script檔名。
此例為pop3s.pl
。
1 | # -*- text -*- |
pop3s.pl
上述我們提到的example.pl範例檔案位於/etc/raddb/
,我們可以將他複製一份,並改名為pop3s.pl
。
1 | cp -p /etc/raddb/example.pl /etc/raddb/pop3s.pl |
然後進行編輯,找到use Data::Dumper;
,在下面加上
1 | use Mail::POP3Client; |
接下來找到sub authenticate {...}
,在這個section裡面改成。
1 | sub authenticate { |
policy.d/ (Freeradius 3.x)
新增一個檔案 pop3s (注意檔案權限)
。加入以下內容
1 | pop3s.authorize { |
sites-available/default (Freeradius 2.x/3.x)
在authorize {...}
裡面找到files
,在下面加入
1 | authorize { |
在authenticate {...}
裡面找到Auth-Type MS-CHAP {...}
,在下面加入
1 | authenticate { |
這裡的Auth-Type Perl就是我們上面users裡的定義,意思就是說當request裡面有Auth-Type = Perl
,他就會來找authenticate裡面的Auth-Type Perl,然後找到perl這個module來作驗證。
以上的設定基本上啟動Freeradius後就可以透過POP3對Gmail進行認證了。