天天看點

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