參考文件
http://phorum.study-area.org/index.php?topic=33002.0
步驟一:安裝MySQL並且修改MySQL root密碼
#apt-get install mysql-server
#mysql -u root -p
mysql>use mysql;
mysql>update user set password=password('新密碼') where user='root';
步驟二:安裝Free RADIUS + Free RADIUS MySQL套件
#apt-get install freedradius
#apt-get install freedradius-mysql
步驟三:在MySQL中加入Free RADIUS的資料庫與資料表
1.先新增一個資料庫,名稱為radius(這個步驟也可以在改密碼的時候先做)
#mysql -u root -p
mysql>creat database radius;
mysql>exit
2.把Free RADIUS的資料表匯進去
因為我們安裝了freeradius-mysql套件,所以可以在/etc/freeradius/sql/mysql資料夾中看到一些檔案
#cd /etc/freeradius/sql/mysql/
#ls
admin.sql dialup.conf ippool.sql schema.sql
counter.conf ippool.conf nas.sql
其中*.sql的就是我們要匯進去mysql的資料,
要注意的是,admin.sql會新增一個radius帳號(密碼為radpass)是Free RADIUS用來連線mysql用的
所以如果不想要用預設連線帳號密碼的話,這組可以不用匯。
#mysql -u root -p radius < ippool.sql
#mysql -u root -p radius < schema.sql
#mysql -u root -p radius < nas.sql
#mysql -u root -p radius < admin.sql
匯完後就可以看到radius資料庫下面多了幾張資料表
mysql> show tables;
+------------------+
| Tables_in_radius |
+------------------+
| nas |
| radacct |
| radcheck |
| radgroupcheck |
| radgroupreply |
| radippool |
| radpostauth |
| radreply |
| radusergroup |
+------------------+
9 rows in set (0.00 sec)
步驟三:新增RADIUS在MySQL裡面的認證資料
#mysql -u root -p
首先加入群組資料
insert into radgroupreply (groupname,attribute,op,value)
values ('user','Auth-Type',':=','Local');
insert into radgroupreply (groupname,attribute,op,value)
values ('user','Service-Type',':=','Framed-User');
insert into radgroupreply (groupname,attribute,op,value)
values ('user','Framed-IP-Address',':=','255.255.255.254');
insert into radgroupreply (groupname,attribute,op,value)
values ('user','Framed-IP-Netmask',':=','255.255.255.0');
接著加入測試帳號sqltest
insert into radcheck (username,attribute,op,value)
values ('sqltest','User-Password',':=','test');
最後把帳號加入前面做的群組
insert into radusergroup (username,groupname)
values ('sqltest','user');
之後要加使用者可以透過下面SQL來增加
insert into radcheck (username,attribute,op,value)
values ('帳號','User-Password',':=','密碼');
insert into radusergroup (username,groupname)
values ('帳號','user');
步驟四:設定Free RADIUS可以透過MySQL來認證
設定完上述步驟後,我們得告訴Free RADIUS在認證的時候要查一下MySQL裡面的資料
(這邊步驟可能和一般網路上面的設定不同,debian總是喜歡把設定檔模組化,
所以如果是使用其他Linux的朋友應該只需要修改radiusd.conf就好)
1.編輯/etc/freeradius/radiusd.conf,找到$INCLUDE sql.conf並且把前面的#拿掉
2.編輯/etc/freeradius/sites-enabled/default,找到authorize {}跟accounting {}裡面的sql
並且把前面的#拿掉(不然就是自己加),加完後應該會像下面這樣
authorize {
preprocess
chap
mschap
suffix
sql
}
accouting {
….
sql
…
}
3.編輯Mysql連線設定,在/etc/freeradius/sql.conf中會存放著MySQL的連線設定
編輯MySQL的連線帳號密碼讓Free RADIUS可以連線到MySQL,編輯完大概會像下面這樣
sql {
#
# Set the database to one of:
#
# mysql, mssql, oracle, postgresql
#
database = "mysql"
#
# Which FreeRADIUS driver to use.
#
driver = "rlm_sql_${database}"
# Connection info:
server = "localhost"
login = "radius"
password = "radpass"
....略...
用admin.sql匯入的話,那帳號密碼就是預設的(如上),如果不是就要改成自己設定的那組。
其中database就是你的資料庫類型(mysql, mssql, oracle, postgresql),server是資料庫IP,
如果MySQL跟Free RADIUS同一台的話用localhost就好,login跟password則是mysql登入的帳號密碼
步驟五:測試Free RADIUS
完成上述動作後,可以透過freeradius -X來啟動Free RADIUS的debug模式,檢查設定有沒有問題,
沒有問題的話就可以透過/etc/init.d/freeradius start來啟動service,
並且可以透過radtest來測試帳號是否認證成功
#radtest sqltest test localhost 0 testing123
其中sqltest就是我們剛剛建立的帳號,密碼則是test,localhost則是因為我們是跟本地的radius認證,
0代表的是nas-port-number(不知道幹麻的話先填0就對了),
最後則是Free RADIUS連線密碼,這個密碼可以在/etc/freeradius/clients.conf裡面設定。
其他補充:
/etc/freeradius/clients.conf
這個檔案是用來設定誰可以存取此台RADIUS,
假設我有一台ip為192.168.230.129的機器要存取這台RADIUS的話,
則必須要在clients.conf加入下面設定:
client 192.168.230.128{
secret = testing123
}
其中secret就是跟RADIUS連線的認證密碼
/etc/freeradius/users
Free RADIUS除了用Linux本地、MySQL、LDAP等等認證之外,當然也支援用純文字檔來存放使用者帳戶,
users就是拿來放帳戶用的。
譬如我要加個使用者叫做peter密碼為1234,則可以在users裡面加入這樣的設定。
peter Cleartext-Password := "1234"