1. 程式人生 > >FreeRADIUS + MySQL 安裝配置筆記

FreeRADIUS + MySQL 安裝配置筆記

RADIUS認證伺服器(Remote Authentication Dial In User Service,遠端使用者撥號認證系統)是目前應用最廣泛的AAA協議(AAA=authentication、Authorization、Accounting,即認證、授權、計費)。隨著網路安全需求提高,中小企業的區域網集中使用者認證,特別是使用VPDN專網的也逐漸需要建立自己的認證伺服器以管理撥號使用者。但這些使用者不需要使用昂貴的專業系統,採用PC伺服器和Linux系統的Freeradius+MySQL就能可靠地實現。
首先請確認你已經搭建好pptpd,並可以正常使用。


一、FreeRADIUS 服務端安裝
1.1、下載、編譯、安裝
wget -c

ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.1.11.tar.gz
tar zxf freeradius-server-2.1.11.tar.gz
cd freeradius-server-2.1.11
./configure
make && make install

1.2、基本檔案的本地測試(選做)
測試是否安裝成功,如果不需要與mysql整合,那麼就已安裝完成。


 vim /usr/local/etc/raddb/users
查詢 steve Cleartext-Password := "testing" (76-84行), 取消該段內容的註釋。

 # 大寫X,意思是以debug模式執行。
/usr/local/sbin/radiusd -X
 
#新開一個視窗執行,看到 "Access-Accept packet" 表示成功了,"Access-Reject" 表示失敗了。
/usr/local/bin/radtest steve testing localhost 0 testing123

二、FreeRadius MySQL 模組配置
2.1、啟用MySQL模組支援

 # 查詢"sql.conf”(683行),去掉#號
vim /usr/local/etc/raddb/radiusd.conf

2.2、建立 radius 資料庫及表

 # 123456是你mysql的root密碼
mysqladmin -uroot -p123456 create radius;

 #修改radius帳號的密碼
cd /usr/local/etc/raddb/sql/mysql
sed -i 's/radpass/123456/g' admin.sql
sed -i 's/radpass/123456/g' /usr/local/etc/raddb/sql.conf

 mysql -uroot -p123456 < admin.sql
mysql -uroot -p123456 radius < ippool.sql
mysql -uroot -p123456 radius < schema.sql
mysql -uroot -p123456 radius < wimax.sql
mysql -uroot -p123456 radius < cui.sql
mysql -uroot -p123456 radius < nas.sql

2.3、開啟從資料庫查詢nas支援
預設從 "/usr/local/etc/raddb/clients.conf" 檔案讀取,開啟後可從資料庫nas表讀取。


 sed -i 's/\#readclients/readclients/g' /usr/local/etc/raddb/sql.conf

2.4、開啟線上人數查詢支援

 # 查詢simul_count_query將279-282行註釋去掉
vim /usr/local/etc/raddb/sql/mysql/dialup.conf

2.5、修改sites-enabled目錄配置檔案

 vim /usr/local/etc/raddb/sites-enabled/default

找到authorize {}模組,註釋掉files(159行),去掉sql前的#號(166行)
找到accounting {}模組,註釋掉radutmp(385行),註釋掉去掉sql前面的#號(395行)。
找到session {}模組,註釋掉radutmp(439行),去掉sql前面的#號(443行)。
找到post-auth {}模組,去掉sql前的#號(464行),去掉sql前的#號(552行)。

 vim /usr/local/etc/raddb/sites-enabled/inner-tunnel

找到authorize {}模組,註釋掉files(124行),去掉sql前的#號(131行)。
找到session {}模組,註釋掉radutmp(251行),去掉sql前面的#號(255行)。
找到post-auth {}模組,去掉sql前的#號(277行),去掉sql前的#號(301行)。

三、FreeRADIUS 客戶端安裝與配置
3.1、編譯與安裝
wget -c ftp://ftp.freeradius.org/pub/freeradius/freeradius-client-1.1.6.tar.gz
tar -zxf freeradius-client-1.1.6.tar.gz
cd freeradius-client-1.1.6
./configure
make && make install

3.2、設定通訊密碼
cat >>/usr/local/etc/radiusclient/servers<<EOF
localhost   testing123
EOF

其中localhost可以寫成伺服器IP地址,testing123是認證伺服器的連線密碼。
注:如果使用的是IP地址,記得同時修改下面設定。

1
 sed -i 's/localhost/192.168.8.129/g' /usr/local/etc/radiusclient/radiusclient.conf

3.3、增加字典
這一步很重要!否則windows客戶端無法連線伺服器。

1
2
 wget -c http://small-script.googlecode.com/files/dictionary.microsoft
mv ./dictionary.microsoft /usr/local/etc/radiusclient/
cat >>/usr/local/etc/radiusclient/dictionary<<EOF
INCLUDE /usr/local/etc/radiusclient/dictionary.sip
INCLUDE /usr/local/etc/radiusclient/dictionary.ascend
INCLUDE /usr/local/etc/radiusclient/dictionary.merit
INCLUDE /usr/local/etc/radiusclient/dictionary.compat
INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft
EOF

3.4、PPTP啟用freeradius外掛
這一步網上一些教程沒提,但很重要,否則會報錯!

sed -i 's/logwtmp/\#logwtmp/g' /etc/pptpd.conf
sed -i 's/radius_deadtime/\#radius_deadtime/g' /usr/local/etc/radiusclient/radiusclient.conf
sed -i 's/bindaddr/\#bindaddr/g' /usr/local/etc/radiusclient/radiusclient.conf

注:64位系統外掛路徑是 "/usr/lib64/pppd/2.4.5/radius.so"

cat >>/etc/ppp/pptpd-options<<EOF
plugin /usr/lib/pppd/2.4.5/radius.so
radius-config-file /usr/local/etc/radiusclient/radiusclient.conf
EOF

3.5、L2TP啟用freeradius外掛
L2TP 的道理也一樣,你首先安裝配置好L2TP/IPSec,並保證能正常使用。

注:64位系統外掛路徑是 "/usr/lib64/pppd/2.4.5/radius.so"


 cat >>/etc/ppp/options.xl2tpd<<EOF
plugin /usr/lib/pppd/2.4.5/radius.so
radius-config-file /usr/local/etc/radiusclient/radiusclient.conf
EOF

四、使用者許可權管理

 # 連線 MySQL 資料庫
mysql -uroot -p123456;
 
# 使用 radius 資料庫
USE radius;
 
# 新增使用者demo,密碼demo,注意是在radchec表
INSERT INTO radcheck (username,attribute,op,VALUE) VALUES ('demo','Cleartext-Password',':=','demo');
 
# 將使用者demo加入VIP1使用者組
INSERT INTO radusergroup (username,groupname) VALUES ('demo','VIP1');
 
# 限制同時登陸人數,注意是在radgroupcheck表
INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('normal','Simultaneous-Use',':=','1');
 
# 其他
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('VIP1','Auth-Type',':=','Local');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('VIP1','Service-Type',':=','Framed-User');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('VIP1','Framed-Protocol',':=','PPP');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('VIP1','Framed-MTU',':=','1500');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('VIP1','Framed-Compression',':=','Van-Jacobson-TCP-IP');

五、啟動
 
 cp /usr/local/sbin/rc.radiusd /etc/init.d/radiusd
/etc/init.d/radiusd start

原文地址:https://wangyan.org/blog/freeradius-pptp-l2tp-html.html
參考文章:wiki.freeradius.org/SQL%20HOWTO