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
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